编辑: 鱼饵虫 | 2013-06-08 |
一、实验目的和要求(必填)
二、实验内容和原理(必填)
三、主要仪器设备(必填)
四、操作方法和实验步骤
五、实验数据记录和处理
六、实验结果与分析(必填)
七、讨论、心得 软件实验1:
一、实验目的 1.
熟悉软件实验的基本步骤和汇编程序的调试方法;
2.了解内存块的移动方法;
3.了解将十六进制数转换成ASCII值的方法.
二、实验说明
1、实验例程1给定某块存储器的起始地址和长度,要求能将其内容清零.通过该例程让学生可以了解单片机读写存储器的方法,同时可以了解单片机的编程、调试方法.
2、块移动是单片机常用操作之一,多用于大量的数据复制和图象操作.实验例程2是外部RAM之间的数据块移动.将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去,用地址+1方法移动.移动3000H起始的256个字节到4000H起始的256个字节.
三、实验内容及步骤 例程1:
1、启动PC机,打开KEIL软件(KEIL软件使用见附录一),软件设置为模拟调试状态.在所建的Project文件中添加例程1的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序.
2、打开CPU窗口,观察CPU窗口各寄存器的变化.打开View菜单中的Memory Window,可以观察内部RAM、外部RAM的数据和程序存储器中的程序.在Address窗口输入X:8000H后回车,观察8000H-800FF起始的256个字节单元的内容,可以发现这256个字节的内容都为1.
3、软件的调试过程,可以看到程序执行的过程和各寄存器的变化情况,加深对实验的了解,用户也可改变A的值,那输出的内容也会改变. 例程2:
1、新建一个Project文件,添加例程2的源程序进行编译,编译无误后,可以选择单步或跟踪执行方式或全速运行程序.
2、打开View菜单中的Memory Window,在Address窗口的Memory#1输入X:3000H后回车,点击运行按钮后, 在Memory#2输入X:4000H后回车,通过比较,可观察到3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同,说明存储块已移动.
3、在单步或跟踪执行方式运行程序时,可以观察CPU窗口各寄存器的变化,看到程序执行的过程,加深对实验的了解.
四、流程图和源程序 例程1: 1.说明:给外部RAM8000~80FFH的256个单元的内容赋值,赋值的内容取决于程序中A的赋值. 2.流程图: 3.源程序: ORG 0000H START EQU 8000H MAIN: MOV DPTR, #START ;
起始地址 MOV R0,#0 ;
设置256字节计数值 MOV A,#1H Loop: MOVX @DPTR,A INC DPTR ;
指向下一个地址 DJNZ R0,Loop ;
计数值减1 NOP SJMP $ END 运行结果:外部RAM8000H~80FFH的内容都为1. 例程2: 1.说明:将3000H起始的256个字节存储块移动到4000H起始的256个字节存储块;
2.流程图: 3.源程序: ORG 0000H MOV DPTR,#3000H MOV A,#01H MOV R5,#O LOOP: MOVX @DPTR,A INC DPTR DJNZ R5,LOOP MOV R0,#30H MOV R1,#00H MOV R2,#40H MOV R3,#00H MOV R7,#0 LOOP1: MOV DPH,R0 MOV DPL,R1 MOVX A,@DPTR MOV DPH,R2 MOV DPL,R3 MOVX @DPTR,A INC R1 INC R3 DJNZ R7,LOOP1 SJMP $ END 运行结果: 3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同. 3000H开始: 4000H开始: 由图可知符合实验预期结果.
五、思考题