单片机实验报告.docx

  1. 1、本文档共41页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一 实验题目: 试编写一段程序,其功能为将21H单元的内容8位分别依次存放到从22H开始的8单元中。 keil代码: org 0000h jmp start org 0100h start: mov 21h,#8; mov A ,21h;取出21中的数 mov R0,#22h ;初始化 mov R1,#7h ;循环次数为7 loop: RRC A;把A之中的最低位移到C JC real;判断C里面是数是否为1,如果是1.则跳转到real mov @R0,#0h jmp kk; real: mov @R0,#1h;如果是1,则将1赋到R0单元里 kk: INC r0;依次判断A中的每一位 DJNZ R1,loop; jmp $;死循环 end 实验截图: 实验小结: 这是我们单片机的第一个实验,因为刚接触,所以会感觉很陌生,内心有一种畏惧感,看到题目的时候也是没有头绪,可以说完全是不知道到底题目是一个什么意思,更是不知道我们应该如何编写程序。不过后面通过老师的讲解,自己也去查看了一些有关的书籍,慢慢也理解了该如何去实现这种实验题目。 在认真琢磨之后,我开始学会像以前刚开始学习C语言一样慢慢绘制一个程序的流程图,理清思绪,然后根据流程图编写相应的代码。 下面是本题的实验流程图: 通过完成这个实验,我对单片机的程序有了很大的认识。实验中,也是深刻的理解到了一个单片机程序每一步的实现与运行。当然,也掌握了在keil中调试的方法。 实验二 实验题目: 若0-5号键的键值分别是:EEH、DEH、BEH、7EH、EDH、DDH。设键值存放在内部RAM 20H单元中,编程实现根据2OH中的键值分别使程序转移到PR0-PR4程序段。要求当以上程序段的功能完成后,都采用RET指令,指定返回到程序的初始入口START标号处。 要求:PR0 :教材75页习题。 PR1 :同上 习题9题 PR2:同上 习题10 其余入口,只需完成空操作就返回。 keil代码: org 0000 ljmp start org 0100 TAB: DB 0EEH,0DEH,0BEH,7EH,0EDH,0DDH start: mov dptr ,#start push dpl push dph mov A,#0EEH MOV 20H,A MOV DPTR ,#TAB ;置键码表首址 MOV A,#0 ;表的起始位置的偏移量为零 NEXT: PUSH ACC;先保存A寄存器中的值 MOVC A,@A+DPTR ;A是键码表的编码 CJNE A,20H,NEXT1 ;将20H值和键码表的值比较 POP ACC RL A ;如相等,序号乘以2,得到分支表内偏移量2n (8位变16位) MOV DPTR,#APJ ;置分支表首址 JMP @A+DPTR ;执行表JPT+2H中的AJMP PRn指令 NEXT1: POP ACC ;不相等,则比较下一个 INC A CJNE A,#6,NEXT;表示如果==6了,说明编码查完了也没有相等的 ,程序直接结束 SJMP $ APJ: AJMP PR0 AJMP PR1 AJMP PR2 AJMP PR3 AJMP PR4 PR0: MOV R7,#5H MOV 3DH,#00H MOV 3EH,#20H MOV 4EH,#88H MOV 5EH,#98H MOV A,#0 MOV R4,A ;正数个数 MOV R5,A ;负数个数 MOV R6,A ;零的个数 MOV R0,#40H MOV R1,#50H MOV SP,#3FH LOOP: POP ACC JZ ZERO JB ACC.7,FS INC R4 MOV @R0,A INC R0 AJMP DJ FS: INC R5 MOV @R1,A INC R1 AJMP DJ ZERO: INC R6 DJ: DJNZ R7,LOOP RET DATA1:DB 0EFH,3FH,3EH,07H PR1: MOV R7,#03H;进行3次循环 MOV R0,#DATA1 MOV A,@R0 CPL A ;取反 ADD A,#01 ;加1 MOV @R0,A AB1: INC R0 MOV A,@R0 CPL A ADDC A,#0 ;带进位 DJNZ R7,AB1 ;SJMP $ RET BUF1:DB 1111B,0101B,0010B,0100B,0101B,0010B,0001

文档评论(0)

a13355589 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档