MCU第一次实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
东南大学自动化学院
实验报告
课程名称: MCU综合课程设计
第 1 次实验
实验名称:数据传送与多字节十进制加法实验
院(系):自动化专业:自动化
姓名:李周洋学号:08011328
实验室:测控技术实验室实验组别:
同组人员:刘乃广实验时间:2014 年 4 月17 日评定成绩:审阅教师:
目录
一.实验目的和要求 (2)
二.实验原理 (2)
三.实验方案与实验步骤 (3)
四.实验设备与器材配置 (5)
五.实验记录 (6)
六.实验总结 (6)
七.思考题或讨论题 (6)
八.源代码 (7)
一.实验目的和要求
实验目的
(1)熟悉掌握将数据存入片外存储空间或片内存储空间的方式和指令以及熟悉掌握外部存储空间中数据传递的方式和指令;
(2)学会用汇编语言进行循环操作。
(3)熟悉掌握汇编语言进行的十进制加法运算和十进制调整指令。
(4)理解进位溢出的原理。
(5)熟悉使用Medley软件进行下载调试(单步、断点),并查看相关的寄存器值和片内外存储器的值。
实验要求
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、数据传送实验
当使用Ri(i=0、1)作片外寻址时候,需要预先设置高位地址线P2的值。程序中将P2的值设为00H。如果利用DPTR作间址寄存器,无需改变P2口的值,可直接使用.
因为程序中使用的是R0、R1作片外寻址,首先将P2口写0,即把高位地址置0,然后将地址初值40H放入寄存器R0。同时,将初始数据放入一个累加器A中。之后,一个MOVX A,@R0操作便可将累加器中的数据传送到片外数据存储单元中去。由于这样的操作要做十次,所以用一个寄存器R2作为计数器使用,即将0AH存放在寄存器内。当寄存器的值不为0,用DJNZ循环操作。
第二步是要将40H-49H的数值分别传到50H-59H的内存空间中。先将源地址初值和目的地址初值分别存放在寄存器R0和R1内。再重置计数初值R2,同样用DJNZ循环。循环时,先将数据初值放入一个累加器A内,通过A间接地传送数值。R0和R1经过一次循环分别加一。直至循环结束。
2、多字节十进制加法实验
本实验要求将两个六位的十进制数相加。最终的结果存放在以60H为首的RAM地址单元中。而十进制数是用BCD码表示的,且数据存放方式为高位数据在低地址,低位数据在高地址。并且需要考虑加法过程中产生的进位。
首先,将进位标志位CY清零,以免对真正的进位产生混淆。然后,根据如下表达式:
(40H) (41H) (42H)
+ (50H) (51H) (52H)
= (60H) (61H) (62H) (63H)
从高地址的数据加起,即将42H和52H地址单元的数据相加,因为运算过程涉及到了进位,所以需要采用ADDC操作。同时,标志位CY也参与运算,并且将运算结果送至累加器A。再通过DA A指令,进行十进制的假发调整后将最终结果存放在63H地址单元中。由于,数据存放在片内存储单元,所以只需用MOV指令即可。
地址减1,依次进行相同的操作。在最高位数据相加时,结果中可能会溢出并产生进位,当没有产生进位时,CY为0,用JNZ跳转到LOOP处给60H置0,结束;若有进位,CY 为1,直接顺序执行程序,给60H赋01H,跳转到结束。
三.实验方案与实验步骤
1、硬件连接:
(1)上位机电脑通过USB连接仿真器(红色盒子)
(2)仿真器通过末端总线连接的单片机芯片插入实验箱对应的插槽中(注意芯片插入的方向:凹口对凹口)
2、程序运行:
(1)新建项目,命名后其它设置按默认进行,无需手工进行任何设置(一路默认设置即可)直到完成项目的创建。
(2)添加自己编写的.asm源文件。
(3)编译/汇编。
(4)生成代码并下载到仿真器上。
(5)程序运行。返回监控后可查看寄存器和存储器的值。这些都可在“查看”菜点中选择,其中IDA TA为片内数据地址,XDA TA为片外数据地址。也可以单步或设置断点进行调试。
(6)实验调试中注意采用单步、断点等调试方法。
3、程序流程图:(1)数据传送实验
(2)多字节十进制加法实验
四.实验设备与器材配置
1.EEEC-030B型单片机,单片机/ISP综合设计实验箱一台
2.电脑一台
3.单片机芯片一片
B连接仿真器(红色盒子)一个
5.DB25标准并口下载电缆一根
6.电源线一根
五.实验记录
1、数据传送实验
程序编译有个错误,最后发现有个冒号是在中文输入法下写得,产生代码成功下载后,单步运行程序。
通过查看寄存器发现,计数用的寄存器每一个循环相应地减1,累加器A每一个循环加1,存放地址的寄存器R0也不断加1。返回监控后,查看XDA TA,找到相应的片外存储空间,发现所存数据符合预期。
2、多字节十进制加法实验
程序单步运行,查看寄存器。
低位数据相加时,首先存放地址的寄存器R0和R1的值由8F和00分别变为42和52,执行ADDC操作及DA操作后,累加器A的值变68H,并存入63H。查看片内DA TA,发现63H中存放的值为68H。
41H和51H内存单元中的数据相加调整后,A的值变为68H,并存入62H。查看DATA,发现62H中存放的值为68H。
40H和50H内存单元中的数据相加调整后,A的值变为68H,并存入61H。查看DATA,发现61H中存放的值为68H。
最高位相加产生的进位存入60H,查看DATA,发现60H内的值为00,即CY=0。
六.实验总结
通过这次实验,我对MOV指令和MOVX指令的区别和联系有了更深入的理解。同时对Medley软件的操作有了初步的认识和掌握。
通过实验一,我对Ri何时用作外部存储空间的间接寻址有了一定的认识。当DPTR用作外部存储空间的间接寻址时,可直接使用。而Ri则需先设置高位地址线P2的值。
通过实验二,我对多字节十进制数的加法有了很好的掌握。由于加法会涉及到进位,所以要采用ADDC指令,并且程序一开始就应该将CY位置0。
七.思考题或讨论题
对内部RAM间接寻址时,只能使用R0或R1作为间址寄存器。同样的在对外部RAM 寻址时,也能使用R0或R1作为间址寄存器。但需对高位地址线P2的值进行设置,为什么?
答:由于R0和R1是8位的地址指针,而要对外部数据存储器(64KB)的任意单元间接寻址时,需要用16位的地址指针,这也是为什么用DPTR作地址指针时可直接使用的原因。所以在设置高位地址线P2的值后,就可实现对外部RAM的寻址。