资源描述:
《微机原理与接口技术实验.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验一存储器块操作实验一、实验目的1.熟悉KEIL集成调试环境和汇编程序的调试方法。2.掌握存储器读写方法;3.了解内存块的移动方法;二、实验说明实验1指定某块存储器的起始地址和长度,要求能将其内容赋值。通过该实验学生可以了解单片机读写存储器的方法,同时也可以了解单片机编程、调试方法。块移动是单片机常用操作之一,多用于大量的数据复制和图象操作。例程2给出起始地址,用地址加一方法移动块,将指定源地址和长度的存储块移到指定目标地址为起始地址的单元中去。移动3000H起始的256个字节到4000H起始的256个字节。三、源程序代码
2、源程序1:ORG0000HSTARTEQU8000HMOVDPTR,#START;起始地址MOVR0,#0;设置256字节计数值MOVA,#1HLoop:MOVX@DPTR,AINCDPTR;指向下一个地址DJNZR0,Loop;计数值减一NOPLJMP$ENDMemoryWindow初始:运行后:运行结果:外部RAM8000H~80FFH的内容都为1。源程序2:ORG0000HMOVDPTR,#3000HMOVA,#01HMOVR5,#0LOOP:MOVX@DPTR,AINCDPTRDJNZR5,LOOPMOVR0,#30
3、HMOVR1,#00HMOVR2,#40HMOVR3,#00HMOVR7,#0LOOP1:MOVDPH,R0MOVDPL,R1MOVXA,@DPTRMOVDPH,R2MOVDPL,R3MOVX@DPTR,AINCR1INCR3DJNZR7,LOOP1LJMP$ENDMemoryWindow初始:运行程序后:运行结果:3000H起始的256个字节存储块与4000H起始的256个字节存储块各单元内数据对应相同。四、思考题1、如何将存储器块的内容置成某固定值(例全填充为0FFH)?请用户修改程序,完成此操作。将源程序1修改为:OR
4、G0000HSTARTEQU8000HMOVDPTR,#START;起始地址MOVR0,#0;设置256字节计数值MOVA,#0FFH;将累加器赋值为0FFHLoop:MOVX@DPTR,AINCDPTR;指向下一个地址DJNZR0,Loop;计数值减一NOPLJMP$ENDMemoryWindow初始:运行程序后:2、若源块地址和目标块地址有重叠,该如何避免?将源块地址和目标块地址重叠部分数据压制堆栈中,当要使用重叠部分源数据时,直接从堆栈中弹出。五、实验内容1、试编程将片内RAM中的数据依次复制到片外RAM。假设源数据区
5、的首地址为40H,目的数据区的首地址为1000H,数据块长度为10H。源程序:ORG0000HMOVR0,#40HMOVDPTR,#1000HMOVR1,#10HLOOP:MOVA,@R0MOVX@DPTR,AINCR0INCDPTRDJNZR1,LOOPSJMP$ENDMemoryWindow初始:程序运行后:程序运行结果正确。2、两个16位无符号二进制数分别存放在片外RAM首址为2000H和2002H单元内,将它们相加,结果存入片内RAM30H(低8位)、31H(高8位)。源程序:ORG0000HMOVDPTR,#200
6、0HMOVXA,@DPTRMOVR0,AMOVDPTR,#2002HMOVXA,@DPTRADDA,R0MOV30H,AMOVDPTR,#2001HMOVXA,@DPTRMOVR0,AMOVDPTR,#2003HMOVXA,@DPTRADDCA,R0MOV31H,AENDMemoryWindow初始:运行程序后:2FAFH+067DH=362CH,36H存于31H(高八位),2CH存于30H(低八位)。程序运行正确。实验二数值转换实验一、实验目的1.熟悉KEIL集成调试环境和汇编程序的调试方法。2.掌握简单的数值转换算法。3
7、.基本了解数值的各种表达方法。4.掌握数值的加减法运算。5.掌握用查表的方法将BCD值转换成ASCII值。二、实验说明单片机系统内部运算用二进制,而输入输出常用十进制,以符合日常习惯,因此,数制转换是仪表设计中常用的程序之一。实验1:单片机中的数值有各种表达方式,这是单片机的基础。掌握各种数制之间的转换是一种基本功。我们将给定的一字节二进制数,转换成二十进制(BCD)码。将累加器A的值拆为三个BCD码,并存入RESULT开始的三个单元,例程A赋值#123。实验2:主要让学生了解数值的BCD码和ASCII码的区别,利用查表方法
8、快速地进行数值转换。进一步掌握数值的各种表达方式。现在我们给出一个BCD数,将其转换成ASCII值。如下:将累加器A的值转换为二个ASCII码,并存入Result开始的二个单元,例如A赋值#1AH。三、源程序代码源程序1:RESULTEQU30HORG0000HLJMPSTARTBINTO