单片机习题及攻略

上传人:飞****9 文档编号:143143961 上传时间:2020-08-26 格式:PPT 页数:16 大小:61.50KB
返回 下载 相关 举报
单片机习题及攻略_第1页
第1页 / 共16页
单片机习题及攻略_第2页
第2页 / 共16页
单片机习题及攻略_第3页
第3页 / 共16页
单片机习题及攻略_第4页
第4页 / 共16页
单片机习题及攻略_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《单片机习题及攻略》由会员分享,可在线阅读,更多相关《单片机习题及攻略(16页珍藏版)》请在金锄头文库上搜索。

1、习 题(我注意红色标注的去年有过相关题型或者整合)这个习题可以应付差不多三个编程题,都要懂啊。,去年考试的题型: 填空题,去年的填空题就一个题,六个空,就是一段程序,问你运行完之后,各个寄存器的中的额数值,这个要求动指令和运算规则; 简单题:好像是六个吧,有三个是后面三章的,我记得有arm的寻址方式和列举常用的嵌入式系统什么的;还有就是单片机部分的主要是寻址方式,中断类型和中断优先级还有中断命令符神马的。 程序题:好像是2-2个吧,就是自己写代码,大概就是这个PPT上面的题型都会做的话,就应该没问题; 设计题:好像是一道,分好几个小问,主要是靠中断子程序,存储器和IO口扩展已经他们的初始化。还

2、涉及到要画扩展连图(去年有)。这个就看PPT上面的例子吧。我去年这个题基本是放弃的,随便写了些东西。 主要的复习点:我在书上用蓝色的记号笔标记了。看的时候注意着重看一下就行; 祝你好运,傻蛋。,30H addr = len 31H =ARRAY DATA START:MOV R0, #31H MOVR7, 30H CLRA LOOP:ADDA, R0 INCR0 DJNZR7, LOOP MOVR0, A HERE:SJMPHERE,1、已知内部数据存储器中30H单元开始的一个数据区,存放1字节的数组长度,其后依次存放单字节数组元素。编程求这组无符号数的和,结果在数组后存放,假设和不大于255

3、.,External RAM BLOCK1 Internal RAM BLOCK2 LEN = #30H START:MOVDPTR, #BLOCK1 MOVR0, #BLOCK2 MOVR1, #30H LOOP:MOVXA, DPTR MOVR0, A INCDPTR INCR0 DJNZR1, LOOP SJMP$,2、把外部数据存储器中首地址为BLOCK1的数据区传送到内部数据存储器BLOCK2开始的区域,长度为30H。,3、已知2个多字节BCD数,按照低位在前的顺序分别存放在内部数据存储器的30H和50H开始的地址单元中,字节长度在2FH单元。求两数的和,存于30H开始的单元中,仍按

4、低位在前。注意最高位进位处理。,BCD 30H 50H 30H 1LEN = (2FH) START:MOVR0, #30H MOVR1, #50H MOVR2, 2FH CLRC LOOP:MOVA, R0 ADDC A, R1 DAA MOVR0, A INCR0 INCR1,DJNZR2, LOOP (DJNZ2FH, LOOP) CLRA ADDCA, #0 (MOVACC.0, C) MOVR0, A HERE: SJMPHERE 12H 34H + 56H 78H,4、使用位操作指令实现逻辑操作:(1)设RES为内部数据存储器中的一个位地址:RES = (/10H P1.0) 11

5、H CY(这个去年也有,只不过是想给框图,自己写出逻辑运算表达式,然后再写代码),START: MOVF0, C MOVC, P1.0 ORLC, /10H ; () ANL C, 11H ORLC, F0 MOVRES, C HERE: SJMP HERE,(2) P1.5 = ACC.2 P2.7 ACC.1 P2.0,START:MOVC, ACC.2 ANLC, P2.7 MOVF0, C ; SAVE MOVC, ACC.1 ANLC, P2.0 ORLC, F0 MOVP1.5, C HERE:SJMP HERE,5、编写程序查找在内部RAM的20H到50H地址内00H出现的次数,

6、将结果存入51H中。(去年有个类似的编程题,好像是比较大小排序什么的,就是这种类型的),START: MOVR0, #20H; 首地址 MOVR1, #31H; 个数 CLRA LOOP: CJNER0, #0, NEXT INCA; 计数 NEXT: INCR0 DJNZR1, LOOP; 循环 MOV51H, A HERE: SJMPHERE,5、另一种方法:,START:MOVR0, #20H; 首地址 MOVR2, #31H; 个数 MOV51H, #0; 计个数 LOOP:MOVA, R0 JNZNEXT; =0? INC51H NEXT:INCR0 DJNZR2, LOOP; 循环

7、 HERE:SJMPHERE,6、编程求内部RAM20H和21H地址中两个有符号数的差的绝对值|(20H)(21H)|,将结果存在A中。若计算中出现溢出,则将PSW中的F0位置1,否则置0。,START:CLRC MOVA, 20H; 被减数 SUBBA, 21H; (20H)(21H) JBPSW.2, OVER ; OV=1, 溢出 JNCHERE; CY=0, 正数 CPLA; 负数,取反 INCA; 加1,得到绝对值 HERE:SJMPHERE OVER:SETBF0 SJMPHERE,7、外部RAM中有首地址SOURCE开始的长度为LEN的数据块,要求将该数据区传送到内部RAM以DE

8、ST地址开始的区域,直到遇见字符“”(“”也传送),或整个字符串传送完毕。,START:MOVDPTR, #SOURCE;首地址 MOVR7, #LEN;长度 MOVR0,#DEST;目的地址 LOOP:MOVX A,DPTR;取数 MOVR0,A INCR0 INCDPTR CJNEA,$,NEXT;结束条件1 HERE:SJMPHERE NEXT:DJNZR7,LOOP;结束条件2 SJMPHERE,8、内部RAM区中从BLOCK地址开始有1个正数数据区,其中的数据为无序排列以-1作结束标志。编程找出数据区中的最小数。,START:MOVR0, #BLOCK ;首地址 MOV30H,#7F

9、H ;MAX初值127 LOOP:CJNE R0,#0FFH,CONT ;=-1? SJMPDONE ;=-1,结束 CONT:MOVA,R0 CLRC SUBB A,30H ;比较 JNCNEXT MOV30H,R0 ;较小,存 NEXT:INCR0 SJMPLOOP DONE:SJMPDONE,AGAIN:MOV R2, #10; TIMER:MOV TMOD,#01;T0定时,方式1 MOV TH0,#3CH;=100ms定时 MOV TL0,#0B0H; CLR ET0 ;禁止T0中断 SETB TR0 ;启动定时 WAIT: JBC TF0,OK ;等待定时到 SJMP WAIT;,

10、OK: DJNZ R2,TIMER;到1秒吗? SETB C MOV P1.0,C ;先写1,再读取 MOV C,P1.0 JC ADD30H INC 31H AJMP AGAIN ADD30H:INC 30H AJMP AGAIN,9、每隔1S读一次P1.0引脚信号,若为1,则将内部RAM的 30H单元加1,否则将31H单元加1。设振荡频率为6MHz,用定时器与软件计数结合的方法实现此功能。,10、在内部RAM的VAL单元有二进制数x,计算y,结果存入RES.(去年有这个类型的,只不过函数没这么复杂),START:MOV A, VAL CLR C SUBB A, #20 JC BR1 ;=2

11、0 AJMP DONE BR1: MOV A,VAL MOV B,#04 MUL AB ;4*x MOV RES,A;存 MOV A,VAL,SUBB A,#5 JC DONE ;5,JMP BR2: MOV A,RES ;C=0 SUBB A,#08 ;4*x-8 MOV RES,A DONE: SJMP DONE,方法1:用SUBB,START:MOV A,VAL CJNE A,#20,BR0;=20? BR0: JC BR1 ;=20 AJMP DONE BR1: CJNE A,#5,BR2 BR2: CLR F0 JC BR3 SETB F0 BR3: MOV A,VAL MOV B,#4 MUL AB,MOV RES,A JNB F0,DONE;5 BR4:MOV A,RES SUBB A,#08 ;4*x-8 MOV RES,A DONE:SJMP DONE,方法2:用CJNE,2014.5,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > IT计算机/网络 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号