单片机复习资料_第1页
单片机复习资料_第2页
单片机复习资料_第3页
单片机复习资料_第4页
单片机复习资料_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

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

文档简介

试卷构成分析以及试题来源试卷构成:共十道题100分1、简答题(4*10=40分)来源:实验报告最后的思考题课堂测验的小纸条上的简答题主要答案在书上均可以查找到2、程序题(4*8+2*14=60分)小程序题共4题32分,来源于实验中子程序或者中断程序实现某一功能还有就是课堂测验中的小程序。大题为完整的写出两段程序,主要来源实验程序。单片机辅导内容1、AT89S51的并行I/O口P0、P1、P2、P3口的使用

需要注意的是,P0口在使用的时候必须接上拉电阻,P3口具有第二功能定义,应熟记。P3.0RXD

(串行数据输入口)

P3.1TXD

(串行数据输出口)

P3.2INT0(外部中断0)

P3.3INT1(外部中断1)

P3.4T0(定时器/计数器0外部输入)

P3.5T1(定时器/计数器1外部输入)

P3.6WR(外部数据存储器写脉冲)

P3.7RD

(外部数据存储器读脉冲)在程序中怎样给I/O口赋值

比如我要点亮一个LED(接P1.1口),该怎样编写程序:

汇编:MOVA,0%低电平驱动MOVP1.1,A(A在这里相当于一个寄存器使用)C语言:P1.1=0;(需要注意在程序开头加这样一句sbitP1.1,P1^1)这样的话就比汇编语言要简洁一些了。当然注意I/O口都是八个口,我要用多个口怎么办?同学们自己思考,例如我要点亮8位LED数码管该怎么办?指令的寻址寄存器寻址:MOVA,Rn(把Rn的值给A)直接寻址:MOVA,40H(把40H里的内容给A)

寄存器间接寻址:MOVA,@Ri(i=0或1)把Ri里的内容内容给A立即数寻址:MOVA,#40H(把40H给A)基址寄存器加变址寄存器间接寻址:MOVCA,@A+DPTRMOVCA,@A+PC

(查表法相对寻址:SJMPrelSJMPLOOOP位寻址:MOVC,bit堆栈操作指令PUSH:这条指令的功能是,首先将栈指针SP加1,然后把direct(操作数的地址)中的内容送到栈指针SP指示的内容RAM单元中。例:当(SP)=60H,(A)=30H,(B)=70H时,执行下列指令PUSHAcc;(SP)+1=61HSP,(A)61HPUSHB;(SP)+1=62HSP,(B)62HPOP:这条指令的功能是,将栈指针SP指示的栈顶(内部RAM单元)内容送入direct字节单元中,栈指针SP减1.例:当(SP)=62H,(62)=70H,(61H)=30H时,执行下列指令POPDPH;((SP))DPH,(SP)-1SPPOPDPL;((SP))DPL,(SP)-1SP特殊说明:PUSHAccPOPAcc这里只能用Acc具体的应用:保护寄存器中的数值例如:LOOP:PUSHR2PUSHAINCR2DECAMOVR3,AMOVR4,R2POPAPOPR2这样做了以后R2和A的值并没有改变

关键字查找程序设计例:从50个字节的无序表中查找一个关键字“31H”并放入51H.ORG0000HMAIN:MOVR1,#50MOVR2,#31HMOVDPTR,#TABLEMOVA,#0LOOP:PUSHAMOVCA,@A+DPTRMOVR4,APOPAINCADJNZR1,L1RETL1:CJNER4,R2,LOOPMOV51H,R4TABLE:DB39H78H78H……..数据极值查找片内RAM中存放一批数据(40个),查出最大值并存放在首地址中。设R0存放在首地址,R2中存放字节数。ORG0000HMAIN:MOVR2,#40HMOVA,R0MOVR1,AMOVA,@R1;取第一个地址里的内容LOOP:MOVR4,AINCR1CLRCMOVR3,@R1;取下一个地址里的内容SUBBA,R3;相减比较JNCLOOP1;C等于0,A中数值较大MOVA,R3;C=1,R3较大,送ALOOP1:MOVA,R4;保存A,以便下一次比较LOOP2:DJNZR2,LOOPMOV@R0,ARET测试字符长度一串字符,依次存放在内部RAM从30H单元开始的连续单元中,字符串以0AH为结束标志,测试字符串长度。MOV R4,#0FFH ;长度计数器初值送R4 MOVR1,#2FH ;字符串指针初值送R1NEXT:

INC R4 INC R1 CJNE@R1,#0AH,NEXT;比较,不等比较下一个 END50ms延时程序DELAY:MOVR7,#200;1usD1:MOVR6,#125;1usD2:DJNZR6,D1;2us*125=250usDJNZR7,D1;2us*200=500usRET;2us单指令执行的时间约为1us,所以可以通过计算得到比较准确的时间。所以总时间为1+(1+250+2)*200+2=50.603ms单个发光二极管闪烁ORG0000HSTART:SETBP1.5LCALLDELAY1SCPLP1.5LCALLDELAY1SAJMPSTARTDELAY1S: MOVR5,#10 D1:MOVR6,#20 D2:MOVR7,#250 DJNZR7,$ DJNZR6,D2 DJNZR5,D1RETEND;主程序voidmain(){ while(1){ p1_5=0; delay(); p1_5=1; delay(); }};头文件#include<reg52.h>sbitp1_5=P1^5;;延时子程序:

voiddelay(void){unsignedinti,j;for(i=100;i>0;i--){ for(j=110;j>0;j--);}}单个发光二极管闪烁C语言12例如:上题在数码管中循环显示0-9

汇编程序:ORG0000HMAIN:MOVDPTR,#TABLEMOVR1,#0LOOP:MOVA,R1MOVCA,@A+DPTRMOVP2,ACALLDELAYINCR1CJNER1,#0AH,LOOPMOVR1,#0LJ

温馨提示

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

评论

0/150

提交评论