单片机原理与应用习题与解答ppt课件

上传人:资****亨 文档编号:145854191 上传时间:2020-09-24 格式:PPT 页数:62 大小:620KB
返回 下载 相关 举报
单片机原理与应用习题与解答ppt课件_第1页
第1页 / 共62页
单片机原理与应用习题与解答ppt课件_第2页
第2页 / 共62页
单片机原理与应用习题与解答ppt课件_第3页
第3页 / 共62页
单片机原理与应用习题与解答ppt课件_第4页
第4页 / 共62页
单片机原理与应用习题与解答ppt课件_第5页
第5页 / 共62页
点击查看更多>>
资源描述

《单片机原理与应用习题与解答ppt课件》由会员分享,可在线阅读,更多相关《单片机原理与应用习题与解答ppt课件(62页珍藏版)》请在金锄头文库上搜索。

1、,.,第三章,3-1 已知A=7AH,R0=30H(30H=A5H),PSW=80H,SP=65H,试分析下面每条指令的执行结果及对标志位的影响。 (1) ADD A,R0;01111010+10100101=1,00011111,(A)=1FH,Cy=1,AC=0,OV=0,P=1 (2)ADD A,#30H;01111010+00110000=10101010, (A)=AAH,Cy=0,AC=0,OV=1,P=0 (3) ADDC A,30H;01111010+10100101+1=1,00100000(A)=20H,Cy=1,AC=1,OV=0,P=1 (4) SUBB A,R0;01

2、111010-10100101-1=1,11010100, (A)=D4H,Cy=1,AC=0,OV=1,P=0,.,(5) DA A;01111010+00000110=10000000, (A)=80H,Cy=0,其它无影响 (6) RLC A;(A)=11110101B=F5H,Cy=0, AC=0,OV=0,P=0 (7)RR A;(A)=00111101B=3DH,Cy=1, AC=0,OV=0,P=1 (8)PUSH 30H;SP=66H,(66H)=A5H (9)POP B;SP=64H,(B)=(65H) (10) XCH A,R0;(A)=A5H,(30H)=7AH,Cy=1

3、,OV=0,AC=0,P=0,.,3-3 已知片内RAM中(30H)=64H,(50H)=04H,片外RAM中(1000H)=0FFH,(2004H)=00H,并且TAB=2000H,试分析顺序执行每条指令的结果。 (1) MOV R0,#30H;(R0)=30H (2) MOV A,R0;(A)=64H (3) MOV DPTR,#1000H;(DPTR)=1000H (4) MOVX DPTR,A;(1000H)=64H (5) MOV A,50H;(A)=04H (6) MOV DPTR,#TAB;(DPTR)=2000H (7) MOVC A,A+DPTR;(A)=00H (8) MO

4、V P1,A;(P1)=00H,.,3-4 试分析在执行完下面的程序段后,A,R0,R1,R7,SP以及片内RAM的一些单元中内容各是什么? MOV SP,#65H MOV R7,#5 MOV R0,#30H MOV R1,#40H LOOP:MOV A,R1 PUSH ACC MOV A,R0 MOV R1,A INCR0 INCR1 DJNZR7,LOOP,.,结果:(A)=(34H), (R0)=34H,(R1)=44H,(R7)=0, SP=70H ,(70H)=(44H),(30H)=(40H),(34H)=(44H)。 3-5 已知SP=62H,(62H)=50H,(61H)=30

5、H,问执行指令RET后,PC=?,SP=?并解释。 答:执行指令RET,从堆栈中弹出地址值给PC,栈指针减2,(62H),(61H)中的内容分别弹出PC=5030H,SP=60H 3-7 试编程求出片外RAM从2000H开始的连续20个单元的平均值,并将结果存入内部RAM20H单元。 MOVDPTR,#2000H ACALL AVG,.,子程序名:AVG 子程序功能:求20个无符号数平均值子程序 子程序入口:(DPTR)=数据区首地址指针 子程序出口:(R3)(R4)=均值 AVG: MOVR2,#20 MOVR3,#00H;部分和高位字节单元清零 MOVR4,#00H;部分和低位字节单元清零

6、 ACALLD-ADD;调用累加和子程序 ACALLD-DIV;调用除以20的子程序 求多字节累加和子程序 子程序名:D-ADD,.,子程序功能:多字节累加和子程序 子程序入口:(DPTR)=数据区首地址指针 子程序出口:(R3)(R4)=累加和,R3中内容为和高字节,R4中内容为和低字节 D-ADD:CLRC LOOP:MOVXA,DPTR ADDA,R4 MOVR4,A CLRA ADDCA,R3 MOVR3,A INCDPTR DJNZR2,LOOP RET,.,双字节除以20的子程序 子程序名:D-DIV 子程序功能:除以20的子程序 子程序入口:(R3)(R4)=被除数 子程序出口:

7、(R3)(R4)=商 D-DIV:MOVR7,#08H;置计数初值 DV1:CLRC MOVA,R4;将(R3)(R4)左移1位 RLCA MOV R4,A MOVA,R3 RLCA MOV 00H,C;将移出的标志位送00H,.,CLRC SUBBA,R2;余数高位减除数 JB00H,GOU;标志位为1够减JNCGOU;无借位,也说明够减 ADDA,R2,不够减,恢复余数 AJMPDV2 GOU:INC R4;够减,商上1 DV2:MOVR3,A DJNZR7,DV1;减完?没完继续 MOV20H,R3;转存20H MOV21H,R4;转存21H RET,.,MOV21H,R4;转存21H

8、RET 商数 除数 被除数 -除数作减法,够减商上1 余数 -除数再作减法,不够减商为0,并恢复减法前的余数 余数 -除数再作减法,直至最后,.,3-9 在外部数据存储区首地址为TABLE的数据表中存有10B的数据,编程将每个字节的最高位置1,并送回原来的单元。 ORG 0030H MOVDPTR,#TABLE MOVR2,#10 LOOP:MOVXA,DPTR SETB ACC.7 MOVXDPTR,A INCDPTR DJNZ R2,LOOP END,.,3-10 编写能延时1s的子程序,设晶振频率为12MHz。 DELAY1S:MOVR6,#4;1T DL1:MOVR5,#251;1T

9、DL2:MOVR4,#248;1T DL3:NOP;1T NOP;1T DJNZR4,DL3;2T DJNZR5,DL2;2T DJNZR6,DL1;2T RET;2T 延时时间:(248 4+1+2) 251+1+2)4+1+2=998995,.,3-12 编程实现:将30H,31H中的双字节二进制数转换为3B压缩BCD码,并存放到40H开始的空间中。 因为(a15a14a1a0)=(02+a15) 2+a14) 2+a0),所以将二进制从最高位逐次左移入BCD码寄存器的最低位,并且每次都实现()2+ai的运算。 双字节16位二进制数存于(R2R3)中,(R4R5R6)为转换完毕的压缩BCD

10、码。 MOVA,30H MOVR2,A MOVA,31H MOVR3,A,.,ACALL BINBCD2 MOV R0,#40H MOVA,R4 MOV R0,A INC R0 MOVA,R5 MOV R0,A INC R0 MOVA,R6 MOV R0,A BINBCD2:CLRA MOVR4,A,.,MOVR5,A MOVR6,A MOVR7,#16 LOOP:CLRC MOVA,R3 RLCA MOVR3,A MOVA,R2 RLCA MOVR2,A MOVA,R6 ADDC A,R6 DAA,.,MOVR6,A MOVA,R5 ADDC A,R5 DAA MOVR5,A MOVA,R4

11、 ADDC A,R4 DAA MOVR4,A DJNZR7,LOOP RET,.,3-13 试编写一个查表程序,求X2(设X50)。X已存于50H单元,X2存入51H和52H单元。 MOVDPTR,#TABLE MOVA,50H MOV R1,A CJNEA,#15,$+3 JNCGO;大于15则转 MOVC A,A+DPTR;查表 MOV51H,A MOV52H,#00H AJMP DONE GO:CLR C MOV A,R1 SUBBA,#15,.,ADDA,DPL MOVDPL,A CLR A ADDC A,DPH MOVA,R1 MOVC A,A+DPTR MOV52H,A DEC D

12、PTR MOVC A,A+DPTR MOV51H,A DONE:RET 3-14 从P1口输入50个带符号数,编程统计其中正数、负数和零的个数,结果分别存入片内RAM30H、31H、32H单元。,.,ORG0030H MOV30H,#00H MOV31H,#00H MOV32H,#00H MOVR5,#50 LOOP:ORL P1,#0FFH MOVA,P1 JZNEXT1 JBACC.7 NEXT2 INC 30H SJMP DONE NEXT1:INC 32H SJMPDONE NEXT2:INC 31H DONE:DJNZ R5,LOOP SJMP $,.,3-17 设计带有两个按键和2

13、个LED显示器的系统,每当按一下S1键,则使LED1点亮、LED2暗,若按一下S2键,则使LED2点亮、LED1暗。绘出相应的电路示意图,并编写相应的程序。 ORG0030H ORLP1,#0FH LOOP1:JNB P1.2,NEXT1 JNBP1.3,NEXT2 AJMPLOOP1 NEXT1:LCALLDL10ms JBP1.2,LOOP1,.,JNB P1.2,$ MOVP1,#FEH AJMPLOOP1 NEXT2:LCALLDL10ms JBP1.3,LOOP1 JNB P1.3,$ MOVP1,#FDH AJMPLOOP1 RET DL10ms: RET,.,第四章 4-1 MC

14、S-51单片机内部有几个定时/计数器?定时/计数器是由哪些专用寄存器组成的? 答:有T0和T1两个定时/计数器;工作方式寄存器TMOD,用于定义T0和T1的工作模式、选择定时/计数工作方式以及启动方式等;控制寄存器TCON,主要用于定时/计数器T0或T1的启停控制,标志定时/计数器的溢出和中断情况。 4-3 定时/计数器有哪几种工作方式?各有什么特点?适用于什么应用场合? 答:有四种工作方式,方式0,13位定时/计数器;方式1,16位定时/计数器;方式2,8位定时/计数器,初值自动重装;方式3,T0运行,而T1停止工作,8位定时/计数器。方式0,1,3需要重装初值,使得定时的时间产生误差,方式

15、2自动重装初值,可精确定时。,.,4-5 设某单片机的晶振频率为12MHz,定时/计数器T0工作于定时方式1,定时时间为20s;定时/计数器T1工作于计数方式2,计数长度为100,请计算T0,T1的初始值,并写出其控制字。 答:T0的初始值 X=2M-fosct/12=216-121062010-6/12=65536-20=65516=0FFECH T1的初始值 X=2M-N=28-100=256-100=156=9CH 控制字为01100001B=61H MOVTMOD,#61H MOVTH0,#0FFH MOVTL0,#0ECH MOVTH1,#09CH MOVTL1,#09CH,.,4-

16、7 试用定时/计数器T1对外部事件计数,要求每计数100,就将T1改成定时方式,控制从P1.1输出一个脉宽为10ms的正脉冲,然后又转为计数方式,如此反复循环。设系统晶振频率为12MHz。 解: (1) T1设置为工作方式1计数,由软件启动 (2) T1 计数方式控制字TMOD=01010000=50H,X1=216-100=65436=FF9CH,TH1=FFH,TL1=9CH T1定时方式控制字TMOD=0001000=10H,X2=216-12106510-3/12=65536-5000=60536=111011001000B=0EC78H ORG0000H SJMPMAIN ORG0030H,.,MAIN:MOV TMOD,#50H MOVTH1,#0FFH MOVTL1,#9CH SETBTR1 STA1:JBCTF1,NEXT1 SJMPSTA1 NEXT1:MOV TMOD,#10H MOVTH1,#0ECH MOVTL1,#78H SETB

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

当前位置:首页 > 高等教育 > 大学课件

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