单片机实验二软件设计

上传人:宝路 文档编号:48096594 上传时间:2018-07-09 格式:PPT 页数:13 大小:108.57KB
返回 下载 相关 举报
单片机实验二软件设计_第1页
第1页 / 共13页
单片机实验二软件设计_第2页
第2页 / 共13页
单片机实验二软件设计_第3页
第3页 / 共13页
单片机实验二软件设计_第4页
第4页 / 共13页
单片机实验二软件设计_第5页
第5页 / 共13页
点击查看更多>>
资源描述

《单片机实验二软件设计》由会员分享,可在线阅读,更多相关《单片机实验二软件设计(13页珍藏版)》请在金锄头文库上搜索。

1、实验二、单片机软件实验 一、 实验目的:1、进一步掌握仿真器及软件的使用; 2、进一步熟悉51单片机指令系统;3、掌握汇编语言程序的设计方法; 4、进一步掌握程序的调试、诊断和排错方法。 二、实验仪器:1、PC机一台。2、仿真器(EASYPROBE)一只。3、稳压电源一台。YesYes开始0R4R5 0Cy 16R0移出位 Cy=1?No(R4R5)+(R2R3)R4R5(R0)-1R0(R0)=0?ENDNoCyR4R5R6R7右移(循环)一位CyR4R5R6R7右移(循环)一位 R4R5R6R7三、实验原理:双字节无符号数相乘移位加算法四、实验内容:(一)程序的运行与验证:1、把长度为10

2、H的字符串从内部RAM的输入缓冲区 inbuf向输出缓冲区outbuf进行传送,遇到0D0H或整个字 符串传送完毕。设inbuf=30H,outbuf=50H(1)(30H)(35H)=00H05H,(36H)=0D0H, (37H)(3FH)=07H0FH ,运行程序检查(50H) 到(5FH)的内容。(2)(30H)(3FH)=00H0FH ,运行程序 检查(50H) 到(5FH)的内容。INBUF EQU 30HOUTBUF EQU 50H ORG 0000H LJMP MAINORG 1000H 1000 7830 MAIN:MOV R0,#INBUF 1002 7950 MOV R1

3、,#OUTBUF 1004 7A10 MOV R2,#10H 1006 E6 LOOP: MOV A,R0 1007 C3 CLR C 1008 94D0 SUBB A,#0D0H 100A 6006 JZ OVER 100C E6 MOV A,R0 100D F7 MOV R1,A 100E 09 INC R1 100F 08 INC R0 1010 DAF4 DJNZ R2,LOOP 1012 80 FEOVER:SJMP OVEREND 2、求8个数的平均值,这8个数以表格形式存放在从table 开始的单元中。(1)table:db 02H,03H,04H,10H,12H,22H,25H

4、,30H 运行 程序检查结果。 (2)table:db 0C2H,0D0H,88H,92H,55H,66H,0A5H,74H 修改并运行程序,检查结果。ORG 0000H LJMP MAINORG 1000H 1000 901020 MAIN:MOV DPTR,#TABLE 1003 7908 MOV R1,#08H 1005 89F0 MOV B,R1 1007 7800 MOV R0,#00H 1009 E4 LOOP:CLR A 100A 93 MOVC A,A+DPTR 100B 28 ADD A,R0 100C F8 MOV R0,A 100D A3 INC DPTR 100E D9

5、F9 DJNZ R1,LOOP 1010 84 DIV AB 1011 80 FE SJMP $ORG 1020H 1020 0203041012222530TABLE:DB 2H,03H,04H,10H,12H,22H,25H,30HENDORG 1000H MOV DPTR,#TABLE MOV R1,#08H MOV B,R1 MOV R0,#00H MOV R2,#0 LOOP:CLR A MOVC A,A+DPTR ADD A,R0 JNC J1 INC R2 J1:MOV R0,A INC DPTR DJNZ R1,LOOP DIV AB MOV R0,A MOV A,R2 MOV

6、 B,#32 MUL AB ADD A,R0 SJMP $ORG 1020HTABLE:DB 0C2H,0D0H,88H,92HDB 55H,66H,0A5H,74H END(三)编写16位无符号数相乘的移位加算法程序:实现(R2R3)(R6R7)R4R5R6R7; (1)若(R2R3)=1088H,(R6R7)=20A0H,运行程序检查结果;(2)若(R2R3)=0C0FFH,(R6R7)=B080H,运行程序检查结果;(3)若(R2R3)=0050H,(R6R7)=0080H,运行程序检查结果。ORG 0000HACALL DBMUL1 STOP: SJMP STOP ORG 0100H

7、DBMUL1: CLR A ;初始化MOV R4, A ;MOV R5, A ;MOV R0, #16 ;CLR C ; LOOP: MOV A, R4 ;R4R5R6R7右移一位RRC A ;MOV R4, A ;MOV A, R5 ;RRC A ;MOV R5, A ;MOV A, R6 ;RRC A ;MOV R6, A ;MOV A, R7 ;RRC A ;MOV R7, A ;JNC SKP ;移出位=0,跳过双字节无符号数相 乘移位加算法程序 MOV A, R5 ;移出位0,(R4R5)+(R2R3)R4R5ADD A, R3 MOV R5, A ;MOV A, R4 ;ADDC

8、A, R2 ;MOV R4, A ; SKP: DJNZ R0, LOOP ;计数结束否MOV A, R4 ;R4R5R6R7右移一位RRC A ;MOV R4, A ;MOV A, R5 ;RRC A ;MOV R5, A ;MOV A, R6 ;RRC A ;MOV R6, A ;MOV A, R7 ;RRC A ;MOV R7, A ;RET ;返回END 双字节无符号数相乘移 位乘算法子程序 ORG0200H DBMUL2:MOV A,R3 MOVB,R7 MULAB;R3*R7(得第一次部分积) XCHA,R7 ;原R7的内容送A,R7R3R7L(在R7中得到乘积的第4字节) MOV

9、R5,B ;R5R3R7H MOVB,R2 MULAB;R2*R7(得第二次部分积) ADDA,R5 ;R2R7L+R3R7H MOVR4,A ;R4和 CLR A ADDC A,B;R2R7H+(R2R7L+R4时产生的进位) MOVR5,A ;R5和 MOVA,R6 MOVB,R3 MULAB ;R3*R6(得第三次部分积) ADDA,R4 ;R3R6L+R4 XCHA,R6 ;AR6,R6R3R6L+R4(在R6中得到乘积的第三字节) XCHA,B;AR3R6H,BR6ADDC A,R5;R3R6H+R5+(R3R6L+R4时产生的进位)MOVR5,A;R5和 MOVF0,C;FO进位M

10、OVA,R2 MULAB;R2*R6(得第四次部分积) ADDA,R5;R2R6L+(R3R6H+R5时产生的进位) MOVR5,A;在R5中得到乘积的第二字节 CLRA MOVACC.0,C;累加器最高位进位 MOVC,F0; ADDC A,B;R2R6H+FO+ACC.0 MOVR4,A;在R4中得到乘积的第一字节 RET END(四)编写下列简单程序,并调试运行。1、把一个字节的压缩BCD码转换为两个半字节数,压缩BCD 码数存放在40H,转换后两个半字节数存放在50H和51H。2、存放在30H开始的三个字节不带符号十进制数与存放在40H 开始的三个字节不带符号十进制数相加,结果存放在50H开始的单元。

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

当前位置:首页 > 高等教育 > 大学课件

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