《《单片机原理及应用》部分习题答案(共20页).doc》由会员分享,可在线阅读,更多相关《《单片机原理及应用》部分习题答案(共20页).doc(20页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上单片机原理及应用习题参考答案 主 编: 田亚娟 编 写 组:单片机原理及应用精品课程组单 位:广东松山职业技术学院电气工程系日 期:2008年12月第1章 绪 论1-1.(1)9AH,154;6.375,6.6H (2)1100.011B,0C.6H;.111B,7F.EH(3)B,183;.1000B;1007.51-2.(1)+原+反+补 (2)-原 -反 -补 (3)+原+反+补 (4)-原 -反 -补1-3.(1)(0100 0111)BCD (2)(0110 1000)BCD (3)(0001 1001 1000 0110. 0111)BCD (4)(000
2、1 1001 0110 1001)BCD1-41-7略。第2章 MCS-51单片机的结构和原理2-12-2、2-42-5、2-7、2-92-13、略。2-3. 答:程序状态标志寄存器PSW是一个8位可编程并可按位寻址的专用寄存器,用来存放当前指令执行结果的有关状态信息,位于特殊功能寄存器区,地址是0D0H。其各位定义如下:D7 D6 D5 D4 D3 D2 D1 D0CYACF0RS1RS0OVPCY(PSW.7):进位标志。累加器A的最高位有进位或借位时,硬件自动使该位置位(即CY=1),否则该位清零。AC(PSW.6):辅助进位标志。当进行加法或减法操作时,若累加器的D3位向D4位有进位或
3、借位时,则硬件自动将其置位,否则该位清零。F0(PSW.5):用户通用状态标志。用户可对该位置位或清零,也可用软件测试该位的状态以控制程序的流向。RS1(PSW.4)和RS0(PSW.3):工作寄存器组选择控制位,用户通过指令对RS1和RS0的状态设置,可以选择相应的工作寄存器组。OV(PSW.2):溢出标志。当有符号数加法或减法运算结果超出(-128+127)范围时,说明计算结果已经溢出,此时该位将由硬件自动置位(即OV=1),否则清零。PSW.1:保留位。也可作为用户自行定义的状态标志位,其用法与PSW.5相同。P(PSW.0):奇偶标志位。每个指令周期由硬件按累加器A中值为“1”的个数的
4、奇偶性自动置位或清零。若A中有奇数个“1”,则P置位,否则清零。2-6. 答:不能。因为在这种情况下,系统要进行扩展ROM。P0口和P2口作为专用端口使用。P0口分时作为低8位地址的输出口和数据输入输出口。P2口作为高8位地址输出口。2-8. 答:00H7FH为8051的片内RAM的空间。00H1FH是通用寄存器区,共32个单元分成0,1,2,3四个区,每个区的8个单元都用R0R7来表示。20H 2FH共16个单元是位寻址区,每个单元的每一位都有它自己的位地址。30H7FH是堆栈和数据缓冲区。可用来对运算结果等中间数据暂时保存和有关的数据堆栈。我们把内部RAM中字节地址00H7FH与位地址00
5、7F完全重合的现象,称为地址重叠现象,MCS-51指令系统提供了不同的访问指令和寻址方式来解决这种地址重叠现象。CPU在对位寻址单元进行位操作时,设置有专用的位操作指令。第3章 MCS-51单片机的指令系统3-13-5略3-6. E5 30 MOV A,30H (A)(30H)74 42 MOV A,#42H (A)85 38 74 MOV 74H,38H (74H)(38H)78 50 MOV R0,#50H (R0)50H26 ADD A,R0 (A)(A)+(R0)D2 12 SETB 12H (12H)01H3-7. MOV A,30H ;直接寻址方式,将内部RAM的30H单元的内容传
6、送;给累加器AMOV A,#30H ;立即寻址方式,将立即数30H传送给累加器AMOV 31H,R0 ;寄存器寻址方式,将寄存器R0的内容传送到31H单元MOV 31H,R0 ;寄存器间接寻址,将寄存器R0所指的地址单元的内容;传送到31H3-8.(1)R0的内容送R1。MOV A, R0MOV R1,A(2)外部RAM 40H单元的内容送内部RAM 40H单元。MOV R0,#40HMOVX A,R0MOV 40H,A(3)外部RAM 7E00H单元内容送内部RAM R0。MOV DPTR,#7E00HMOV A,DPTRMOV R0,A(4)外部ROM 7E00H单元内容送内部RAM 20
7、H单元。 MOV DPTR,#7E00H MOV A,#00H MOVC A,A+DPTR MOV 20H,A(5)外部ROM 7E00H单元内容送外部RAM 20H单元。 MOV DPTR,#7E00H MOV A,#00H MOVC A,A+DPTR MOV R0,#20H MOVX R0,A(6)外部RAM 2000H单元内容送外部RAM 1000H单元。MOV DPTR,#2000HMOVX A,DPTRMOV DPTR,#1000HMOVX DPTR,A3-9. (R0)=42H,(42H)=08H,(A)=80H,(50H)=80H3-10. MOV A,#192ADD A,#88
8、HMOV 30H,AMOV A,#00HADDC A,#00HMOV 31H,A3-11. A=57H Cy=1;A=3BH Cy=03-12. (20H)=00H (A)=00H Cy=1; 取消DA后:(20H)=9AH (A)=9AH Cy=03-13. rel=0F75H-0F46H=2FH3-14. 与操作结果为:00H 或操作结果为:FFH 异或操作结果:FFH3-15. C=1 P1=BBH P3=3CH第4章 MCS-51单片机的程序设计4-1. ORG 0000H CLR C MOV A,50H MOV B,#10MUL ABMOV 53H,BADD A,51HMOV 52H
9、,AMOV A,53HADDC A,#0MOV 53H,AEND4-2. ORG 0000HMOV R7,#30MOV R6,#0MOV R5,#0MOV R4,#51HMOV R3,#71HMOV R0,#20HMAIN:MOV A,R0JB ACC.7,MAIN1INC R6MOV R1,R4MOV R1,AAJMP LOOPMAIN1:INC R5MOV R1,R3MOV R1,ALOOP:DJNZ R7,MAINMOV 50H,R6MOV 70H,R5END4-3. ORG 0000HCLR CMOV R7,#4MOV R6,#3MOV R0,#DATA+4MOV R1,#DATAMO
10、V A,R0JNB ACC.7,END0LP: MOV A,R1CPL AMOV R1,AINC R1DJNZ R7,LPMOV A,R0SETB ACC.7MOV R0,AMOV R1,#DATAMOV A,R1ADD A,#1MOV R1,ALP1:INC R1MOV A,R1ADDC A,#0MOV R1,ADJNZ R6,LP1END0:SJMP $END4-4. ORG 0000HMAIN:MOV DPTR,#4000HMOV R7,#50CLR ALOOP:MOVX DPTR,AINC DPTRDJNZ R7,LOOPEND4-5. ORG 0000H CLR C MOV R0,#
11、DATA0 MOV A,R0 JZ MAIN0 JNB ACC.7,MAIN1 SUBB A,#5 SJMP MAIN0MAIN1:ADD A,#5MAIN0: MOV DATA2,A END4-6. ORG 0000H MAIN:MOV R0,#55H MOV A,60H CLR C SUBB A,#30H JC MAIN1 MOV A,60H SUBB A,#3AH JNC MAIN1 MOV R0,#00HMAIN1:MOV 62H,R0 END4-7. ORG 0000HSTADA DATA 20HSLANG DATA 1FHCMCRQ:MOV R0,#STADA MOV B,#00H
12、CRLP1:MOVX A,40 CJNE A,#0DH,CRNEXT MOV SLANG,B SJMP $CRNEXT:INC B INC R0 SJMP CRLP1 END4-8. ORG 0000HMAIN:MOV R0,#20HLOOP:CJNE 40,#20H,NKG INC R0 SJMP LOOPNKG: MOV 95H,R0 END4-9. ORG 0000HDATA EQU 30HMAIN:MOV A,DATA ADD A,DATA MOV R2,A ADD A,#06H MOVC A,A+PC XCH A,R2 ADD A,#03H MOVC A,A+PC MOV R3,A
13、RETTAB: DW 01,01,02,06,24,120,720,5040 END4-10. ORG 0000HMAIN:MOV R0,#40H MOV A,R0 ANL A,#0FH MOV B,A INC R0 MOV A,R0 ANL A,#0FH SWAP A ORL A,B INC R0 MOV R0,A END4-11. ORG 1000H DATA1 EQU 40H DATA2 EQU 2000HMAIN:MOV R1,#14H MOV R0,#DATA1 MOV DPTR,#DATA2NEXT:MOV A,DPTR XCH A,R0 MOVX DPTR ,A INC R0 I
14、NC DPTR DJNZ R1,NEXT SJMP $ END4-12. ORG 1000H DATA1 EQU 40H DATA2 EQU 2000HMAIN:MOV R1,#32H MOV R0,#DATA1 MOV DPTR,#DATA2NEXT:MOV A,R0 MOVX A, DPTR INC R0 INC DPTR DJNZ R1,NEXT SJMP $ END4-13. 平方表的一个数据占2个字节ORG 0000HMAIN:ADD A,A PUSS ACC MOVC A,A+DPTR MOV R7,A POP A INC A, MOVC A,A+DPTR MOV R6,A SJM
15、P $TAB:DB 00,00,00,01,00,04,00,09,00,16H, DB 04H,00 END4-144-15略。第5章 中断系统及定时/计数器题5-15-8答案略5-9. 出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外部中断(P3.2)引脚输入,行驶里程为轮胎周长运转圈数,设轮胎周长为2 m,试实时计算出租车行驶里程(单位米),数据存32H、31H、30H。编程如下: ORG 0000H LJMPSTAT ORG 0003H LJMPINTORG 0100H STAT:MOV SP,#60H SETB IT0 MOV IP,#01H MOV IE,#81H MOV
16、30H,#0 MOV 31H,#0 MOV 32H,#0 LJMP MAIN;转主程序,MAIN主程序可以处理循环显示等任务。ORG 0200H;中断服务子程序首地址INT: PUSH Acc PUSH PSW MOV A,30H ADD A,#2 MOV 30H,A CLR A ADDC A,31H MOV 31H,A CLR A ADDC A,32H MOV 32H,A PUSH PSW PUSH Acc RETI5-10. 电路图如右图所示。程序如下:ORG0000H LJMPMAINORG0003HLJMPEXTERORG1000H MAIN: SETB IT0 SETB EX0 SE
17、TB EA LOOP: AJMP LOOPORG 1050H;中断程序入口EXTER:MOVR2,#0FFHMOVA, #01HFLASH:RR A MOV R7, #0FFH;定时LOOP1:MOV R6, #0FFHLOOP2:NOPNOPDJNZR6, LOOP2DJNZR7, LOOP1MOVP1, ADJNZR2,FLASHRETIEND5-11. 思路:根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如下图所示。一旦发生故障,单片机必须响应中断,
18、因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。扩展4个外中断源电路如下图所示。主程序和中断服务程序如下: ORG 0000AJMP ZCX1 NOP ORG 0013HAJMP INT1 NOP ORG 0100HZCX1:MOV SP,#30H MOV IP,#04H CLR IT1 SETB EA SETB EX1ZCX2:其他处理程序 AJMP ZCX2 ORG 0200HINT1: PUSH PSW PUSH ACC MOV A,P1 ANL A,#0FH JNB ACC0,X1 ACALL XY1 X1: JNB ACC1,X2 ACALL XY2 X2JNB:AC
19、C2,X3 ACALL XY3 X3: JNB CC3,X4 ACALL XY4 X4: POP ACC POP PSW RETIXY1:OC处理子程序(略) RET5-125-17略。第6章 单片机串行通信及接口6-16-3略。6-4. 串行口的方式控制字SCON50H,允许接收,T1工作方式控制字TMOD20H;若晶振频率=11.0592 MHz,串行口工作于方式1,波特率为4800 bps,查表6-2可得T1计数初值为TH1TL10FAH,此时SMOD0,所以PCON00H。6-5. 设计双机通信系统如下:设甲、乙两进行通信、波特率为2400,晶振均为11.0592MHz。甲机将片外RA
20、M的3400H34FFH的数据块通过串行口传送给乙机,发送数据前将数据块长度发给乙机,当数据发送完向乙机发送一个累加校验和。乙机接收将数据放在片外RAM的440044FFH单元中,同时进行累加和校验,如果和甲机发送的累加和一致,发数据“00H”表示接收正确,如果不一致,发数据“FFH”,甲方再重发。解:(1)T1计数初值:两机晶振为11.0592MHz,波特率为2400,T1工作在定时器方式2,查表6-2可得TH1=TL1=0F4H,PCON寄存器的SMOD位为0。(2)约定R7作为数据长度计数器,计数256个字节。采用减1计数,初值取0,R6作为累加和寄存器。甲机发送程序:TRT:MOV T
21、MOD,#20HMOV TH1,#0F4HMOV TL1,#0F4HSETB TR1MOV SCON,#50HRPT:MOV DPTR,#3400HMOV R7,#00HMOV R6,#00HMOV SBUF,R7LOOP1:JBC TI,L00P2AJMP LOOP1LOOP2:MOVX A,DPTRMOV SBUF,AADD A,R6MOV R6,AINC DPTRLOOP4:JBC TI,LOOP3AJMP LOOP4LOOP3:DJNZ R7,LOOP2MOV SBUF,R6MOV R6,#00HLOOP6:JBC TI,LOOP5AJMP LOOP6LOOP5:JBC RI,LOOP
22、7AJMP LOOP5LOOP7:MOV A,SBUFJZ LOOP8AJMP RPTLOOP8:RET乙机接收程序:首先接收数据长度,然后接收数据,当接收256字节后,接收校验码,进行累加和校验,数据传送结束时,向甲机发送一个状态字节,表示传送正确或出错。RSU:MOV TMOD,#20HMOV TH1,#0F4HMOV TL1,#0F4HSETB TR1MOV SCON,#50HDPT:MOV DPTR,#4400HLOOP0:JBC RI,L00P1AJMP LOOP0LOOP1:MOV A,SBUFMOV R7,AMOV R6,#00HWTD:JBC RI,LOOP2 AJMP WTD
23、LOOP2:MOV A,SBUFMOVX DPTR,AINC DPTRADD A,R6MOV R6,ADJNZR7,WTDLOOP5:JBC RI,LOOP4AJMP LOOP5LOOP4:MOV A,SBUFXRL A,R6MOV R6,#00HJZ LOOP6MOV SBUF,#0FFHLOOP8:JBC TI,LOOP7AJMP LOOP8LOOP7:AJMP DPTLOOP6:MOV SBUF,#00HLOOP9:JBC TI,LOOP3AJMP LOOP9LOOP3:RET6-6. 电路图如下图所示,串行口处于方式0条件下发送数据。程序如下:ORG 2000HMOV SCON,#00
24、HMOV A,#0FFHMOV SBUF,ALOOP:JNB TI,LOOPCLR TIACALL DELCPL AMOV SBUF,ASJMP LOOPDEL: MOV R5,#10DEL0:MOV R6,#200DEL1:MOV R7,#248NOPDEL2:DJNZ R7,DEL2 DJNZ R6,DEL1 DJNZ R5,DEL0 RETEND第7章 单片机系统扩展略。第8章 A/D和D/A转换的接口技术8-18-6、8-8、8-9、8-10、8-138-15略。8-7. 用8031和DAC0832设计一个周期和幅值可调的锯齿波、三角波和阶梯波的波形发生器。要求画出电路图并编程。答:见
25、下图程序如下:1)程序1:DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV DPTR,#DA_ADR ;DA的地址 CLR ALOOP: MOVX DPTR,A INC A CJNE A,#0FFH,LOOP SJMP MAIN END2)程序2:DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV DPTR,#DA_ADR ;DA的地址 CLR ALOOP: MOVX DPTR,A INC A ACALL DEL CJNE A,#0FFH,LOO
26、PL2: SJMP L1L1: MOVX DPTR,A DEC A ACALL DEL CJNE A,#0,L0 SJMP MAINDEL:MOV R7,#5 DJNZ R7,$ RET END3)程序3:图中t=0.1ms,V=10,阶梯波级数为10级。 DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100HMAIN: MOV DPTR,#DA_ADR ;DA的地址 CLR A MOV R7,#5LOOP: MOVX DPTR,A ACALL DELADD A,#51 DJNZ R7,LOOP SJMP MAINDEL:MOV R6,#5
27、L1:MOV R5,#255 DJNZ R5,$ DJNZ R6,L1 RET END8-11. 答:在启动A/D转换指令“MOVX DPTR,A”中,A中数据写到ADC0809的三态输出锁存缓冲器,A中的数据是什么都无所谓,因为这时数据输出允许信号无效,三态输出锁存缓冲器对外呈高阻状态。DPTR中的地址包含了选中转换模拟量的模拟通道和START信号。作用是使STAET信号有效从而启动A/D转换器进行转换,并同时使EOC信号为低电平表示转换开始。读转换信号指令“MOVX A,DPTR”中,DPTR中的地址包含了选中转换模拟量的模拟通道和OE信号。作用是使OE信号有效从而使数据经过三态输出锁存缓
28、冲器输出,数据出现在数据总线上。8-12. 答:程序如下;ORG 0000HLJMP MAINORG 0003H LJMP INT0 ORG 0030H ;主程序 MAIN:DATA EQU 30HMOV R0, #DATA ;设立数据存储区指针 MOV R2,#08H ;设置8路采样计数值 SETB IT0 ;设置外部中断0为边沿触发方式 SETB EA ;CPU开放中断 SETB EX0 ;允许外部中断0中断 MOV DPTR,# 0BFFFH ;送入口地址并指向INT0 LOOP: MOVX DPTR,A ;启动A/D转换,A的值无意义HERE:SJMP HERE ;等待中断IN0 OR
29、G 0100H ;中断服务程序INT0:MOVX A,DPTR;读取转换后的数字量MOV R0,A ;存入片内RAM单元DEC DPL ;指向下一模拟通道INC R0 ;指向下一个数据存储单元DJNZ R2,NEXT ;8路未转换完,则继续CLR EA ;已转换完,则关中断CLR EX0 ;禁止外部中断0中断 SJMP L1 NEXT:MOVX DPTR,A ;再次启动A/D转换 L1:RETI ; 中断返回 END第9章 单片机系统的工程设计9-19-4略9-5.(1)单相四拍方式,步间软件延时10 ms,连续正转。ORG 0000HAJMP STARTORG 0030HSTART:MOV
30、A,#0EEH LOOP: MOV P1, A ACALL DELAY RL A AJMP LOOPDELAY:MOV R6,#45DL2: MOV R5,#54DL1: DJNZ R5,DL1 DJNZ R6,DL2 RET END(2)双相四拍方式,步间软件延时10 ms,连续反转。ORG 0000HAJMP STARTORG 0030HSTART:MOV A,#0CCH LOOP: MOV P1, A ACALL DELAY RR A AJMP LOOPDELAY:MOV R6,#45DL2: MOV R5,#54DL1: DJNZ R5,DL1DJNZ R6,DL2 RET END专心-专注-专业