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

发布时间:2020-07-13 09:12:05   来源:文档文库   
字号:

作业题及答案

1

完成下列数制的转换。

1)=( D=( H

2)=( D=( H

3)=( .0100 B=( H

4)=( H=( 1001 0010 0101 BCD

5.01000101BCD=( D

写出下列真值对应的原码、反码和补码。

1)+1100110B

【+1100110B】原码=66H

【+1100110B】反吗=66H

【+1100110B】补码=66H

2)-1000100B

【-1000100B】原码=C4H

【-1000100B】反码=BBH

【-1000100B】补码=BCH

3)-86

【-86】原码=D6H

【-86】反码=A9H

【-86】补码=AAH

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

101101110B

+110(6EH)

2B

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

已知XY的真值,试分别计算[XY][XY],并指出是否产生溢出(设补码均用8位二进制表示)。

1X=+1000100BY=-0010010B

X=01000100B, Y=B

[XY]:

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

[XY]

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

2X=+1100001BY=+1000010B

[XY]:有溢出

[XY]无溢出

3X=-1101001BY=-1010101B

[XY]:有溢出

[XY]:无溢出

用十六进制写出下列字符的ASCII码。

1NBA

NBA=4E4241H

2HELLO2009

HELLO2009=48454C4C4F39H

2

80C51单片机的信号有何功能?在使用80C3189C51单片机时,信号应如何处理?

答:是访问外部程序存储器选通信号。当其为低电平时,对ROM的读操作限定为外部存储器;当其为高电平时,对ROM的读操作是从内部开始的,PC值大于内部程序存储器地址范围时,CPU自动转向读外部程序存储器。

80C31单片机片内无ROM,应将引脚固定接低电平,以迫使系统全部执行片外程序存储器程序。89C51单片机应将引脚接+5V电源。

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

答:系统复位后,CPU使用0组寄存器,它们的地址分别是:R0--R7:00H07H.

可以通过改变PSW寄存器的和两位的值来改变工作寄存器组。

80C51单片机具有很强的布尔(位)处理功能?共有多少单元可以位寻址?采用布尔处理有哪些优点?

答:是的,80C51单片机具有很强的布尔处理功能,在内部RAM20H2FH16个单元都可以位寻址;同时21个特殊功能寄存器中还有部分特殊功能寄存器可以位寻址。

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

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

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

单片机的复位方法有哪两种?复位后各寄存器及RAM中的状态如何?

答:按键复位和外部脉冲复位。

单片机复位后,21个寄存器中,SP=07H,P0P3均为FFH,SBUF为不定值,其余均为0.

80C51单片机的XTAL1XTAL2引脚各有何作用?单片机时钟电路分别采用内部和外部振荡方式时,XTAL1XTAL2引脚应如何连接?

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

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

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

XTAL1XTAL2

内部振荡方式:在80C51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTALl,其输出端为引脚XTAL2。当使用芯片内部时钟时,这两根引线用于外接石英晶体和微调电容。

外部振荡方式:把外部已有的时钟信号引入单片机内。该方式适宜用来使单片机的时钟信号与外部信号保持同步。外部振荡信号由XTAL1引入,XTAL2端悬空不用。

3

用指令实现下述功能。

1)内部RAM30H单元内容送R0

MOV R0,30H

2)将立即数10H送入内部RAM30H单元。

MOV 30H,#10H

3R0内容送入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

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

MOV DPTR,#3000H

MOV A,#00H

MOVC A,@(A+DPTR)

MOV 30H,A

已知内部RAM中,(30H)=40H,(40H)=50H,(50H)=5AH,(5AH)=60HROM中(125AH)=88H,试分析下面程序的运行结果,并指出每条指令的源操作数寻址方式。

MOV A50H ;直接寻址

MOV R0A ;寄存器寻址

MOV P1,#0F0H ;立即寻址

MOV @R030H ;直接寻址

MOV DPTR,#1200H ;立即寻址

MOVX @DPTRA 寄存器寻址

MOVC A@ADPTR 变址寻址

MOV 40H50H ;直接寻址

MOV P2P1 ;直接寻址

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

设(R1)=31H,内部RAM31H的内容为68H32H单元的内容为60H,(A)=10H。请指出运行下面的程序后各单元内容的变化。

MOV A@R1 ;(A)=68H

MOV @R132H ;(31H)60H

MOV 32HA ;(32H)=68H

MOV R1,#45H ;(R1)=45H

程序前3条指令将内部RAM31H32H单元内容互换。

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

1MOV DPTR,#207FH

MOV A,#00H

MOVC A,@A+DPTR

2

MOV A,#7CH

MOVC A,@A+PC

已知延时程序为

DELAY MOV R0,#0A0H

LOOP1 MOV R1,#0FFH

LOOP2 NOP

DJNZ R1LOOP2

DJNZ R0LOOP1

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

机器周期数

DELAY MOV R0,#0A0H 1

LOOP1 MOV R1,#0FFH 1

LOOP2 NOP 1

DJNZ R1LOOP2 2

DJNZ R0LOOP1 2

由于晶振频率为12MHz,1M=1μs

该程序延时时间为:【1+1+2*255+2*160+1=

4

编写程序将内部RAM40H~60H单元清0

MOV R7,#21H

MOV R0,#40H

LOOP:MOV @R0,#00H

INC R0

DJNZ R7,LOOP

SJMP $

编程将外部RAM1000H1FFF区域的数据送到2000H2FFFH区域。

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 $

已知一内部RAMBLOCK1BLOCK2为起始地址的存储区中分别有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

SUBB A,@R1

MOV @R0,A

INC R0

INC R1

DJNZ R6,LP1

DJNZ R7,LP

SJMP $

END

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

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 ,LOOP2

INC ONE

SJMP HALT

LOOP1: INC TWO

SJMP HALT

LOOP2: INC THREE

HALT: DJNZ R7,LOOP3

SJMP $

设内部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

ORL A, B

MOV 31H, A

SJMP $

编制绝对值函数程序。绝对值函数方程如下:

假设X存于30H单元,Y存于40H单元。X Y均为补码数.

X EQU 30H

Y EQU 40H

ORG 0000H

LJMP START

START: MOV A,X

JZ LOOP

JNB ,LOOP

CPL A

ADD A,#01H

LOOP: MOV Y,A

SJMP $

END

试编写统计数据区长度的程序,设数据区从内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 $

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

ORG 0000H

LJMP START

START:MOV SP,#60H

MOV A,R7

LCALL BCDASCII

MOV 31H,A

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

设在MAMB单元中有两个补码形式的8位二进制带符号数。请编写求两数之和并把它放在SUMLSUMH单元(8位在SUML单元)的子程序。

提示:在两个8位二进制带符号数相加时,其和很可能会超过8位数所能表示的范围,从而需要采用16位数形式来表示。因此,在进行加法时、可以预先把这两个加数扩张成16位二进制补码形式,然后对它完成双字节相加。

ORG 0000H

LJMP START

START:MOV A,MA

JB ,LLA

MOV R7,#00H

SJMP LLL

LLA: MOV R7,#0FFH

LLL: MOV A,MB

JB ,LLB

MOV R6,#00H

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$

设外部RAM1000H10FFH数据区中的数均为无符号数。试编写程序,找出该区域中的数的最大值,并放人内部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 $

已知abc均为09的整数试编程求解表达式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

MOV A,CC

CLR C

SUBB A,AA

ACALL CHUNCI

ADD A,R6

MOV R6,A

MOV Y,R6

SJMP $

CHUNCI:JNB ,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

从内部RAMSCORE单元开始放有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 $

5

80C51外扩ROM为什么P0口要接一个8位锁存器P2口却不接

答:P0口既作为地址线传送地址的低8位,又要作为数据线传送8位数据,只能分时用做地址线,故P0口输出的低8位地址数据必须用锁存器锁存。锁存器的锁存控制信号为引脚ALE输出的控制信号。P2口只用作地址高8位。

若要设计一个32K×8位的外RAM存储器,分别采用21141K×4位)和62648K×8位)芯片,各需多少块存储芯片?

答:2114芯片需要:(8/4*32/1=64

6264芯片需要:32/8=4

80C51扩展26264存储器芯片,试用、对其片选,并指出它们的地址范围。

答:

地址范围:

6264110*0 0000 0000 0000 0000

1 1111 1111 1111 1111

8000H9FFFH

6264(2) 01*0 0000 0000 0000 0000

1 1111 1111 1111 1111

4000H5FFFH

6

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

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

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

接口是将外设连接到总线上的一组逻辑电路的总称。

功能:1. 地址译码与设备选择

2. 缓冲锁存数据

3. 信息的输入输出

4. 信息转换

什么是中断源?80C51有哪些中断源?CPU响应中断时,其入口地址是什么?

答:能引起中断的外部设备或内部原因称为中断源,包括外部中断源和内部中断源。

80C51中有5个中断源:

1():外部中断0

2 ():外部中断1

3TF0():定时器/计数器T0溢出中断。

4TF1():定时器/计数器T1溢出中断。

5RXTX:串行中断

入口地址:

外部中断0):0003H

定时器/计数器0T0):000BH

外部中断1):0013H

定时器/计数器1T1):001BH

串行口RITI):0023H

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

80C51的外部中断有哪几种触发方式?如何选择?

答:有电平触发方式和边沿触发方式。

通过对ICON寄存器的D0IT0D2IT1置位或清0实现。该为为0,为低电平触发方式,该位为1,为下降沿触发方式。

7

8255A各端口可以工作在几种方式下?当端口 A工作在方式2时,端口BC工作于什么方式下?

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

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

8255A芯片的地址范围为7F80H7F83H,工作于方式0A口、B口为输出口。C口低4位为输入,高4位为输出,试编写初始化程序。

MOV DPTR,#7F83H

MOV A,#1000 0001B

MOVX @DPTR, A

8255A的方式控制字和C口按位置位/复位控制字都可以写入8255A的同一控制寄存器8255A是如何区分这两个控制字的

答:看控制字的最高位D7,如果该位的值为“1”,则认为是方式控制字;反之,则认为是C口置位/复位控制字。

编写程序,采用8255AC口按位置位/复位控制字,将PC70PC41,(已知8255A各端口的地址为7FFCH-7FFFH)。

MOV DPTR,#7FFFH

MOV A,#0EH

MOVX @DPTR,A

MOV DPTR,#7FFFH

MOV A,#09H

MOVX @DPTR,A

8255A接到系统中,端口ABC及控制口地址分别为220H221H222H223H,工作在方式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 $

8

定时器T1用于对外部脉冲计数,每计满1000个脉冲后使内部RAM 60H单元内容加一,要求T1以方式1中断实现,TR1启动。

解:计数常数为: TC216100064536FC18H

由于采用T1方式1 计数方式,故方式控制字为: 0101 0000B50H

程序如下:

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 TH10FCH

MOV TL1,#18H

RETI

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

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

定时常数为:

TCH9CHTCL9CH

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 TF0WAVE

SJMP WATT

WAVE CPL

SJMP WATT

2中断方式

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

RETI

试编写程序,使T0以方式1每隔10msCPU发出中断申请,在中断服务程序中将30H单元内容减1。设晶振频率为12MHz

解:计数常数为:

由于采用T0方式1 定时方式,故方式控制字为:

0000 0001B01H

程序如下:

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

10

DAC0832在逻辑上由哪几部分组成可以工作在哪几种模式下

答:输入寄存器、转换寄存器和D/A转换器三部分组成。

单缓冲、双缓冲和直通方式。

8D/A转换器,输出电压为05V。当输入数字量为30H时,其对应的输出电压是多少?

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

DAC083280C51单片机连接时有哪些控制信号?它们的作用是什么?

答:ILE:输入锁存允许。

:片选信号。

:写输入寄存器

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

:写DAC寄存器

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

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

ADC0809是什么功能的芯片?

答:模数转换芯片。

本文来源:https://www.2haoxitong.net/k/doc/fa6aae220d22590102020740be1e650e53eacf1a.html

《单片机原理接口技术及应用课后答案—黄建新.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式