《单片机实验指导书.doc》由会员分享,可在线阅读,更多相关《单片机实验指导书.doc(99页珍藏版)》请在金锄头文库上搜索。
1、实验一 存储器块清零一、实验目的1. 掌握汇编程序设计及其调试程序方法2 掌握存储器的读写方法二、实验内容1. 编写程序,将外部数据存储器中0100H-01FFH单元的内容全部清零。2. 修改程序,将存储器中0100H-01FFH单元的内容置成 0FFH,0FEH,0FDH,01H,00H。三、程序框图 图1 数据块清零程序框图四、程序清单BlockEQU4000HORG0000HMOVDPTR, #Block ; DPTR = _ MOVR0, #0 ; R0 = _ CLRA ; A = _Loop: MOVXDPTR, A ; DPTR = _ INCDPTR ; DPTR = _ DJ
2、NZR0, Loop ; R0 = _ , Z = _ , PC = _ LJMP$ ; R0 = _ , PC = _ END五、实验步骤1. 新建汇编文件(文件名.ASM),输入源程序,另存于D: M51的目录下。2. 汇编源程序。3. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。实验二 数据块移动一、实验目的1. 掌握汇编程序设计及其调试程序方法。2 掌握数据块的移动方法。二、实验内容 将指定源首地址和长度的存储块移到指定目标位置1编写程序,用地址加一的方法将0000H-00FFH单元的内容复制到0100H-01FFH的存储单元中。2编写程序,用地址减一的方法完
3、成上述功能。三、程序框图图2 程序框图1 图3 程序框图2四、实验步骤1. 新建汇编文件(文件名.ASM),输入源程序,另存于D: M51的目录下。2. 汇编源程序。3. 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。五、程序清单961 用地址加一的方法实现数据块移动; 0000H -00FFH - 0100H-01FFHDATA1 EQU 0000HDATA2 EQU 0100H ORG 0000H MOV DPTR,#DATA2 MOV P2, DPH MOV R0, DPL MOV DPTR, #DATA1 MOV R7,#00HLoop1: MOVX A, DP
4、TR MOVX R0, A INC DPTR INC R0 CJNE R0, #00H, Goon1 INC P2Goon1: DJNZ R7, Loop1 LJMP $ END2 用地址减一的方法实现数据块移动; 0000H -00FFH - 0100H-01FFHDATA1 EQU 00FFHDATA2 EQU 01FFH ORG 0000H MOV DPTR,#DATA2 MOV P2, DPH MOV R0, DPL MOV DPTR, #DATA1 MOV R7,#00HLoop1: MOVX A, DPTR MOVX R0, A DEC DPL MOV A, DPL CJNE A,
5、 #00H, Coon1 DEC DPHCoon1: DEC R0 CJNE R0, #00H, Goon2 DEC P2Goon2: DJNZ R7, Loop1 LJMP $ END五、思考题 当源数据块的地址与目标数据块的地址重叠时,将会发生什么情况?应采用哪种方法编写程序,才能保证所复制的数据与源数据完全一致。 先运行实验一的第二段程序,将本次实验的目标地址修改为0180H,观察哪个程序运行结果正确。再将本次实验的目标地址分别修改为0080H,观察哪个程序运行结果正确。实验三 二进制到BCD码转换一、 实验目的1掌握简单的数值转换算法2基本了解数值的各种表达方法二、实验内容计算机中的数
6、值有各种表达方式,掌握各种数制之间的转换是单片机应用的基础。1. 编写一个双字节二进制数到压缩BCD码的转换子程序,其:入口条件:待转换的双字节二进制数在R6、R7中。出口信息:转换后的三字节压缩码整数在R3、R4、R5中。2 编写一个双字节二进制数到分离BCD码的转换子程序,其:入口条件:待转换的双字节二进制数在R6、R7中出口信息:转换后的分离码在5AH5FH的6个单元中。3. 编写程序,将20H、21H的双字节二进制数转换为分离码存放在5AH5FH的6个单元中。三、 程序框图四、程序清单;主程序XSQ EQU 60H ORG 0000H MOV R6, #0FFH MOV R7,#0FF
7、HLCALL FLBCD ;调分离BCD码程序 SJMP $;二进制数转换分离BCD码程序FLBCD: LCALL HB2 ;调BCD码转换程序 MOV A, R3 ANL A, #0F0H SWAP A MOV XSQ, A MOV A, R3 ANL A, #0FH MOV XSQ+1, A MOV A, R4 ANL A, #0F0H SWAP A MOV XSQ+2, A MOV A, R4 ANL A, #0FH MOV XSQ+3, A MOV A, R5 ANL A, #0F0H SWAP A MOV XSQ+4, A MOV A, R5 ANL A, #0FH MOV XSQ+
8、5, A RET;二进制数转换压缩BCD码子程序;入口条件:待转换的十六进制数在R6、R7中,;出口信息:转换后的BCD码在R3、R4、R5中HB2: CLRA; MOVR3, A ; MOVR4, A MOV R5, A MOVR2, #10H;双字节需循环16次HB20:MOVA, R7;高位移到CY中 RLCA MOVR7, AMOVA, R6RLCAMOVR6, AMOVA, R5;BCD码带进位自身相加ADDCA, R5DAA;十进制调整MOVR5, AMOVA, R4ADDCA, R4DAAMOVR4, AMOVA, R3ADDCA, R3MOVR3, A ;万位不超过6不用调整D
9、JNZR2, HB20;16位没有处理完转 RET五、实验步骤 分别用单步、断点和连续执行的方法调试程序,并观察寄存器和存储器的变化。六、思考题 如何将分立BCD码和压缩BCD码转换成二进制码。实验四 四位压缩BCD码加法实验一、 实验目的1了解设计压缩BCD码加法程序的方法2掌握加法指令、十进制调整指令的使用方法。二、实验内容把30H、31H单元中的四位十进制数与32H、33H单元中的四位十进制数相加,结果存放在30H、31H、32H单元。(数据存放格式为低位在前,高位在后)程序运行前,应先将30H-33H单元的加数和被加数赋值。执行结果填在表1-1中。表1预置被加数预置被加数程序运行结果(30H)(31H)(32H)(33H)(30H)(31H)(32H)十进制34127856三、 程序框图 四、 程序清单 DATA1 EQU 30H ; 加数地址DATA2 EQU 32H ; 被加数地址 ORG 0000H MOV R0, #DATA1 MOV R1, #DATA2 MOV A, R0 ADD A, R1 DA A MOV R0, A INC R0 INC R1 MOV A, R0 ADDC A, R1 DA A MOV R0, A INC R0 CLR A ADDC A, #0 MOV R0, A SJMP $ END实验五 布尔操作实验