单片机原理、接口技术及应用课后答案—黄建新

更新时间:2023-10-12 09:50:01 阅读量: 综合文库 文档下载

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

作业题及答案

第1章

1.9 完成下列数制的转换。

(1)1011.1101B=( 11.8125 )D=( B.D )H (2)110.101B=( 6.625 )D=( 6.A )H

(3)166.25=( 10100110.0100 )B=( A6.4 )H

(4)1011011.101B=( 5B.A )H=( 1001 0001.0110 0010 0101 )BCD (5)100001100011.01000101BCD=( 863.45 )D

1.10 写出下列真值对应的原码、反码和补码。 (1)+1100110B

【+1100110B】原码=66H

【+1100110B】反吗=66H 【+1100110B】补码=66H (2)-1000100B

【-1000100B】原码=C4H

【-1000100B】反码=BBH 【-1000100B】补码=BCH (3)-86

【-86】原码=D6H

【-86】反码=A9H 【-86】补码=AAH

1.11写出下列机器数分别作为原码、反码和补码时,其表示的真值分别是多少?

(1)01101110B +110(6EH)

(2)10110101B -53(35H), -74(-4AH), -75(-4BH)

1.12 已知X和Y的真值,试分别计算[X+Y]补和[X-Y]补,并指出是否产生溢出

(设补码均用8位二进制表示)。 (1)X=+1000100B,Y=-0010010B

X补=01000100B, Y补=11101110B [X+Y]补:

0100 0100 1110 1110 1 0011 0010

C7=1,C6=1,相同, 所以无溢出。

1

[X-Y]补

0100 0100 0001 0010 0101 0110

C7=0,C6=0,相同, 所以无溢出。

(2)X=+1100001B,Y=+1000010B [X+Y]补:有溢出

[X-Y]补无溢出

(3)X=-1101001B,Y=-1010101B [X+Y]补:有溢出

[X-Y]补:无溢出

1.13 用十六进制写出下列字符的ASCII码。 (1)NBA ‘NBA’=4E4241H (2)HELLO!2009

‘HELLO!2009’=48454C4C4F2132303039H

2

第2章

2.6 80C51单片机的EA信号有何功能?在使用80C31和89C51单片机时,EA信

号应如何处理?

答:EA是访问外部程序存储器选通信号。当其为低电平时,对ROM的读操作限

定为外部存储器;当其为高电平时,对ROM的读操作是从内部开始的,当

PC值大于内部程序存储器地址范围时,CPU自动转向读外部程序存储器。 80C31单片机片内无ROM,应将EA引脚固定接低电平,以迫使系统全部执行片外程序存储器程序。89C51单片机应将EA引脚接+5V电源。

2.9 系统复位后,CPU使用哪一组工作寄存器?它们的地址是什么?如何改变当

前工作寄存器组?

答:系统复位后,CPU使用0组寄存器,它们的地址分别是:R0--R7:00H—07H. 可以通过改变PSW寄存器的PSW.4和PSW.3两位的值来改变工作寄存器组。 2.10 80C51单片机具有很强的布尔(位)处理功能?共有多少单元可以位寻址?

采用布尔处理有哪些优点?

答:是的,80C51单片机具有很强的布尔处理功能,在内部RAM区20H—2FH的

16个单元都可以位寻址;同时21个特殊功能寄存器中还有部分特殊功能寄存器可以位寻址。

布尔(位)处理机,是80C5l系列单片机的突出优点之一,给“面向控制”的实际应用带来了极大的方便。

布尔(位)处理机借用进位标志CY作为位累加器,在布尔运算中,CY是数据源之一,又是运算结果的存放处,位数据传送的中心。

布尔(位)处理机指令系统中有专门进行位处理的指令集,利用位逻辑操作功能进行随机逻辑设计,可把逻辑表达式直接变换成软件执行,方法简便,免去了过多的数据往返传送、字节屏蔽和测试分支,大大简化了编程,节省了存储器空间,加快了处理速度,增强了实时性能。还可实现复杂的组合逻辑处理功能。所有这些,特别适用于某些数据采集、实时测控等应用系统。

2.12 单片机的复位方法有哪两种?复位后各寄存器及RAM中的状态如何? 答:按键复位和外部脉冲复位。

单片机复位后,21个寄存器中,SP=07H,P0—P3均为FFH,SBUF为不定值,

其余均为0. 2.13 80C51单片机的PSEN、RD、WR、XTAL1和XTAL2引脚各有何作用?

单片机时钟电路分别采用内部和外部振荡方式时,XTAL1和XTAL2引脚应如何连接?

答:PSEN是片外程序存储器选通信号,低电平有效。

,输出,低电平有效。 RD(片外数据存储器读选通)

3

WR(片外数据存储器写选通),输出,低电平有效。

XTAL1和XTAL2 内部振荡方式:在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTALl,其输出端为引脚XTAL2。当使用芯片内部时钟时,这两根引线用于外接石英晶体和微调电容。 外部振荡方式:把外部已有的时钟信号引入单片机内。该方式适宜用来使单片机的时钟信号与外部信号保持同步。外部振荡信号由XTAL1引入,XTAL2端悬空不用。

4

第3章

3.7用指令实现下述功能。

(1)内部RAM30H单元内容送R0。 MOV R0,30H

(2)将立即数10H送入内部RAM30H单元。 MOV 30H,#10H

(3)R0内容送入R1。 MOV A,R0 MOV R1,A

(4)内部RAM30H单元内容送外部RAM30H单元。 MOV R0,#30H MOV A,@R0 MOVX @R0,A

(5)外部RAM3000H单元内容送内部RAM30H单元。 MOV DPTR,#3000H MOVX A,@DPTR MOV 30H,A

(6)ROM3000H单元内容送内部RAM30H单元。

MOV DPTR,#3000H MOV A,#00H

MOVC A,@(A+DPTR) MOV 30H,A

3.8 已知内部RAM中,(30H)=40H,(40H)=50H,(50H)=5AH,(5AH)=60H,

ROM中(125AH)=88H,试分析下面程序的运行结果,并指出每条指令的源操作数寻址方式。

MOV A,50H ;直接寻址 MOV R0,A ;寄存器寻址 MOV P1,#0F0H ;立即寻址 MOV @R0,30H ;直接寻址 MOV DPTR,#1200H ;立即寻址 MOVX @DPTR,A ;寄存器寻址 MOVC A,@A+DPTR ;变址寻址 MOV 40H,50H ;直接寻址 MOV P2,P1 ;直接寻址

程序执行后,P2=F0H ; (40H)= 5AH ;(A)=88H ;(1200H)=5AH; (5AH)=40H

3.9 设(R1)=31H,内部RAM31H的内容为68H,32H单元的内容为60H,(A)

=10H。请指出运行下面的程序后各单元内容的变化。 MOV A,@R1 ;(A)=68H MOV @R1,32H ;(31H)60H MOV 32H,A ;(32H)=68H MOV R1,#45H ;(R1)=45H

程序前3条指令将内部RAM31H和32H单元内容互换。

5

3.10 已知当前PC值为2000H,用两种方法将ROM207FH单元中的常数送入累加器A。

(1)MOV DPTR,#207FH

MOV A,#00H MOVC A,@A+DPTR (2)

MOV A,#7CH MOVC A,@A+PC 3.16 已知延时程序为

DELAY: MOV R0,#0A0H LOOP1: MOV R1,#0FFH LOOP2: NOP

DJNZ R1,LOOP2 DJNZ R0,LOOP1

若系统的晶振频率为12MHz,请指出该延时子程序的延时时间。

机器周期数

DELAY: MOV R0,#0A0H 1 LOOP1: MOV R1,#0FFH 1 LOOP2: NOP 1

DJNZ R1,LOOP2 2 DJNZ R0,LOOP1 2

由于晶振频率为12MHz,1M=1μs 该程序延时时间为:【1+(1+2)*255+2】*160+1=122.881ms

6

第4章

4.13编写程序将内部RAM40H~60H单元清0 MOV R7,#21H MOV R0,#40H LOOP:MOV @R0,#00H INC R0

DJNZ R7,LOOP SJMP $

4.15 编程将外部RAM的1000H~1FFF区域的数据送到2000H~2FFFH区域。

ORG 0100H

MOV DPTR,#1000H MOV R7,#10H LL1: MOV R6,#00H LL: MOVX A,@DPTR MOV B,A MOV A,DPH ADD A,#10H MOV DPH,A MOV A,B

MOVX @DPTR,A MOV A,DPH CLR C

SUBB A,#10H MOV DPH,A INC DPTR

DJNZ R6,LL INC DPH

DJNZ R7,LL1 SJMP $

4.16已知一内部RAM以BLOCK1和BLOCK2为起始地址的存储区中分别有5字节无符号被减数和减数(低位在前,高位在后。请编写减法子程序令它们相减,并把差放入以BLOCK1为起始地址的存储单元。

BLOCK1 EQU 30H

BLOCK2 EQU 40H ORG 0000H LJMP START START:MOV R0,#BLOCK1

MOV R1,#BLOCK2 MOV R7,#1 LP:MOV R6,#5 CLR C LP1:MOV A,@R0

7

SUBB A,@R1 MOV @R0,A INC R0 INC R1

DJNZ R6,LP1 DJNZ R7,LP SJMP $ END

4.17 从内部RAM20H单元开始存有一组带符号数,其个数已存放在1FH单元中。要求统计出大于0、等于0和小于0的数的数目,并把统计结果分别存放在ONE、TWO、THREE三个单元中。

ONE EQU 1EH

TWO EQU 1DH

THREE EQU 1CH ORG 0000H LJMP START

START:MOV ONE,#00H

MOV TWO,#00H MOV THREE,#00H MOV R0,#20H MOV R7,1FH

LOOP3: MOV A,@R0

INC R0 JZ LOOP1

JB ACC.7,LOOP2 INC ONE SJMP HALT

LOOP1: INC TWO

SJMP HALT

LOOP2: INC THREE HALT: DJNZ R7,LOOP3

SJMP $

4.18 设内部RAM30H单元有两个非零的BCD数,请编写求两个BCD数的积,并将积以压缩型BCD数形式送入31H单元的程序。 ORG 0000H MOV A, 30H ANL A, #0F0H SWAP A MOV B, A MOV A, 30H ANL A, #0FH MUL A, B MOV B, #0AH DIV AB SWAP A

8

ORL A, B MOV 31H, A SJMP $

4.20 编制绝对值函数程序。绝对值函数方程如下: 当X?0?X ?Y??0当X=0 ?-X当X?0?

假设X存于30H单元,Y存于40H单元。X 及Y均为补码数. X EQU 30H Y EQU 40H ORG 0000H LJMP START

START: MOV A,X

JZ LOOP

JNB ACC.7,LOOP CPL A

ADD A,#01H LOOP: MOV Y,A SJMP $ END

4.21 试编写统计数据区长度的程序,设数据区从内RAM30H开始,该数据区以0结束,统计结果送人2FH中。且数据区结束字符,也计入统计数据区的长度中去. ORG 0000H LJMP START START:MOV R0,#30H MOV R7,#00H

LOOP:MOV A,@R0

INC R0 INC R7

CJNE A,#00H,LOOP MOV 2FH, R7 SJMP $

4.23巳知R7中为2位十六进制数,试编程将其转换为ASCII码,存人内部RAM 31H、32H中(低字节在前)。英文字母为大写.

ORG 0000H

LJMP START START:MOV SP,#60H MOV A,R7

LCALL BCDASCII MOV 31H,A

9

MOV A,R7 SWAP A

LCALL BCDASCII MOV 32H,A SJMP $

BCDASCII:ANL A,#0FH

CJNE A,#10,LOOP LOOP: JC AD30H ADD A,#07H AD30H:ADD A,#30H HT: RET END 解法2

ORG 0000H LJMP START

START: MOV DPTR,#TAB

MOV A,R7

ANL A,#0FH MOVC A,@A+DPTR MOV 31H,A MOV A,R7 ANL A,#0F0H SWAP A

MOVC A,@A+DPTR MOV 32H,A SJMP $

TAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H

DB 39H,41H,42H,43H,44H,45H,46H

END

4.24设在MA和MB单元中有两个补码形式的8位二进制带符号数。请编写求两数之和并把它放在SUML和SUMH单元(低8位在SUML单元)的子程序。 提示:在两个8位二进制带符号数相加时,其和很可能会超过8位数所能表示的范围,从而需要采用16位数形式来表示。因此,在进行加法时、可以预先把这两个加数扩张成16位二进制补码形式,然后对它完成双字节相加。

ORG 0000H LJMP START

START:MOV A,MA

JB ACC.7,LLA MOV R7,#00H SJMP LLL

LLA: MOV R7,#0FFH LLL: MOV A,MB

JB ACC.7,LLB MOV R6,#00H

10

SJMP LADD

LLB: MOV R6,#0FFH LADD:MOV A,MA ADD A,MB MOV SUML,A MOV A,R6 ADDC A,R7 MOV SUMH,A SJMP$

4.25 设外部RAM1000H~10FFH数据区中的数均为无符号数。试编写程序,找出该区域中的数的最大值,并放人内部RAM30H单元中。 MOV DPTR,#1000H MOV R7,#00H ;计数器 MOV B,#00H ;放中间结果 L1: MOVX A, @DPTR CJNE A, B, L2 L2: JC L3 MOV B, A ; B中放大值 L3: INC DPTR

DJNZ R7, L1 MOV 30H, B SJMP $

4.28 已知a、b、c均为0~9的整数,试编程求解表达式Y=(a-b)2+(b-c)2+(c-a)2的值

? AA EQU 31H ? BB EQU 32H ? CC EQU 33H ? Y EQU 34H ? ORG 0000H ? LJMP START ? START:MOV SP,#60H ? MOV A,AA ? CLR C ? SUBB A,BB ? ACALL CHUNCI ? MOV R6,A ? MOV A,BB ? CLR C ? SUBB A,CC ? ACALL CHUNCI ? ADD A,R6 ? MOV R6,A

11

MOV A,CC

CLR C SUBB A,AA ACALL CHUNCI ADD A,R6 MOV R6,A MOV Y,R6 SJMP $

CHUNCI:JNB ACC.7,SQR

CPL A

ADD A,#01H

SQR: ADD A,#01H MOVC A,@A+PC RET

SQRTAB:DB 0,1,4,9,16,25,36,49,64,81

4.29 从内部RAM的SCORE单元开始放有16位同学某门课程的考试成绩,试编程求平均成绩,存入AVERAGE单元。

ORG 0100H MOV R5,#00H MOV R6,#00H MOV R0,#SCORE MOV R7,#16 LL: MOV A,@R0 ADD A,R5 MOV R5,A MOV A,R6

ADDC A,#00H MOV R6,A INC R0

DJNZ R7,LL MOV R4,#04H LL1: CLR C MOV A,R6 RRC A MOV R6,A MOV A,R5 RRC A MOV R5,A

DJNZ R4,LL1 MOV AVERAGE,R5 SJMP $

12

第5章

5.8 80C51外扩ROM时,为什么P0口要接一个8位锁存器,而P2口却不接? 答:P0口既作为地址线传送地址的低8位,又要作为数据线传送8位数据,只能分时用做地址线,故P0口输出的低8位地址数据必须用锁存器锁存。锁存器的锁存控制信号为引脚ALE输出的控制信号。P2口只用作地址高8位。

5.9 若要设计一个32K×8位的外RAM存储器,分别采用2114(1K×4位)和

6264(8K×8位)芯片,各需多少块存储芯片? 答:2114芯片需要:(8/4)*(32/1)=64片 6264芯片需要:32/8=4片

5.12 80C51扩展2片6264存储器芯片,试用P2.6、P2.7对其片选,并指出它们的地址范围。 答:

地址范围: 6264(1)10*0 0000 0000 0000 0000 1 1111 1111 1111 1111 8000H—9FFFH 6264(2) 01*0 0000 0000 0000 0000 1 1111 1111 1111 1111 4000H—5FFFH P2.728 P2.627 P2.526 BC*AD8031ALE/PP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0P2.4P2.3P2.2P2.1P2.0WRRD1617301132333435363738393478131417182524232221+5V456321*74LS138E1E2E3CBAY0Y1Y2Y3Y4Y5Y6Y7*G1D2D3D4D5D6D7D8D74L373151413121110971E1Q2Q3Q4Q5Q6Q7Q8Q 13 256912151619

14

第6章

6.1 输入/输出信息有哪几种?

答:通过接口传送的信息包括数据信息、状态信息和控制信息。

6.2 什么是接口?接口应具有哪些功能?

接口是将外设连接到总线上的一组逻辑电路的总称。 功能:1. 地址译码与设备选择

2. 缓冲锁存数据 3. 信息的输入输出 4. 信息转换

6.7 什么是中断源?80C51有哪些中断源?CPU响应中断时,其入口地址是什么? 答:能引起中断的外部设备或内部原因称为中断源,包括外部中断源和内部中断源。

80C51中有5个中断源:

(1)INT0(P3.2):外部中断0。 (2) INT1(P3.3):外部中断1。

(3)TF0(P3.4):定时器/计数器T0溢出中断。 (4)TF1(P3.5):定时器/计数器T1溢出中断。 (5)RX,TX:串行中断 入口地址:

外部中断0(INT0):0003H 定时器/计数器0(T0):000BH 外部中断1(INT1):0013H

定时器/计数器1(T1):001BH 串行口(RI、TI):0023H

定时器/计数器2(T2)(仅80C52有):002BH

6.11 80C51的外部中断有哪几种触发方式?如何选择? 答:有电平触发方式和边沿触发方式。 通过对ICON寄存器的D0位IT0和D2位IT1置位或清0实现。该为为0,

为低电平触发方式,该位为1,为下降沿触发方式。

15

第7章

7.8 8255A各端口可以工作在几种方式下?当端口 A工作在方式2时,端口B

和C工作于什么方式下?

答:8255A共有三种工作方式:方式0、方式1和方式2。其中A口可以工作在方式0、方式1和方式2,B口可以工作在方式0、方式1,而C口只能工作在方式0。

在A口工作在方式2时,B口可以工作在方式0或方式1。C口高5位为A口提供联络信号,C口低3位可作为输入输出线使用或用作B口方式1之下的控制线。

7.9 某8255A芯片的地址范围为7F80H—7F83H,工作于方式0,A口、B口为输

出口。C口低4位为输入,高4位为输出,试编写初始化程序。 MOV DPTR,#7F83H MOV A,#1000 0001B MOVX @DPTR, A

7.11 8255A的方式控制字和C口按位置位/复位控制字都可以写入8255A的同一

控制寄存器,8255A是如何区分这两个控制字的? 答:看控制字的最高位D7,如果该位的值为“1”,则认为是方式控制字;反之,

则认为是C口置位/复位控制字。

7.12 编写程序,采用8255A的C口按位置位/复位控制字,将PC7置0,PC4置

1,(已知8255A各端口的地址为7FFCH-7FFFH)。 MOV DPTR,#7FFFH MOV A,#0EH MOVX @DPTR,A MOV DPTR,#7FFFH MOV A,#09H MOVX @DPTR,A

7.13 设8255A接到系统中,端口A、B、C及控制口地址分别为220H、221H、222H

及223H,工作在方式0,试编程将端口B的数据输入后,从端口C输出,同时,将其取反后从端口A输出。 MOV DPTR,#223H MOV A,#82H MOVX @DPTR,A MOV DPTR,#221H MOVX A,@DPTR INC DPTR

MOVX @DPTR,A CPL A

MOV DPTR,#220H MOVX @DPTR,A SJMP $

16

第8章

8.3 定时器T1用于对外部脉冲计数,每计满1000个脉冲后使内部RAM 60H单元

内容加一,要求T1以方式1中断实现,TR1启动。 解:计数常数为: TC=216-1000=64536=FC18H,

由于采用T1方式1 计数方式,故方式控制字为: 0101 0000B=50H 程序如下:

ORG 0000H AJMP MAIN ORG 001BH LJMP T1INT ORG 0200H

MAIN: MOV TMOD,#50H MOV TH1,#0FCH MOV TL1,#18H SETB ET1 SETB EA SETB TR1 SJMP $ ORG 0800H T1INT: INC 60H MOV TH1,#0FCH MOV TL1,#18H RETI

8.4 利用定时器T0方式2产生一个5KHz的方波,已知晶振频率为12MHz。

解:方波的周期为1/5000=0.2ms,故T0定时时间应为0.1ms。 定时常数为:

TC?28?0.1?10?3?12?106/12?256?100?156?9CH

即 TCH=9CH,TCL=9CH

由T0工作于方式2,故方式控制字为02H 1. 查询方式

ORG 0000H AJMP MAIN

ORG 0200H MAIN: MOV TMOD,#02H MOV TH0,#9CH MOV TL0,#9CH CLR ET0 SETB TR0 WATT: JBC TF0,WAVE SJMP WATT WAVE: CPL P1.7 SJMP WATT 2.中断方式

17

ORG 0000H AJMP MAIN ORG 000BH LJMP T0INT ORG 0200H MAIN: MOV TMOD,#02H MOV TH0,#9CH MOV TL0,#9CH SETB ET0 SETB EA SETB TR0 SJMP $ ORG 0800H T0INT: CPL P1.7 RETI

8.5 试编写程序,使T0以方式1每隔10ms向CPU发出中断申请,在中断服务程

序中将30H单元内容减1。设晶振频率为12MHz, 解:计数常数为:

TC?216?10?10?3?12?106/12?65536?10000?55536?D8F0H

由于采用T0方式1 定时方式,故方式控制字为: 0000 0001B=01H 程序如下:

ORG 0000H AJMP MAIN ORG 000BH LJMP T0INT ORG 0200H

MAIN: MOV TMOD,#01H MOV TH0,#0D8H MOV TL0,#F0H SETB ET0 SETB EA SETB TR0 SJMP $ ORG 0800H T0INT: DEC 30H MOV TH0,#0D8H MOV TL0,#F0H

RETI

18

第10章

10.11 DAC0832在逻辑上由哪几部分组成?可以工作在哪几种模式下? 答:输入寄存器、转换寄存器和D/A转换器三部分组成。 单缓冲、双缓冲和直通方式。

10.12 某8位D/A转换器,输出电压为0~5V。当输入数字量为30H时,其对应

的输出电压是多少?

解:X/48=(5-0)/(255-0),X=5*48/255=0.94V

10.13 DAC0832与80C51单片机连接时有哪些控制信号?它们的作用是什么?

答:ILE:输入锁存允许。

CS:片选信号。 WR1:写输入寄存器

上述三个信号用于把数据写入到输入寄存器。

WR2:写DAC寄存器

XFER:允许输入寄存器的数据传送到DAC寄存器

上述二个信号用于启动转换

10.16 ADC0809是什么功能的芯片? 答:模数转换芯片。

19

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

Top