单片机实验2
数码转换实验
学号:1042402025 姓名:张炎峰 专业:电气工程与自动化 2.2.1、实验目的
1、掌握不同进制数及编码相互转换的方法,加深对数码转换的理解;
2、熟悉Keil C51集成开发环境的操作及程序调试方法。 2.2.2、实验设备
PC机一台,TD-NMC+教学实验系统、或“TD-PIT++教学实验系统+TD-51系统平台”、或“TD-PITE教学实验系统+TD-51系统平台” 2.2.3、实验内容
1、将BCD码整数0~255存入片内RAM的20H\\21H\\22H中,然后转换为二进制整数00H~FFH,保存到寄存器R4中。
2、将16位二进制整数存入R3、R4寄存器中,转换为10进制整数,以组合BCD形式存储在RAM的20H\\21H\\22H单元中。 2.2.4、实验步骤
1、二进制整数转换为十进制整数
实验参考例程: ORG 0000H LJMP MAIN 程序初始清零 ORG 0100H
MAIN: MOV R0,#22H //转换结果低位地址 存入R0
MOV A,R0 //将 转换结果低位地址 压入堆栈 PUSH ACC MOV R7,#03H CLR A LP1: MOV @R0,A
DEC R0 寄存器A
中此时为零,通过将他赋值给20H、21H、 DJNZ R7,LP1 22H将他们三个寄存器清零
POP ACC 将22H赋值给R0,既转换结果低位地址赋值给R0 MOV R0,A
MOV R7,#16 用于作为控制16位二进制数转换的循环控制数
LP2: PUSH ACC 保存转换
结果地位地址
CLR C 将进位标志位清零,在下面对R4的循环左移中将R4 低位赋值为零 MOV A,R4 首先对R4进行循环左移,并将其R4最高位存到 RLC A 进位标志位,R4最低位赋值为0,然后将R3循环 MOV R4,A 左移,并将R4的最高位赋值给R3的最低位, MOV A,R3 达到16位二进制数整体左移一位并将16位二进 RLC A 制数的最高位保存到进位标志位 MOV R3,A
MOV B,#03H 十进制数有六位,需占用三个存储单元,用来作为循环控制数
LP3: MOV A,@R0 这几行的目的是为了进行R0*2的操作,没有 ADDC A,@R0 采用乘法运算是为了通过进位标志位传递进位,避免
DA A 使用乘法程序带来的进位的问题,使得程序简单 MOV @R0,A 把十进制数存入存储单元中
DEC R0 地址自减,指向高位地址
DJNZ B,LP3 循环计算六位二进制数,完成一位二进制数的转换 POP ACC 再将转换结果的低位地址赋值给R0 MOV R0,A
DJNZ R7,LP2 循环载入16位二进制数,以完成转换工作 LJMP MAIN END
(1)、编写实验程序,程序流程图如图所示,编译链接无误后,进入调试状态。 我的是实验程序如下:
(2)、修改R3、R4寄存器,例如:A2H、FCH; (3)、在LJMP MAIN 语句行设置断点,然后运行程序;
(4)、程序停止后,查看寄存器20H的内容,应为:04H、17H、24H;
(5)、反复修改R3、R4寄存器的内容,运行试验程
序,验证程序的正确性。 (6)实验程序分析
二进制转换为十进制的计算过程:
A2FC(H)= 41724(D)
A2FC(H)=1010 0010 1111 1100(B)
41724(D)=1×2^15+0×2^14+1×2^13+0×2^12+0×
2^11+0×2^10
+1×2^9+0×2^8+1×2^7+1
×2^6+1×2^5+1×2^4
+1×2^3+1×2^2+0×2^1+0
×2^0
实验参考例程的计算过程:
首先,保存转换结果地位地址;然后,结果存储地址清零;然后,复位进位标志,对二进制数(A2FC)进行循环左移一位,取出最高位(此时为1),放入到进位标志位中,此时,R3R4中剩下的是0100 0101 1111 1000(B)(45F8H);然后是将结果地址中的数(初值
(
)
为0)×2,再加上进位标志位(即二进制数最高位),进行十进制调整(此时,×2计算 与 十进制调整 不会同时产生进位,因为 任意一个十六进制的两位数×2+1 ,若产生进位,则剩下的两位16进制数进行十进制调整必定不会产生进位);接下来是对原二进制数的第二位的进行计算;二进制数总共有16位,所以循环次数设为16。
假设 结果存储地址 中的十进制数是
i
A
;16位二进制数的每一位的值是 B i
初始值 A0 =0 A1 = A0×2+B15
第一次循环 第二次循环 第三次循环
A2 = A1×2+B14=(A0×2+ B15)×2+B14
= B15×2+ B14×2^0;
A3 = A2×2+B13=(B15×2+ B14)×2+B13
= B15×2^2+B14×2^1+B13×2^0
第四次循环 ×2+B12
2^0
A4 = A3×2+B12=(B15×2^2+B14×2+B13)
= B15×2^3+ B14×2^2+ B13×2^1+ B12× 以此类推…… 第十六次循环
A16 = A15×2+B0
=B15×2^15+B14×2^14+B13×2^13+……+B1×2^1+ B0×2^0
=1×2^15+0×2^14+1×2^13+0×2^12+0×2^11
+0×2^10+1×2^9+0×2^8+1×2^7+1×2^6 +1×2^5+1×2^4+1×2^3+1×2^2+0×2^1+0×2^0 =41724(D)
由于该程序在每一次循环(即 每一次计
算)时都进行了一次十进制调整,所以十六次循环计算可以用最后一个总的表达式进行十进制计算。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务