文档库 最新最全的文档下载
当前位置:文档库 › 单片机原理及应用课后习题

单片机原理及应用课后习题

单片机原理及应用课后习题
单片机原理及应用课后习题

单片机原理及应用课后习题整理

————————————————————————————————作者:————————————————————————————————日期:

第一章

5.什么叫单片机?其主要特点有哪些?

答:

在一片集成电路芯片上集成微处理器、存储器、I/O 接口电路,从而构成了单芯片微型计算机,即单片机。单片机主要特点有:控制性能和可靠性高;体积小、价格低、易于产品化;具有良好的性能价格比。。7.当前单片机的主要产品有哪些?各有何特点?

答:

多年来的应用实践已经证明,80C51 的系统结构合理、技术成熟。因此,许多单片机芯片生产厂商倾力

于提高80C51 单片机产品的综合功能,从而形成了80C51 的主流产品地位,近年来推出的与80C51 兼容的主

要产品有:

ATMEL 公司融入Flash 存储器技术推出的AT89 系列单片机;

Philips 公司推出的80C51、80C552 系列高性能单片机;

华邦公司推出的W78C51、W77C51 系列高速低价单片机;

ADI 公司推出的ADμC8xx 系列高精度ADC 单片机;

LG 公司推出的GMS90/97 系列低压高速单片机;

Maxim 公司推出的DS89C420 高速(50MIPS)单片机;

Cygnal 公司推出的C8051F 系列高速SOC 单片机等。

8.简述单片机的开发过程。

答:

系统需求分析,硬件方案设计,软件编程,仿真调试,实际运行。

9.单片机应用系统开发方法有哪些新方法?

答:

在系统编程(ISP)技术,在应用编程(IAP)技术。

第二章

2.80C51 单片机的存储器的组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和

容量如何?在使用上有何特点?

答:

采用哈佛结构,在物理上设计成程序存储器和数据存储器两个独立的空间;80C51 基本型单片机片内程

序存储器为4KB,地址范围是0000H-0FFFH,用于存放程序或常数;片内数据存储器为128 字节RAM,地址范围是00H-7FH,用于存放运算的中间结果、暂存数据和数据缓冲;另外在80H-FFH 还配有21 个SFR。

3.80C51 单片机的P0~P3 口在结构上有何不同?在使用上有何特点?

答:

作为通用I/O 口时,P0、P1、P2 和P3 都是准双向口。

P0 可以作为地址/数据总线,此时是一个真正的双向口;P2 口可以作为地址线的高8 位;P3 口是双功能口,每条口线还具有不同的第二功能。

另外,P0 口的驱动能力为8 个TTL 负载,而其它口仅可驱动4 个TTL 负载。

4.如果80C51 单片机晶振频率分别为6 MHz、11.0592 MHz、12MHz 时,机器周期分别为多少?

答:

机器周期分别为2μs,1.085μs,1μs。

5.80C51 单片机复位后的状态如何?复位方法有几种?

答:

复位后,PC 内容为0000H,P0 口~P3 口内容为FFH,SP 内容为07H,SBUF 内容不定,IP、IE 和PCON 的有效位为0,其余的特殊功能寄存器的状态均为00H。复位方法一种是上电复位,另一种是上电与按键均

效的复位。

6.80C51 单片机的片内、片外存储器如何选择?

答:

80C51 的EA 引脚为访问片内、片外程序存储器的选择端。访问片内、片外数据存储器需要采用不同的指令加以区分。

7.80C51 单片机的PSW 寄存器各位标志的意义如何?

答:

CY:进位、借位标志。有进位、借位时 CY=1,否则CY=0;

AC:辅助进位、借位标志(高半字节与低半字节间的进位或借位);

F0:用户标志位,由用户自己定义;

RS1、RS0:当前工作寄存器组选择位;

OV:溢出标志位。有溢出时OV=1,否则OV=0;

P:奇偶标志位。存于ACC 中的运算结果有奇数个1 时P=1,否则P=0。

8.80C51 单片机的当前工作寄存器组如何选择?

答:

当前工作寄存器组的选择由特殊功能寄存器中的程序状态字寄存器PSW 的RS1、RS0 来决定。

9.80C51 单片机的控制总线信号有哪些?各信号的作用如何?

答:

RST/VPD:复位信号输入引脚/备用电源输入引脚;ALE/PROG :地址锁存允许信号输出引脚/编程脉冲输入引脚;EA /VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚;PSEN :外部程

序存储器选通信号输出引脚。

10.80C51 单片机的程序存储器低端的几个特殊单元的用途如何?

答:

0000H:单片机复位入口地址;0003H:外部中断0 的中断服务程序入口地址;000BH:定时/计数器0 溢出中断服务程序入口地址;0013H:外部中断1 的中断服务程序入口地址;001BH:定时/计数器1 溢出中断1的服务程序入口地址;0023H:串行口的中断服务程序入口地址。

第三章

10.完成某种操作可以采用几条指令构成的指令序列实现,试写出完成以下每种操作的指令序列。

(1)将R0 的内容传送到R1;

(2)内部RAM 单元60H 的内容传送到寄存器R2;

(3)外部RAM 单元1000H 的内容传送到内部RAM 单元60H;

(4)外部RAM 单元1000H 的内容传送到寄存器R2;

(5)外部RAM 单元1000H 的内容传送到外部RAM 单元2000H。

答:

(1)MOV A,R0

MOV R1,A

(2)MOV R2,60H

(3)MOV DPTR,#1000H

MOVX A,@DPTR

MOV 60H,A

(4)MOV DPTR,#1000H

MOV R2,A

(5)MOV DPTR,#1000H

MOVX A,@DPTR

MOV DPTR,#2000H

MOVX @DPTR, A

11.若(R1)=30H,(A)=40H,(30H)=60H,(40H)=08H。试分析执行下列程序段后上述各单元内容的变化。

MOV A,@R1

MOV @R1,40H

MOV 40H,A

MOV R1,#7FH

答:

(R1)=7FH

(A)=60H

(30H)=08H

(40H)=60H

14.试用位操作指令实现下列逻辑操作。要求不得改变未涉及的位的内容。

(1)使ACC.0 置位;

(2)清除累加器高4 位;

(3)清除ACC.3,ACC.4,ACC.5,ACC.6。

答:

(1)SETB ACC.0

(2)ANL A,#0FH

(3)ANL A,#87H

15.试编写程序,将内部RAM 的20H、21H、22H 三个连续单元的内容依次存入2FH、2EH 和2DH 单元。

答:

MOV 2FH,20H

MOV 2EH,21H

MOV 2DH,22H

16.试编写程序,完成两个16 位数的减法:7F4DH-2B4EH,结果存入内部RAM 的30H 和31H 单元,30H 单元存差的高8 位,31H 单元存差的低8 位。(注意:此题与书上的题要求不一样,书中

要求31H 单元存差的高8 位,30H 单元存差的低8 位)

答:

CLR CY

MOV 30H,#7FH

MOV 31H,#4DH

MOV R0,#31H

MOV A,@R0

SUBB A ,#4E

MOV @R0,A ;保存低字节相减结果

DEC R0

SUBB A,#2BH

MOV @R0,A ;保存高字节相减结果

17.试编写程序,将R1 中的低4 位数与R2 中的高4 位数合并成一个8 位数,并将其存放在R1 中。答:

MOV A,R2

ANL A,#0F0H

ORL R1,A

18.试编写程序,将内部RAM 的20H、21H 单元的两个无符号数相乘,结果存放在R2、R3 中,R2 中存放高8 位,R3 中存放低8 位。

答:

MOV A,20H

MOV B,21H

MUL AB

MOV R3,A

MOV R2,B

19.若(CY)=1,(P1)=10100011B,(P3)=01101100B。试指出执行下列程序段后,CY、P1 口及P3 口内容的变化情况。

MOV P1.3,C

MOV P1.4,C

MOV C,P1.6

MOV P3.6,C

MOV C,P1.0

MOV P3.4,C

- 81 -

答:

(CY)=1,(P1)=10111011B,(P3)=00111100B

第四章

9.若80C51 的晶振频率为6MHz,试计算延时子程序的延时时间。

DELAY:MOV R7,#0F6H

LP:MOV R6,#0FAH

DJNZ R6,$

DJNZ R7,LP

RET

答:延时时间: 2μs*{[1+((1+2*250+2)*246)+2]+2}=0.247486 秒(含调用指令2 个机器周期)10.在内部RAM 的30H~37H 单元存有一组单字节无符号数。要求找出最大数存入BIG 单元。试编写程序实现。

答:

ORG 0000H

BIG DATA 2FH

ONE DATA 2AH

TWO DATA 2BH

START:MOV R7,#7 ;比较次数

MOV R0,#30H

MOV ONE,A

INC R0

MOV TWO,@R0

CLR C

SUBB A,@R0

JC NEXT ;ONE 小,TWO 大继续比下一对数

MOV @R0,ONE ;ONE 大放后面(交换)

DEC R0

MOV @R0,TWO ;TWO 小放前面

INC R0 ;

NEXT:DJNZ R7,LOOP

MOV BIG,37H

SJMP $

END

11.编写程序,把累加器A 中的二进制数变换成3 位BCD 码,并将百、十、个位数分别存放在内部RAM 的50H、51H、52H 中。

答:单字节二进制数转换为压缩的BCD 码仅需要2 个字节;在将压缩的BCD 码拆分存于3 个单元。

org 0

MOV 52H,#0

MOV 51H,#0

MOV 50H,#0

MOV A,#0FDh

LCALL DCDTH

SJMP $

DCDTH:MOV R7,#8

MOV R0,A ;暂存于R0

LOOP:CLR C

MOV A,R0

RLC A

MOV R0,A

MOV R1,#51H;

MOV A,@R1 ;

ADDC A,@R1 ;

DA A ;

MOV @R1,A ;

DEC R1

MOV A,@R1

ADDC A,@R1

DA A

MOV @R1,A

DJNZ R7,LOOP

INC R1 ;50H 已是结果,R1 指向51H,51H 单元需拆分

MOV A,#00H

XCHD A,@R1

MOV 52H,A

MOV A,@R1

SWAP A

MOV @R1,A

RET

END

12.编写子程序,将R1 中的2 个十六进制数转换为ASCII 码后存放在R3 和R4 中。答:

ORG 0

MOV R1,#5BH

MOV A,R1

ANL A,#0F0H

SWAP A

ACALL ASCII

MOV R3,A

MOV A,R1

ANL A, #0FH

ACALL ASCII

MOV R4, A

SJMP $

ASCII:PUSH ACC

CLR C

SUBB A, #0AH

POP ACC

JC LOOP

ADD A, #07H

LOOP: ADD A, #30H

RET

END

13.编写程序,求内部RAM 中50H~59H 十个单元内容的平均值,并存放在5AH 单元。答:

ORG 0000H

MOV R7,#10

MOV R0,#50H

MOV B,#10

CLR C

CLR A

LOOP:ADDC A,@R0

INC R0

DJNZ R7,LOOP

DIV AB

MOV 5AH,A

SJMP $

END

第五章

2.某系统有三个外部中断源1、2、3,当某一中断源变低电平时便要求CPU 处理,它们的优先处理次

序由高到低为3、2、1,处理程序的入口地址分别为2000H、2100H、2200H。试编写主程序及中断服务程序(转至相应的入口即可)。

答:将3 个中断信号经电阻线或,接INT1。

ORG 0000H

LJMP MAIN

ORG 00013H

LJMP ZDFZ

ORG 0040H

MAIN:SETB EA

SETB EX1

SJMP $

0RG 0200H

ZDFZ:PUSH PSW

PUSH ACC

JB P1.0,DV0

JB P1.1,DV1

JB P1.2,DV2

INRET:POP ACC

POP PSW

RETI

ORG 2000H

DV0:------------

JMP INRET

ORG 2100H

DV1:------------

JMP INRET

ORG 2200H

DV2:------------

JMP INRET

8.利用定时/计数器T0 从P1.0 输出周期为1s,脉宽为20ms 的正脉冲信号,晶振频率为12MHz。试设

计程序。

答:

采用定时20ms,然后再计数1、49 次的方法实现。

a、T0 工作在定时方式1 时,控制字TMOD 配置:

M1M0=01,GATE=0,C/ T =0,可取方式控制字为01H;

b、计算计数初值X:

晶振为12 MHz,所以机器周期Tcy为1μs 。

N=t/ Tcy =20×10-3/1×10-6=20000

X=216-N=65536-20000=45536=4E20H

即应将4EH 送入TH1 中,20H 送入TL1 中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 0030H

MAIN:MOV TMOD,#01H ;设T1 工作于方式2

MOV TH0,# 4EH ;装入循环计数初值

MOV TL0,#20H ;首次计数值

LP0:SETB P1.0

ACALL NT0

CLR P1.0

MOV R7,#49 ;计数49 次

LP1:ACALL NT0

DJNZ R7,LP1

AJMP LP0

NT0:MOV TH0,# 4EH

MOV TL0,#20H

SETB TR0

JNB TF0,$

CLR TR0

CLR TF0

RET

END

9.要求从P1.1 引脚输出1000Hz 方波,晶振频率为12MHz。试设计程序。答:采用T0 实现

a、T0 工作在定时方式1 时,控制字TMOD 配置:

M1M0=01,GATE=0,C/ T =0,可取方式控制字为01H;

- 90 -

b、计算计数初值X:

- 91 -

晶振为12 MHz,所以机器周期Tcy为1μs 。1/1000=1×10-3

N=t/ Tcy =0.5×10-3/1×10-6=500

X=216-N=65536-500=65036=FE0CH

即应将FEH 送入TH0 中,0CH 送入TL0 中。

c、实现程序如下:

ORG 0000H

AJMP MAIN ;跳转到主程序

ORG 000BH ;T0 的中断入口地址

LJMP DVT0

ORG 0030H

MAIN:MOV TMOD,#01H ;设T0 工作于方式2

MOV TH0,# 0FE H ;装入循环计数初值

MOV TL0,#0CH ;首次计数值

SETB ET0 ;T0 开中断

SETB EA ;CPU 开中断

SETB TR0 ;启动T0

相关文档