80C51单片微机的程序设计(m)

上传人:宝路 文档编号:49523557 上传时间:2018-07-29 格式:PPT 页数:71 大小:779.17KB
返回 下载 相关 举报
80C51单片微机的程序设计(m)_第1页
第1页 / 共71页
80C51单片微机的程序设计(m)_第2页
第2页 / 共71页
80C51单片微机的程序设计(m)_第3页
第3页 / 共71页
80C51单片微机的程序设计(m)_第4页
第4页 / 共71页
80C51单片微机的程序设计(m)_第5页
第5页 / 共71页
点击查看更多>>
资源描述

《80C51单片微机的程序设计(m)》由会员分享,可在线阅读,更多相关《80C51单片微机的程序设计(m)(71页珍藏版)》请在金锄头文库上搜索。

1、实验一 清零、移数、判断将片内30H40H及片外0010H0100H清零,然后将片内41H47H的内容移到片外0041H0047H,判断:若(0041H)15,则求其平方存到0050H中,并将位00H置1。(0041H)=15, 则加15存到0050H中,并将位01H置1。(0041H)15, 则减15存到0050H中,并将位02H置1。实验报告要求:1写明实验日期、桌号2写明实验要求;3编程,加标注4写出调试过程,遇到的问题及解决方法5总结实验目的,写出收获体会第四章 80C51单片微机的程序设计 4.1概述 汇编语言格式 伪指令语句4.2 80C51汇编语言程序设计 顺序结构程序设计 分支

2、结构程序设计 循环结构程序设计 子程序设计 程序设计举例4.1概述4.1.1 汇编语言格式 1. 计算机语言 机器语言 汇编语言 高级语言2. 汇编语言 语句种类: 指令语句伪指令语句宏指令 语句的格式: 指令语句格式 :标号:操作码 操作数 ;注释 伪指令语句格式:名字 定义符 参数 ;注释例:把片外存储器2200H单元中的数送入片内70H单元中。标号域 操作码域 操作数域 注释域BEGIN:MOV DPTR,#2200H ;(DPTR)=2200HMOV R0,#70H ;(R0)=70HMOVX A,DPTR ;(A)=(DPTR)MOV R0,A ;(R0)=(A) 伪指令:仅在汇编时

3、起控制作用,是为汇编服务的一些指令。伪操作:由伪指令确定的操作称为伪操作。“伪”体现在汇编时不产生机器指令代码,不影响程序的执行,仅指明在汇编时执行一些特殊的操作。4.1.2 伪指令语句 ORG (Origin) 汇编起始地址伪指令指令格式为: ORG 表达式例: ORG 1000HSTART:MOV A,12H END(END of assembly) 汇编结束伪指令 一定放在程 序末尾! EQU(EQUate)赋值伪指令指令格式为:标号 EQU 表达式含义:把表达式赋值于标号,标号和表达式都是不可少。 例: AAEQU 30H K1EQU 40H MOV A,AA; (30H)A MOV

4、A,K1;(40H)A4、DB (Define Byte) 定义字节伪指令 指令格式为:标号 DB 表达式或表达式表 例: ORG 2000HTABLE: DB 73H,04,100,32,00 5、 DW (Define Word) 定义字伪指令指令格式为:标号 DW 表达式或表达式表 例:DW100H,3456H,814 表示按顺序存入01H,00H,34H,56H,03H,2EH(DB、DW定义的表一般数的个数不得超过80个)6 、DS (Define Storage) 定义存储区伪指令指令格式为: DS 含义:通知汇编程序,在目标代码中,以标号为首地址保留表 达式值的若干存储单元以备源

5、程序使用。汇编时,对这些单 元不赋值。 例: BASE DS 100H注意:DB、DW、DS等伪指令只能应用于程序存储器,不能用于数据存储器。7、 BIT 位定义伪指令命令格式为: BIT 含义:给字符名称赋予位地址。例:RED BIT P1.0SETB RED例1. 伪指令应用ORG 8100HBUFFER DS 10H DW “A B” DW 100H,1ACH,-814说明: 从8100H至810FH为缓冲区空间 (8110H)=41H (A)(8111H)=42H (B) 8112H单元起存放01H、00H、01H、ACH、FCH、D2H 4.2 80C51汇编语言程序设计 程序结构:

6、顺序结构分支结构循环结构子程序中断服务子程序 汇编和调试程序设计的基本方法编写程序要求:不仅要完成规定的功能任务,而且还要求:执行速度快、占用内存少、条理清晰、阅读方便、便于移植、巧妙而实用。一般应按以下几个步骤进行: 分析问题,确定算法或解题思路 画流程图 编写源程序流程图符号和说明: ORG 0030H START:MOV DPTR, #TABLEMOV A, 20H MOVC A, A+DPTRMOV 21H, ASJMP $ ORG 0100H TABLE:DB 0,1,4,9,16,25END例1:变量存在内部RAM的20H单元中,其取值范围 :05,编程,用查表法求其平方值存到21

7、H中4.2 .1 顺序结构程序设计 开始表格首地址送DPTR变量送A(20H) A查平方表(A+DPTR) A结束结果送21H单元:A 21H设被加数存放于片内RAM的20H(低位字节)、21H( 高位字节),加数存放于22H(低位字节)和23H(高位字节) ,运算结果的和数存放于20H(低位字节)和21H(高位字节) 中。实现16位相加,(如果有进位位保存在10H中)。 ORG 0100HADD_2:PUSH ACC;将A中内容进栈保护MOV R0,20H ;将20H地址送R0MOV R1,22H ;将22H地址值送R1MOV A,R0 ;被加数低字节内容送AADD A,R1 ;低字节数相加

8、 MOV R0,A ;低字节数和存20H中例2. 不带符号两字节加法INC R0 ;指向被加数高位字节INC R1 ;指向加数高位字节 MOV A,R0 ;被加数高位字节送A ADDC A,R1 ;高字节数带进位相加MOV R0,A;高字节数和存21H中CLRAADDC A, #00HMOV 10H, A;进位暂存于10H中POP ACC ;恢复A原内容RET设有一个巡回检测报警装置,需对4 路输入进行控制,每路 设有一个最大额定值,为双字节数。控制时需根据检测的路号 找出该路对应的最大额定值。设R2用于寄存检测路号,查找到 的对应的最大额定值存放于31H和32H单元中。查找最大允许额定值子程

9、序如下: 例3. 查表地址 机器码 源程序注释 ORG 2000H2000 EA MOV A,R2;检测路号送A2001 2A ADDA,R2;(R2)22002 F531 MOV 31H,A ;距表首址偏移量2004 2408 ADD A,#19H;偏移量(2020H-2007H)2006 83 MOVC A,A+PC ;查表,读取第1个字节内容2007 C531 XCH A,31H;第1字节存入31H单元2009 2404 ADD A,#15H;偏移量(2021H-200CH)200B 83 MOVC A,A+PC ;查表,读取第2字节200C F532 MOV 32H,A;第2字节存入3

10、2H单元200E 地址 机器码 源程序注释ORG 2020H;最大额定值表20201230 TAB:DW 1230H,;路号020221540 DW 1540H ;路号120242340 DW 2340H ,;路号220262430 DW 2430H;路号3END 说明:rel计算2020H-(2006H+1)=19H(2020H+1)-(200BH+1)=15H 单分支结构程序有两个出口,二选一。位条件转移指令:JC、JNC、 JBJNB、JBC等字节条件转移指令:JZ、JNZ、DJNZ、CJNE等有3种典型形式(见图42)。4.2.2 分支结构程序设计 单分支多分支双分支N分支条件成立?下

11、条指令程序段A单分支结构YNORG 0000H START:MOV R3,B;保存B MOV B,A MUL AB;(B)(A)= a2 MOV R0,A;(R1)(R0)= a2 MOV R1,B MOV A,R3 CJNE A,#0AH,MMN;b10则转移例、编程计算, 结果存在R1R0Y=a2b (当b10时) Y=a2b (当b10)转MMMOV A,R0CLR CSUBBA, R3; (R1)( R0)a2-b MOV R0,AMOV A,R1SUBBA,#00HMOV R1,A HERE:AJMP HEREEND 多分支选择结构结构形式见图43。K=?程序段nn0程序段1多分支结

12、构程序段01例1:设变量x以补码形式存放在 片内RAM 30H单元中,变量y与x的 关系是:编程根据x的值求y值并放回原单元。A=?y=x+50 y=20Hy=x0取x 即(30h) A开始存y 即y 30h结束ORG 1000H START:MOV A,30HJZ NEXT ;x=0,转移ANL A,#80H ;保留符号位JZ ED ;x0,转移MOV A,#05H ;x(21H) ?(22H)(20H) ?(20H)为中值(20H) (21H)?(22H)(21H) ?(22H)为中值(21H)为中值YYYNN NORG 2100HFILLT:PUSHPSW;PSW及ACC保护入栈PUSH

13、 ACCMOV A,20H;取第一个数据CLRC SUBB A,21H;与第二个数据比较 JNCLOB1 ;第一个数据比第二个数据大,转LOB1MOV A,20H;比第二个数据小,交换二个数的位置XCH A,21HMOV 20H,ALOB1:MOV A,22HCLRCSUBB A,20H;第三个数据与前二个数据中的较大数比较JNCLOB3 ;第三个数据大于前二个数据中的大数,转LOB3MOV A,22H CLRC SUBB A,21H;第三个数据与前二个数据中的较小数比较 JNCLOB4 MOV A,21H ;21H单元中的值是中值 MOV R0,A LOB2:POP ACC;恢复ACC和PS

14、WPOP PSWRET LOB3:MOV A,20H ;20H单元中的值是中值MOV R0,AAJMP LOB2 LOB4:MOV A,22H;22H单元中的值是中值MOV R0,AAJMP LOB2把外部RAM 30H3FH共 16个单元中的ASCII码依次转换 为十六进制数,并拼装压缩存入内部60H67H共8个单元中。ASCTOH:MOVR0,#30H;设ASCII码地扯指针MOV R1,#60H;设十六进制数地址指针MOV R7,#08H ;拼装的十六进制数字节个数 。AB:ACALL TRAN ;调用转换子程序。SWAP AMOV R1,AINC R0例. 码制转换ACALL TRAN;调用转换子程序。XCHD A,R1INC R0INC R1DJNZ R7,ABHALT:SJMP HALTTRAN:CLR C ;ASCII码数转换为十六进制数子程序MOVX A,R0SUBB A,#30HCJNEA,#0AH,BBAJMP BCBB:JCDONEBC:SUBB A,#07H ;0AH,则再减07HDONE:RET 数据排序程序常用的有插入排序法、冒泡排序法、快速排序法、选择排序 法、堆积排序法、二路归并排序法及基数

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 教学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号