mcu实验报告一

更新时间:2024-01-21 07:24:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

东南大学自动化学院

实 验 报 告

课程名称: 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

MOVX A, @DPTR MOV DPTR,#54H MOVX @DPTR ,A

MOV DPTR,#45H MOVX A, @DPTR MOV DPTR,#55H MOVX @DPTR ,A

MOV DPTR,#46H MOVX A, @DPTR MOV DPTR,#56H MOVX @DPTR ,A

MOV DPTR,#47H MOVX A, @DPTR MOV DPTR,#57H MOVX @DPTR ,A

MOV DPTR,#48H MOVX A, @DPTR MOV DPTR,#58H MOVX @DPTR ,A

MOV DPTR,#49H MOVX A, @DPTR MOV DPTR,#59H MOVX @DPTR ,A ss: ajmp ss ss1: ajmp ss1 END

1. 多字节十进制数加法

ORG 0000H LJMP MAIN

ORG 0100H MAIN:

MOV R1,#40H MOV @R1,#56H MOV R1,#50H MOV @R1,#56H

MOV R1,#41H

MOV @R1,#56H MOV R1,#51H MOV @R1,#56H

MOV R1,#42H MOV @R1,#56H MOV R1,#52H MOV @R1,#56H

MOV A,42H ADDC A,52H DA A

MOV 63H,A

MOV A,41H ADDC A,51H DA A

MOV 62H,A

MOV A,40H ADDC A,50H DA A

MOV 61H,A

CLR A

MOV ACC.0,C MOV 60H,A

ss: ajmp ss ss1: ajmp ss1 END

通过这次实验,我对数据在内存中的传送有了深刻的了解,以及更新了我对地址概念的重新认识。在加法操作中,有进位的加法要进行标志位参与加法操作,溢出位要单另存在一个为0的累加器中,从而正确的输出结果。

本文来源:https://www.bwwdw.com/article/3i8o.html

Top