东南大学自动化学院
实 验 报 告
课程名称: MCU(微控制器)综合课程设计
第 1 次实验
实验名称: 数据传送与多字节十进制加法实验
院 (系): 自动化学院 专 业: 自动化
姓 名: 张涤 学 号: 08007211
实 验 室: 测控技术实验室 实验组别:
同组人员: 黎晓平 实验时间: 2008 年 3 月 25 日
评定成绩: 审阅教师:
实验报告内容:
一. 实验目的和要求
实验目的:
由于本次实验做的是两个小内容,分别是数据传送实验和多字节十进制加法实验,要求分别如下。这两个内容的目的分别是掌握数据在存储器和寄存器中的传送过程,弄清楚数据和地址的区别,理解数据和地址的对应关系。掌握用汇编语言进行十进制加法运算,了解进位溢出的原理,加深对片内和片外数据传送的理解。 实验要求:
1. 数据传送实验
把数据0A0H放到地址为40H的内存单元,并将数值和地址分别递增1,要求一共做十次这样的操作。
然后将内存空间40H-49H的数值分别传递给50H-59H的内存空间中。
2. 多字节十进制加法实验
将存放在单片机内部RAM中以40H为首的3个地址单元中的一个六位十进制数与存放在50H为首的3个地址单元中的一个六位十进制数相加,将相加结果存放在以60H为首的地址RAM地址单元中。
数据存放方式:十进制数以BCD码存放,高位数据在低地址,低位数据在高地址。
(40H) (41H) (42H)
+ (50H) (51H) (52H) = (60H) (61H) (62H) (63H)
最高位进位存放在60H中。数据都存放在片内数据存储器内。
二. 实验原理
数据传送实验中,要求是将数据传送到给定地址的内存单元中去,分别将数据和地址加1,做10次+1的操作,那么首先要将数据放在一个累加器中暂存,然后把内存单元为40H的地址单元送到DPTR中去,送去的是一个地址,因此只需要一个MOVX操作便可将累加器中的数据传送到DPTR中地址单元去,从而实现了数据传送,累加器和DPTR(存地址,实际上是数据指针)都进行+1操作,又因为要进行10次这样的操作,那么可以定义一个与0比较的判断进行10次减法即可,将0AH存放在寄存器中,然后进行减1与0比较,如此循环,直至与0相等。将内存空间为40H到49H的数值传到50H到59H内存中去,那么可以进行一个个的数据传送就行,相互对应,也就是第一个单个数据传送中的操作做10次即可,也就形成了段传送。最后由于需要进行单步跟踪调试,为了防止直接END而使单步时程序死了,需要做一个活循环操作即ss: ajmp ss ss1: ajmp ss1。
多字节十进制加法实验中,由于十进制数是用BCD码表示的,而要求中提示的是将40H,41H,42H 3个地址单元中的十进制数,与50H,51H,52H 3个地址单元中的十进制数进行加法运算,并将结果存放在以60H为首的RAM抵制地址单元中,考虑到设计到十进制BCD码的加法,必然会涉及在十进制进位,因此假设最高进位存放在60H地址单元中,数据存
放方式:十进制数以BCD码存放,高位数据在低地址,低位数据在高地址。
(40H) (41H) (42H)
+ (50H) (51H) (52H) = (60H) (61H) (62H) (63H)
最高位进位存放在60H中。数据都存放在片内数据存储器内。由这个表达式可知,地址单元为40H和地址单元为50H的进行相加运算,41H和51H单元数据相加,42H和52H单元数据相加,由于涉及到了进位,则需要采用ADDC操作,标志位CY也参与运算,并且将运算结果送至累加器A,假设40H和50H内存单元中存放的立即数是56H,则在相加过程中会产生进位,采用ADDC加法操作,将进位包含就去,由于他们都是最高位,假如结果中产生了最高位进位的话,则需要将累加器中原来存放的数据进行清0操作,然后将最高位进位c存放进A中,具体就是将42H内存单元中的数据放在累加器A中,然后进行直接寻址带进位加法运算,和52H内存单元内容相加,加完之后的结果经过BCD码与10进制数调整,将调整好的结果存放在结果的最低位63H中,依次类推,需要注意的是最高位40H和50H单元相加的时候,结果中可能会产生溢出进位,则需要将累加器清0,将溢出位c存放在累加器中,然后将累加器中的溢出位传送给60H地址单元即可。
三. 实验方案与实验步骤
首先将各种插口连接号,然后进行编程,实现各种功能。 数据传送实验流程图:
执行主程序
立即数传至累加器
地址单元传给DPTR
减法次数传至R0 R0内容-1 数据+1 地址+1 =0 ?
执行段交换程序 由于一段数据的传送实际上是多个单数据传送的结合,故不作图。
多字节十进制数加法程序流程: 执行主程序
结果最高位存放在清0后的A中 对应地址单元进行加法操作 将地址单元分别送至寄存器中,将立即数送至寄存器内容中
实验设备与器材配置
1. EEEC-030B型单片机,单片机/ISP综合设计实验箱一台 2. CPU模块一块(可选)
3. FPGA/CPLD可编程模块一块(可选) 4. DB25标准并口下载电缆一根 5. 电源线一根
6. DB9在线调试线一根 7. 电压表笔一支 8. 实验指导书一份 9. 塑封使用摘要一张
运算结果存放在60H为首的地址单元中
四. 实验记录
第一个内容中,在单步调试的时候,在运行10次减法的时候,累加器和地址不断的+1,而寄存器中的低8位不断的减1。数据存储器中40H单元的内容和50H单元的内容互换,其他内存空间也相同。
第二个内容中寄存器中的数值为56H,在相加之后变成0ACH,在进行DA转换后,标志位为1,进行加法运算。在运算到最高位的时候,发现有溢出位,A中数据回0,赋1,A中数据传送至60H内存单元中
五. 实验总结
实验源代码: 1数据传送实验
ORG 0000H LJMP MAIN
ORG 0100H MAIN:
MOV A,#0A0H MOV DPTR,#40H MOV R0,#0AH
LOOP: MOVX @DPTR,A INC A INC DPTR
DJNZ R0,LOOP
MOV DPTR,#40H MOVX A, @DPTR MOV DPTR,#50H MOVX @DPTR ,A
MOV DPTR,#41H MOVX A, @DPTR MOV DPTR,#51H MOVX @DPTR ,A
MOV DPTR,#42H MOVX A, @DPTR MOV DPTR,#52H MOVX @DPTR ,A
MOV DPTR,#43H MOVX A, @DPTR MOV DPTR,#53H MOVX @DPTR ,A
MOV DPTR,#44H