微处理器实验报告_第1页
微处理器实验报告_第2页
微处理器实验报告_第3页
微处理器实验报告_第4页
微处理器实验报告_第5页
已阅读5页,还剩13页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

微处理器试验汇报试验1熟悉并使用传送类指令题3.模仿test1.Asm循环结构,编写多字节数据传送程序,把内部RAM30H--39H单元置为10H-19H,然后传送到外部RAM0100H--0109H单元。提醒:(1)用存放器作内部RAM指针,用DPTR作外部RAM指针。(2)设置内部RAM30H--39H单元值为10H-19H:解:程序以下:ORG0000HAJMPSTARTORG0100HSTART:MOVR1,#10HMOVDPTR,#0100HMOVR2,#0AHLOOP:MOVA,@R1MOVX@DPTR,AINCR1INCDPTRDJNZR2,LOOPNOPSJMP$END运行结果以下列图所表示:在memory1中,在Address控件填上D:0x30,可查看内部RAM30h单元开始值,将30h-39h置为10h-19h。试验2:熟悉并使用算术逻辑操作类指令题2.编写程序,将6位压缩BCD码123456与6位BCD码567890相加,结果仍用BCD码表示。第一组BCD码放在30H开始连续内部存放器单元内,第二组BCD码放在40H开始连续内部存放器单元内,相加结果放在50H开始连续内部存放器单元内。解:程序以下:ORG0000HAJMPSTARTORG0100HSTART: MOV30H,#56H MOV31H,#34H MOV32H,#12H MOV40H,#90H MOV41H,#78H MOV42H,#56H MOVR0,#30H MOVR1,#40H MOVR2,#03H MOVR3,#50HLOOP: MOVA,@R0 ADDA,@R1 DAA MOV@R1,A INCR0 INCR1 INCR3 DJNZR2,LOOPNOPSJMP$ END运行结果以下:试验3:次序程序设计:拆字和拼字题1.拆字程序69H存放在片外RAM中0200H地址上。编写程序,将69H拆开,高位6送0201H地址低位,低位9送0202H地址低位;0201H、0202H地址高位清零,如图所表示:片外RAM片外RAM片外RAM0201H0200H69H0201H0200H0202H0202H06H09H解:程序以下:ORG0000H AJMPSTARTORG0100HSTART: MOVDPTR,#0200H MOVXA,@DPTR MOVB,A SWAPA ANLA,#0FH INCDPTR MOVX@DPTR,A INCDPTR MOVA,B ANLA,#0FH MOVX@DPTR,ALOOP:SJMPLOOPEND运行结果以下:题2.拼字程序分别编写汇编语言程序和C程序,把片内RAM30H、31H两个字节低位分别送入32H高位和低位,过程与拆字程序相反。假设(30H)=12H,(31H)=34H,运行程序后(32H)=24H提醒:使用逻辑或ORL指令,比如10H和02H相或,结果为12H解:程序以下:ORG0000HAJMPSTARTORG0100HSTART: MOVA,30H ANLA,#0FH SWAPA MOVB,31H ANLB,#0FH ORLA,B MOV32H,ALOOP:SJMPLOOPEND运行结果以下:该程序C51程序以下:#include<reg51.h>#include<absacc.h>voidmain(){ DBYTE[0x30]=0x12; DBYTE[0x31]=0x34; DBYTE[0x030]&=0x0f; DBYTE[0x030]<<=4; DBYTE[0x031]&=0x0f; DBYTE[0x32]=DBYTE[0x030]+DBYTE[0x031];}运行结果以下:试验4:分支和循环程序设计题1.分支程序设计:(1)有两个8位无符号数NA、NB分别存放在内部RAM40H,41H单元,当NA<NB时,将内部RAM42H单元置为0x88;当NA>=NB时将该单元置0xff。源程序以下。请画出该程序流程图,并比较汇编语言和C51程序编写不一样。开始汇编语言程序:开始ORG0000H40HNA41HNBAJMPSTART40HNA41HNBORG0100HNA<NBSTART:NA<NBMOVA,40H NCJNEA,41H,LOOP1AJMPLOOP2Y(42H)0X88LOOP1:(42H)0X88(42H)0XFFJCLOOP3(42H)0XFFLOOP2:MOV42H,#0FFHAJMPLOOPLOOP3:MOV42H,#88HLOOP:AJMPLOOPENDC51程序以下:#include<reg51.h>

#include<absacc.h>

voidmain()

{unsignedcharna,nb,f;

na=DBYTE[0x0040];

nb=DBYTE[0x0041];if(na<nb)f=0x88;elsef=0xff;DBYTE[0x0042]=f;}解:流程图如上。整体上看,汇编程序使用了多重循环,而C程序只应用了选择结构语句,显得愈加简练。(2)修改上汇编语言程序,实现两个16位无符号数比较:当NA<NB时,将内部RAM42H单元置为0x88;不然,当NA>=NB时将该单元置0xff。NA、NB分别存放在内部RAM40H,41H及50H,51H单元。解:程序以下:ORG0000HAJMPSTARTORG0100HSTART:MOVA,40HCJNEA,41H,LOOP1AJMPLOOP2LOOP1:JCLOOP3LOOP2:MOV42H,#0FFHAJMPLOOPLOOP3:MOV42H,#88HLOOP:AJMPLOOPEND运行结果以下:题2.循环程序设计(1)在片内RAM10H单元存放一个8位无符号二进制数,要求将其每一位转换成对应ASCII码,并以高位在前,低位在后次序依次存放到片内RAM以11H单元为首连续单元中,编制对应程序。分析:用带进位循环左移指令RLC,经过对C标志判断,可知该位为1还是0。解:该程序C51程序为:#include"reg51.h"#include"absacc.h"voidmain(){ intj; unsignedchari; unsignedcharpoint=0x11; for(i=0x01,j=0;j<8;i<<=1,j++) { if(DBYTE[0x10]&i) { DBYTE[point]=31; }else { DBYTE[point]=30; } point++; }} 运行结果以下:题3.选做:编写程序,从内部RAM40H为起始地址10个无符号数中分别找出最大值和最小值并保留。解:程序以下:ORG0000HAJMPSTARTORG0100HSTART: MOVR2,#0AH MOVR0,#40HMOVA,@R0 MOV51H,@R0 MOV 52H,@R0 INCR0LOOP0: CJNEA,51H,LOOP1 MOV51H,ALOOP1: JCLOOP2 MOV51H,A LOOP2: INCR0 MOVA,@R0DJNZR2,LOOP0LOOP:AJMPLOOPEND程序运行结果以下:五.试验收获四次微处理器试验,让我获益颇多。现在回想起来,每次程序调试成功喜悦似乎还未淡去。首先,此次试验最主要也是最基本收获,就是我很好了解了KeilC51这个单片机应用开发集成环境。经过编写一些简单汇编及C程序,深入了解C51单片机运作方式和内部改变情况。实践与理论结合,让我在学习《单片机原理与接口技术》时能够融会贯通,对书上程序有了更深

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论