您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页单片机实验2

单片机实验2

来源:筏尚旅游网


单片机实验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

本站由北京市万商天勤律师事务所王兴未律师提供法律服务