《单片机原理及应用》部分习题答案

更新时间:2024-01-20 04:54:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

《单片机原理及应用》习题参考答案

主 编:编 写 组:单 位:日 期:

田亚娟 单片机原理及应用精品课程组 广东松山职业技术学院电气工程系 2008年12月

1

第1章 绪 论

1-1.(1)9AH,154;6.375,6.6H

(2)1100.011B,0C.6H;0111111.111B,7F.EH (3)10110111B,183;1111101111.1000B;1007.5

1-2.(1)[+1101110]原=[+1101110]反=[+1101110]补=01101110

(2)[-1111111]原=11111111 [-1111111]反=10000000 [-1111111]补=10000001 (3)[+1010111]原=[+1010111]反=[+1010111]补=01010111

(4)[-1000000]原=11000000 [-1000000]反=10111111 [-1000000]补=11000000 1-3.(1)(0100 0111)BCD (2)(0110 1000)BCD

(3)(0001 1001 1000 0110. 0111)BCD (4)(0001 1001 0110 1001)BCD 1-4~1-7略。

第2章 MCS-51单片机的结构和原理

2-1~2-2、2-4~2-5、2-7、2-9~2-13、略。

2-3. 答:程序状态标志寄存器PSW是一个8位可编程并可按位寻址的专用寄存器,用来存放当前指令执行结果的有关状态信息,位于特殊功能寄存器区,地址是0D0H。其各位定义如下:

D7 D6 D5 D4 D3 D2 D1 D0 CY AC F0 RS1 RS0 OV — P

CY(PSW.7):进位标志。累加器A的最高位有进位或借位时,硬件自动使该位置位(即CY=1),否则该位清零。

AC(PSW.6):辅助进位标志。当进行加法或减法操作时,若累加器的D3位向D4位有进位或借位时,则硬件自动将其置位,否则该位清零。

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”的个数的奇偶性自动置位或清零。若A中有奇数个“1”,则P置位,否则清零。

2-6. 答:不能。因为在这种情况下,系统要进行扩展ROM。P0口和P2口作为专用

2

端口使用。P0口分时作为低8位地址的输出口和数据输入输出口。P2口作为高8位地址输出口。

2-8. 答:00H~7FH为8051的片内RAM的空间。①00H~1FH是通用寄存器区,共32个单元分成0,1,2,3四个区,每个区的8个单元都用R0~R7来表示。②20H ~2FH共16个单元是位寻址区,每个单元的每一位都有它自己的位地址。③30H~7FH是堆栈和数据缓冲区。可用来对运算结果等中间数据暂时保存和有关的数据堆栈。 我们把内部RAM中字节地址00H~7FH与位地址00~7F完全重合的现象,称为地址重叠现象,MCS-51指令系统提供了不同的访问指令和寻址方式来解决这种地址重叠现象。CPU在对位寻址单元进行位操作时,设置有专用的位操作指令。

第3章 MCS-51单片机的指令系统

3-1~3-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)←50H

26 ADD A,@R0 (A)←(A)+((R0)) D2 12 SETB 12H (12H)←01H

3-7. MOV A,30H ;直接寻址方式,将内部RAM的30H单元的内容传送

;给累加器A

MOV A,#30H ;立即寻址方式,将立即数30H传送给累加器A

MOV 31H,R0 ;寄存器寻址方式,将寄存器R0的内容传送到31H单元 MOV 31H,@R0 ;寄存器间接寻址,将寄存器R0所指的地址单元的内容

;传送到31H

3-8.(1)R0的内容送R1。

MOV A, R0 MOV R1,A

(2)外部RAM 40H单元的内容送内部RAM 40H单元。

MOV R0,#40H MOVX A,@R0 MOV 40H,A

(3)外部RAM 7E00H单元内容送内部RAM R0。

MOV DPTR,#7E00H MOV A,@DPTR MOV R0,A

(4)外部ROM 7E00H单元内容送内部RAM 20H单元。

3

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,#2000H MOVX A,@DPTR MOV DPTR,#1000H MOVX @DPTR,A

3-9. (R0)=42H,(42H)=08H,(A)=80H,(50H)=80H 3-10. MOV A,#192

ADD A,#88H MOV 30H,A MOV A,#00H ADDC A,#00H MOV 31H,A

3-11. A=57H Cy=1;A=3BH Cy=0

3-12. (20H)=00H (A)=00H Cy=1; 取消DA后:(20H)=9AH (A)=9AH Cy=0 3-13. rel=0F75H-0F46H=2FH 3-14. 与操作结果为:00H 或操作结果为:FFH 异或操作结果:FFH

3-15. C=1 P1=BBH P3=3CH

第4章 MCS-51单片机的程序设计4-1. ORG 0000H CLR C

MOV A,50H MOV B,#10

4

MUL AB

MOV 53H,B ADD A,51H MOV 52H,A MOV A,53H ADDC A,#0 MOV 53H,A END

4-2. ORG 0000H

MOV R7,#30 MOV R6,#0 MOV R5,#0 MOV R4,#51H MOV R3,#71H MOV R0,#20H MAIN:MOV A,@R0

JB ACC.7,MAIN1 INC R6

MOV R1,R4 MOV @R1,A AJMP LOOP MAIN1:INC R5

MOV R1,R3 MOV @R1,A LOOP:DJNZ R7,MAIN

MOV 50H,R6 MOV 70H,R5 END

4-3. ORG 0000H

CLR C

MOV R7,#4 MOV R6,#3

MOV R0,#DATA+4 MOV R1,#DATA MOV A,@R0 JNB ACC.7,END0

5

ORG 1000H

MAIN: SETB IT0 SETB EX0 SETB EA

LOOP: AJMP LOOP

ORG 1050H ;中断程序入口 EXTER:MOV R2,#0FFH MOV A, #01H FLASH:RR A MOV R7, #0FFH;定时 LOOP1:MOV R6, #0FFH LOOP2:NOP NOP DJNZ R6, LOOP2 DJNZ R7, LOOP1 MOV P1, A DJNZ R2,FLASH RETI END

5-11. 思路:根据要求,四个故障相当四个中断源,可利用中断查询方法,将四个中断源归结为一个中断请求,同时四个故障信号引到P1口的四个输入端,然后在中断程序中查询P1口,确定是哪一个故障申请的中断。电路如下图所示。一旦发生故障,单片机必须响应中断,因此,该中断必须设置成最高级中断。在中断程序中可以显示故障信息。

扩展4个外中断源电路如下图所示。

P1.3P1.2P1.1OCOVUVOHP1.0?Y1INT1C51 主程序和中断服务程序如下: ORG 0000

AJMP ZCX1

11

NOP

ORG 0013H

AJMP INT1 NOP

ORG 0100H

ZCX1:MOV SP,#30H

MOV IP,#04H

CLR IT1 SETB EA SETB EX1

ZCX2:其他处理程序 AJMP ZCX2 ORG 0200H

INT1: PUSH PSW PUSH ACC

MOV A,P1 ANL A,#0FH

JNB ACC0,X1

ACALL XY1 X1: JNB ACC1,X2 ACALL XY2 X2JNB:ACC2,X3

ACALL XY3 X3: JNB CC3,X4

ACALL XY4 X4: POP ACC POP PSW RETI

XY1: OC处理子程序(略) RET 5-12~5-17略。

第6章 单片机串行通信及接口

6-1~6-3略。

6-4. 串行口的方式控制字SCON=50H,允许接收,T1工作方式控制字TMOD=20H;若晶振频率fOSC=11.0592 MHz,串行口工作于方式1,波特率为4800 bps,查表6-2

12

可得T1计数初值为TH1=TL1=0FAH,此时SMOD=0,所以PCON=00H。 6-5. 设计双机通信系统如下:设甲、乙两进行通信、波特率为2400,晶振均为11.0592MHz。甲机将片外RAM的3400H~34FFH的数据块通过串行口传送给乙机,发送数据前将数据块长度发给乙机,当数据发送完向乙机发送一个累加校验和。乙机接收将数据放在片外RAM的4400~44FFH单元中,同时进行累加和校验,如果和甲机发送的累加和一致,发数据“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 TMOD,#20H

MOV TH1,#0F4H MOV TL1,#0F4H SETB TR1

MOV SCON,#50H RPT:MOV DPTR,#3400H

MOV R7,#00H MOV R6,#00H MOV SBUF,R7 LOOP1:JBC TI,L00P2

AJMP LOOP1

LOOP2:MOVX A,@DPTR

MOV SBUF,A ADD A,R6 MOV R6,A INC DPTR

LOOP4:JBC TI,LOOP3

AJMP LOOP4

LOOP3:DJNZ R7,LOOP2

MOV SBUF,R6 MOV R6,#00H

LOOP6:JBC TI,LOOP5

AJMP LOOP6

LOOP5:JBC RI,LOOP7

13

AJMP LOOP5

LOOP7:MOV A,SBUF

JZ LOOP8 AJMP RPT LOOP8:RET 乙机接收程序:

首先接收数据长度,然后接收数据,当接收256字节后,接收校验码,进行累加和校验,数据传送结束时,向甲机发送一个状态字节,表示传送正确或出错。 RSU:MOV TMOD,#20H

MOV TH1,#0F4H MOV TL1,#0F4H SETB TR1

MOV SCON,#50H DPT:MOV DPTR,#4400H LOOP0:JBC RI,L00P1

AJMP LOOP0

LOOP1:MOV A,SBUF

MOV R7,A MOV R6,#00H WTD:JBC RI,LOOP2 AJMP WTD

LOOP2:MOV A,SBUF

MOVX @DPTR,A INC DPTR ADD A,R6 MOV R6,A DJNZ R7,WTD

LOOP5:JBC RI,LOOP4

AJMP LOOP5

LOOP4:MOV A,SBUF

XRL A,R6 MOV R6,#00H JZ LOOP6

MOV SBUF,#0FFH LOOP8:JBC TI,LOOP7

AJMP LOOP8

14

LOOP7:AJMP DPT

LOOP6:MOV SBUF,#00H LOOP9:JBC TI,LOOP3

AJMP LOOP9 LOOP3:RET

6-6. 电路图如下图所示,串行口处于方式0条件下发送数据。 程序如下:

ORG 2000H

MOV SCON,#00H MOV A,#0FFH MOV SBUF,A LOOP:JNB TI,LOOP

CLR TI ACALL DEL CPL A

MOV SBUF,A SJMP LOOP DEL: MOV R5,#10 DEL0:MOV R6,#200 DEL1:MOV R7,#248

NOP

DEL2:DJNZ R7,DEL2

DJNZ R6,DEL1 DJNZ R5,DEL0 RET END

第7章 单片机系统扩展

略。

第8章 A/D和D/A转换的接口技术

8-1~8-6、8-8、8-9、8-10、8-13~8-15略。

8-7. 用8031和DAC0832设计一个周期和幅值可调的锯齿波、三角波和阶梯波的波形发生器。要求画出电路图并编程。 答:见下图

15

程序如下:

1)程序1:

DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV DPTR,#DA_ADR ;DA的地址 CLR A

LOOP: MOVX @DPTR,A INC A

CJNE A,#0FFH,LOOP SJMP MAIN END

2)程序2:

0.02S

DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV DPTR,#DA_ADR ;DA的地址

16

CLR A

LOOP: MOVX @DPTR,A INC A

ACALL DEL

CJNE A,#0FFH,LOOP

L2: SJMP L1

L1: MOVX @DPTR,A DEC A

ACALL DEL CJNE A,#0,L0 SJMP MAIN DEL:MOV R7,#5 DJNZ R7,$ RET END

3)程序3:

图中Δt=0.1ms,ΔV=10,阶梯波级数为10级。

uo?tt0?V

DA_ADR EQU 7FFFH ;DA的地址 ORG 0000H LJMP MAIN ORG 0100H

MAIN: MOV DPTR,#DA_ADR ;DA的地址 CLR A MOV R7,#5

LOOP: MOVX @DPTR,A ACALL DEL

ADD A,#51

DJNZ R7,LOOP SJMP MAIN

17

DEL:MOV R6,#5 L1:MOV R5,#255 DJNZ R5,$ DJNZ R6,L1 RET END

8-11. 答:在启动A/D转换指令“MOVX @DPTR,A”中,A中数据写到ADC0809的三态输出锁存缓冲器,A中的数据是什么都无所谓,因为这时数据输出允许信号无效,三态输出锁存缓冲器对外呈高阻状态。DPTR中的地址包含了选中转换模拟量的模拟通道和START信号。作用是使STAET信号有效从而启动A/D转换器进行转换,并同时使EOC信号为低电平表示转换开始。

读转换信号指令“MOVX A,@DPTR”中,DPTR中的地址包含了选中转换模拟量的模拟通道和OE信号。作用是使OE信号有效从而使数据经过三态输出锁存缓冲器输出,数据出现在数据总线上。 8-12. 答:程序如下;

ORG 0000H LJMP MAIN ORG 0003H

LJMP INT0

ORG 0030H ;主程序 MAIN:DATA EQU 30H

MOV 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

ORG 0100H ;中断服务程序 INT0:MOVX A,@DPTR;读取转换后的数字量

MOV @R0,A ;存入片内RAM单元 DEC DPL ;指向下一模拟通道

INC R0 ;指向下一个数据存储单元 DJNZ R2,NEXT ;8路未转换完,则继续 CLR EA ;已转换完,则关中断

18

CLR EX0 ;禁止外部中断0中断

SJMP L1

NEXT:MOVX @DPTR,A ;再次启动A/D转换

L1:RETI ; 中断返回

END

ALE CK Q CLK

D Q G OEADC D7 IN7 Q7 0809 P0 8051 : 373: : : C EA D0 Q0 B A WRD0~D7 +P2.6 STARTIN0 ALE

RD + OE

P3.2 1 EOC 第9章 单片机系统的工程设计

9-1~9-4略

9-5.(1)单相四拍方式,步间软件延时10 ms,连续正转。

ORG 0000H AJMP START ORG 0030H

START:MOV A,#0EEH LOOP: MOV P1, A

ACALL DELAY RL A AJMP LOOP DELAY:MOV R6,#45 DL2: MOV R5,#54 DL1: DJNZ R5,DL1

DJNZ R6,DL2 RET END

(2)双相四拍方式,步间软件延时10 ms,连续反转。

ORG 0000H AJMP START ORG 0030H

19

START:MOV A,#0CCH LOOP: MOV P1, A

ACALL DELAY

RR A AJMP LOOP DELAY:MOV R6,#45 DL2: MOV R5,#54 DL1: DJNZ R5,DL1

DJNZ RET END

R6,DL2 20

本文来源:https://www.bwwdw.com/article/1uwo.html

Top