mcs-51单片机的应用程序设计

上传人:aa****6 文档编号:51270393 上传时间:2018-08-13 格式:PPT 页数:20 大小:155.50KB
返回 下载 相关 举报
mcs-51单片机的应用程序设计_第1页
第1页 / 共20页
mcs-51单片机的应用程序设计_第2页
第2页 / 共20页
mcs-51单片机的应用程序设计_第3页
第3页 / 共20页
mcs-51单片机的应用程序设计_第4页
第4页 / 共20页
mcs-51单片机的应用程序设计_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《mcs-51单片机的应用程序设计》由会员分享,可在线阅读,更多相关《mcs-51单片机的应用程序设计(20页珍藏版)》请在金锄头文库上搜索。

1、图 4-1 基本程序结构 原理展示原理展示MCS-51单片机的应用程序设计 41 运算程序一、 多字节数加法1多字节无符号数加法CLR C MOV R0,#40H ;指向加数最低位 MOV R1,#5OH ;指向另一加数最低位 MOV R2,#04H ;字节数作计数初值 LOOP1:MOV A,R0 ;取被加数 ADDC A,R1 ;两数相加,带进位 MOV R0,A INC R0 ;修改地址 INC R1 DJNZ R2,LOOPl ;未加完转LOOP1 JNC LOOP2 ;无进位转LOOP2 MOV R0,#01H LOOP2:DEC R0 RET2多字节有符号数加法 MOV A,R0

2、;复制保存地址指针 MOV R2,A MOV A,R MOV R7,A CLR C LOOP1:MOV A,R0 ADDC A,R1 ;相加 MOV R0 ,A INC R0 INC R1 ;地址指针加1 DJNZ R7,LOOP1 JB OV,ERR ;若溢出,转溢出处理 DEC R0 MOV A,R0 JNB E7H,LOOP2 SETB 07H ;和值为负,置位标志 LOOP2:MOV A,R2 ;恢复地址指针 MOV R0,A RET ERR: ;溢出处理 RETSDADD:CLR 07H ;标志位清零图 4-3 多字节有符号数加法程序流程图二、 多字节数减法 MOV R0,#40H

3、;指向被减数最低位 MOV R1,#5OH ;指向减数最低位 MOV R2,#04H ;字节数 CLR C LOOP1:MOV A,R0 SUBB A,R1 ;完成一个字节的减法运算 MOV R0,A INC R0 INC R1 DJNZ R2,LOOP1 RET三、 多字节十进制数(BCD码)加法 图 4-4 BCD码多字节加法程序流程图BCDADD:MOV 20H,R0MOV 23H,RCLR C LOOP0: MOV A,R0 ;取被加数ADDC A,R1 ;两数相加DA A ;十进制调整MOV R0,AINC R0 ;指针加1INC R1 DJNZ R,LOOP0 ;作完加法否MOV

4、R2. #23HJNC RETURN ;有无进位MOV R0,#01HINC R RETURN:MOV R0,#20HRET四、 多字节数乘法ZHENFA: MOV A,R0MOV B,R1MUL AB ;(R1)*(R0)MOV R,A ;积的低位送到RMOV R4,B ;积的高位送到R4MOV A,R0MOV B,R2MUL AB ;(R2)*(R0)ADD A,R4 ;(R1)*(R0)的高位加(R2)*(R0)的低位MOV R4,A ;结果送R4,进位在CY中MOV A,BADDC A,#OOH;(R2)*(R0)的高位加低位来的进位MOV R,A ;结果送RRET五、 多字节数除法D

5、V: MOV R7,#08H ;设计数初值 DVl: CLR C MOV A,RRLC AMOV R,AMOV A,R6 RLC A ;将(R6)、(R)左移一位MOV 07H,C ;将移出的一位送07H位保存 CLR C 图 4-5 除法程序流程图SUBB A,R2 ;余数(高位)减除数JB O7H,GOU ;若标志位为1,说明够减 JNC GOU ;无借位也说明够减ADD A,R2 ;否则,恢复余数AJMP DV2GOU:INC R ;商上1 DV2:MOV R6,A ;保存余数(高位)DJNZ R7,DVlRET一、 数据的拼拆42 数据的拼拆和转换例4-7 设在30H和31H单元中各有

6、一个8位数据: (30H)=x7x6xx4xx2x1x0 (3lH)=y7y6yy4yy2y1y0 现在要从30H单元中取出低5位,并从31H单元中取出低3位完成拼装, 拼装结果送40H单元保存,并且规定: (40H)=y2y1y0x4xx2x1x0 解:利用逻辑指令ANL、ORL来完成数据的拼拆,程序清单如下: MOV 4OH,3OH ;将x7x0传送到40H单元 ANL 4OH,#000111llB ;将高3位屏蔽掉 MOV A,31H ;将y7y0传送到累加器中 SWAP A ;将A的内容左移4次 RL A ;y2y0移到高3位 ANL A,#111000OOB ;将低5位屏蔽掉 ORL

7、 4OH,A ;完成拼装任务二、 数据的转换 1ASCII码与二进制数的互相转换 例4-10 编程实现十六进制数表示的ASC1I代码转换成4位二进制数(1位十六进制数)。 解:对于这种转换,只要注意到下述关系便不难编写出转换程序: “字符0”“字符9”的ASCII码值为“30H”“39H”,它们与30H之差恰好为“00H”“09H”, 结果均0AH。 “字符A”“字符F”的ASCII码值为“41H”“46H”,它们各自减去37H后恰好为“0AH”“0FH”, 结果0AH。 根据这个关系可以编出转换程序如下,程序以R1作为入口和出口。 ASCHIN:MOV A,R1 ;取操作数 CLR C ;清

8、进位标志位C SUBB A,#30H ;ASCII码减去30H,实现0-9的转换 MOV R1,A ;暂存结果 SUBB A,#0AH ;结果是否9? JC LOOP ;若9则转换正确 XCH A,R1 SUBB A,#07H ;若9则减37H MOV R1,A LOOP: RET2BCD码与二进制数的转换 图 4-6 BCD码(十进制)转换成二进制数程序流程图程序清单如下: MAIN:MOV A,RMOV R2,A ;给子程序入口参数ACALL BCDBIN ;调用子程序MOV B,#64HMUL ABMOV R6,AXCH A,BMOV R,AMOV A,R4MOV R2,AACALL B

9、CDBIN ;调用子程序ADD A,R6MOV R4,AMOV A,RADDC A,#00HMOV R,ARET 子程序如下: BCDBIN:MOV A,R2ANL A,#0F0H ;取高位BCD码,屏蔽低4位SWAP AMOV B,#0AHMUL ABMOV R,AMOV A,R2ANL A,#0FH ADD A,R3 ;加低位BCD码MOV R2,ARET43 查表程序 使用MOVC A,A+DPTR指令来查表,程序清单如下:MOV DPTR,#BS ;子程序入口地址表首址RL A ;键码值乘以MOV R2,A ;暂存MOVC A,A+DPTR ;取得入口地址低位PUSH A ;进栈暂存I

10、NC AMOVC A,A+DPTR ;取得入口地址高位MOV DPH,APOP DPLCLR AJMP A+DPTR ;转向键处理子程序 BS: DB RK0L ;处理子程序入口地址表DB RK0HDB RK1LDB RK1HDB RK2LDB RK2H 44 散转程序一、 采用转移指令表的散转程序 例4-17 编出要求根据R的内容转向各个操作程序的程序。即当 (R)=0,转向OPRO (R)=1,转向OPRl (R)=n,转向OPRn 解:程序清单如下: MOV A,R RL A ;分支序号值乘2 MOV DPTR ,#BRTABL ;转移指令表首址 JMP A+DPTR ;转向形成的散转地

11、址 BRTABL:AJMP OPR0 ;转移指令表 AJMP OPR1 AJMP OPRn二、 采用地址偏移量表的散转程序例4-19 编出能按R的内容转向5个操作程序的程序。其对应关系如下: OPRD0:操作程序0 OPRD1:操作程序1 OPRD2:操作程序2 OPRD3:操作程序3 OPRD4:操作程序4 解:程序清单如下:MOV A,RMOV DPTR,#TAB3 ;指向地址偏移量表首址MOVC A,A+DPTR ;散转点入口地址在A中JMP A+DPTR ;转向相应的操作程序入口 TAB3: DB OPRDO-TAB3 ;地址偏移量表DB OPRDl-TAB3DB OPRD2-TAB3

12、DB OPRD3-TAB3DB OPRD4-TAB3三、 采用转向地址表的散转程序例4-20 编程:要求根据R的内容转向相应的操作程序中去。设备操作程序的转向地址分别为OPRD0, OPRDl, OPRDn。 解:程序清单如下:MOV DPTR,#BRTABL ;指向转向地址表MOV A,RADD A,R ;(A)(R)*2JNC NAND;INC DPH ;(R)*2的进位加到DPH NAND:MOV R,A ;暂存变址值MOVC A,A+DPTR ;取转向地址高8位XCH A,RINC AMOVC A,A+DPTR ;取转向地址低8位MOV DPL,A ;转向地址在DPTR中MOV DPH

13、,RCLR AJMP A+DPTR ;转向相应的操作程序 BRTABL:DW OPRDO ;转向地址表DW OPRD1DW OPRDn四、 采用“RET”指令的散转程序 例4-21 编出能根据R的内容转向各个操作程序的程序。设该操作程序的转向地址分别为OPRD0, OPRDl, OPRDn。 解:程序清单如下:MOV DPTR,#TAB3 ;指向转移地址表MOV A,RADD A,RJNC NANDINC DPH NAND:MOV R,AMOVC A,A+DPTR ;取转向地址高8位XCH A,RINC AMOVC A,A+DPTR ;取转向地址低8位PUSH A ;转向地址入栈MOV A,R

14、PUSH ARET ;转向操作程序 TAB3:DW OPRD0 ;转向地址表DW OPRDlDW OPRDn45 I/O端口控制程序 例4-22 试编出能模拟图4-9中电路的程序。ORG 0200HD BIT 00HE BIT 01HG BIT 02H LOOP1:ORL P1,#08H ;准备P1.3输入 LOOP2:MOV C,P1.3 ;检测K3状态JC LOOP2 ;若未准备好(K3断),则LOOP2ORL P1,#03H ;若准备好,则准备输入P1.0和P1.1状态MOV C,P1.0 ;输入K0状态MOV D,C ;送入DMOV C,P1.1 ;输入K1状态MOV E,C ;送入EANL C,D ;DE送CMOV G,C ;送入GMOV C,EORL C,D ;DE送CANL C,/G

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

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

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