单片机习题及攻略ppt课件_第1页
单片机习题及攻略ppt课件_第2页
单片机习题及攻略ppt课件_第3页
单片机习题及攻略ppt课件_第4页
单片机习题及攻略ppt课件_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

习题(我注意红色标注的去年有过相关题型或者整合)这个习题可以应付差不多三个编程题,都要懂啊。,1,去年考试的题型:填空题,去年的填空题就一个题,六个空,就是一段程序,问你运行完之后,各个寄存器的中的额数值,这个要求动指令和运算规则;简单题:好像是六个吧,有三个是后面三章的,我记得有arm的寻址方式和列举常用的嵌入式系统什么的;还有就是单片机部分的主要是寻址方式,中断类型和中断优先级还有中断命令符神马的。程序题:好像是2-2个吧,就是自己写代码,大概就是这个PPT上面的题型都会做的话,就应该没问题;设计题:好像是一道,分好几个小问,主要是靠中断子程序,存储器和IO口扩展已经他们的初始化。还涉及到要画扩展连图(去年有)。这个就看PPT上面的例子吧。我去年这个题基本是放弃的,随便写了些东西。主要的复习点:我在书上用蓝色的记号笔标记了。看的时候注意着重看一下就行;祝你好运,傻蛋。,2,30Haddr=len31H=ARRAYDATASTART:MOVR0,#31HMOVR7,30HCLRALOOP:ADDA,R0INCR0DJNZR7,LOOPMOVR0,AHERE:SJMPHERE,1、已知内部数据存储器中30H单元开始的一个数据区,存放1字节的数组长度,其后依次存放单字节数组元素。编程求这组无符号数的和,结果在数组后存放,假设和不大于255.,3,ExternalRAMBLOCK1InternalRAMBLOCK2LEN=#30HSTART:MOVDPTR,#BLOCK1MOVR0,#BLOCK2MOVR1,#30HLOOP:MOVXA,DPTRMOVR0,AINCDPTRINCR0DJNZR1,LOOPSJMP$,2、把外部数据存储器中首地址为BLOCK1的数据区传送到内部数据存储器BLOCK2开始的区域,长度为30H。,4,3、已知2个多字节BCD数,按照低位在前的顺序分别存放在内部数据存储器的30H和50H开始的地址单元中,字节长度在2FH单元。求两数的和,存于30H开始的单元中,仍按低位在前。注意最高位进位处理。,BCD30H50H30H1LEN=(2FH)START:MOVR0,#30HMOVR1,#50HMOVR2,2FHCLRCLOOP:MOVA,R0ADDCA,R1DAAMOVR0,AINCR0INCR1,DJNZR2,LOOP(DJNZ2FH,LOOP)CLRAADDCA,#0(MOVACC.0,C)MOVR0,AHERE:SJMPHERE12H34H+56H78H,5,4、使用位操作指令实现逻辑操作:(1)设RES为内部数据存储器中的一个位地址:RES=(/10HP1.0)11HCY(这个去年也有,只不过是想给框图,自己写出逻辑运算表达式,然后再写代码),START:MOVF0,CMOVC,P1.0ORLC,/10H;()ANLC,11HORLC,F0MOVRES,CHERE:SJMPHERE,6,(2)P1.5=ACC.2P2.7ACC.1P2.0,START:MOVC,ACC.2ANLC,P2.7MOVF0,C;SAVEMOVC,ACC.1ANLC,P2.0ORLC,F0MOVP1.5,CHERE:SJMPHERE,7,5、编写程序查找在内部RAM的20H到50H地址内00H出现的次数,将结果存入51H中。(去年有个类似的编程题,好像是比较大小排序什么的,就是这种类型的),START:MOVR0,#20H;首地址MOVR1,#31H;个数CLRALOOP:CJNER0,#0,NEXTINCA;计数NEXT:INCR0DJNZR1,LOOP;循环MOV51H,AHERE:SJMPHERE,8,5、另一种方法:,START:MOVR0,#20H;首地址MOVR2,#31H;个数MOV51H,#0;计个数LOOP:MOVA,R0JNZNEXT;=0?INC51HNEXT:INCR0DJNZR2,LOOP;循环HERE:SJMPHERE,9,6、编程求内部RAM20H和21H地址中两个有符号数的差的绝对值|(20H)(21H)|,将结果存在A中。若计算中出现溢出,则将PSW中的F0位置1,否则置0。,START:CLRCMOVA,20H;被减数SUBBA,21H;(20H)(21H)JBPSW.2,OVER;OV=1,溢出JNCHERE;CY=0,正数CPLA;负数,取反INCA;加1,得到绝对值HERE:SJMPHEREOVER:SETBF0SJMPHERE,10,7、外部RAM中有首地址SOURCE开始的长度为LEN的数据块,要求将该数据区传送到内部RAM以DEST地址开始的区域,直到遇见字符“”(“”也传送),或整个字符串传送完毕。,START:MOVDPTR,#SOURCE;首地址MOVR7,#LEN;长度MOVR0,#DEST;目的地址LOOP:MOVXA,DPTR;取数MOVR0,AINCR0INCDPTRCJNEA,$,NEXT;结束条件1HERE:SJMPHERENEXT:DJNZR7,LOOP;结束条件2SJMPHERE,11,8、内部RAM区中从BLOCK地址开始有1个正数数据区,其中的数据为无序排列以-1作结束标志。编程找出数据区中的最小数。,START:MOVR0,#BLOCK;首地址MOV30H,#7FH;MAX初值127LOOP:CJNER0,#0FFH,CONT;=-1?SJMPDONE;=-1,结束CONT:MOVA,R0CLRCSUBBA,30H;比较JNCNEXTMOV30H,R0;较小,存NEXT:INCR0SJMPLOOPDONE:SJMPDONE,12,AGAIN:MOVR2,#10;TIMER:MOVTMOD,#01;T0定时,方式1MOVTH0,#3CH;=100ms定时MOVTL0,#0B0H;CLRET0;禁止T0中断SETBTR0;启动定时WAIT:JBCTF0,OK;等待定时到SJMPWAIT;,OK:DJNZR2,TIMER;到1秒吗?SETBCMOVP1.0,C;先写1,再读取MOVC,P1.0JCADD30HINC31HAJMPAGAINADD30H:INC30HAJMPAGAIN,9、每隔1S读一次P1.0引脚信号,若为1,则将内部RAM的30H单元加1,否则将31H单元加1。设振荡频率为6MHz,用定时器与软件计数结合的方法实现此功能。,13,10、在内部RAM的VAL单元有二进制数x,计算y,结果存入RES.(去年有这个类型的,只不过函数没这么复杂),14,START:MOVA,VALCLRCSUBBA,#20JCBR1;=20AJMPDONEBR1:MOVA,VALMOVB,#04MULAB;4*xMOVRES,A;存MOVA,VAL,SUBBA,#5JCDONE;5,JMPBR2:MOVA,RES;C=0SUBBA,#08;4*x-8MOVRES,ADONE:SJMPDONE,方法1:用SUBB,15,START:MOVA,VALCJNEA,#20,BR0;=20?BR0:JCBR1;=20AJMP

温馨提示

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

评论

0/150

提交评论