单片机原理及应用(徐泳龙主编)第2版课后习题参考答案 下载本文

NEXT: MOV R0,#10H MOV A,@R0

MOV R1,A MOV A,@R0 CLR C SUBB A,R1 JNZ LOOP3 SJMP LOOP4 MOV A,@R0 DEC R0 MOV @R0,A

LOOP2: INC R0

MOV A,R1 INC R0 MOV @R0,A MOV R1,A DEC R6

LOOP4: MOV A,@R0 DJNZ R7,LOOP2 MOV A,R6 MOV R7,A INC R6 DJNZ R6,NEXT

SJMP $ END

LOOP3: JC LOOP4

4-15 设有2个4B的BCD数:X=24350809,Y=12450379。X从片内RAM的25H单元开始存放,Y从片内RAM的35H单元开始存放,求两数的和。设数据在内存中按照低字节在前,高字节在后的顺序存放。

MOV 25H,#24H MOV 26H,#35H MOV 27H,#08H MOV 28H,#09H MOV 35H,#12H MOV 36H,#45H MOV 37H,#03H MOV 38H,#79H MOV R7,#04H MOV R0,#25H MOV R1,#35H

END

CLR C ADDC A,@R1 DA A MOV @R0,A INC R0 INC R1 DJNZ R7,LOOP SJMP $

LOOP: MOV A,@R0

4-16 设晶振频率为6MHz,试编一能延时20ms的子程序

答:一个机器周期T=12/6*106=2μs,延时20ms需要20000/2=10000个机器周期。

拟用以下程序:

工作需要机器周期数 ;1 ;1 ;1

START: MOV R6,#data1 LOOP1: MOV R7,#data2

NOP

NOP NOP NOP

;1 ;1 ;1 ;1 ;2 ;2 ;2

LOOP: NOP

DJNZ R7,LOOP DJNZ R6,LOOP RET

延时周期数为1+(5*data2+5)*data1+2,选择最合适的data1和data2 Data1=200,data2=99,延时机器周期数为10003个,延时20.006ms 4-17 利用查表技术将累加器A中的一位BCD码转换成相应的十进制数的七段码,结果仍放在A中(设显示管0~9的七段码分别是40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH)。

SUB1: INC A

RET

DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH

4-18 试编一采用查表法求1~20的二次方数的子程序。要求:X在累加器A中,1≤X≤20,二次方高位存放在R6中,低位存放在R7中。

SUB: MOV DPTR,#0100H

MOV R0,A ADD A,R0 MOV R0,A MOVC A,@A+DPTR MOV R7,A INC DPTR MOV A,R0 MOVC A,@A+DPTR MOV R6,A RET ORG 102H

DB 01H,00H,04H,00H,09H,00H,10H,00H,19H,00H DB 24H,00H,31H,00H,40H,00H,51H,00H,64H,00H DB 79H,00H,90H,00H,0A9H,00H,0C4H,00H,0E1H,00H DB 00H,01H,21H,01H,44H,01H,69H,01H,90H,01H

MOVC A,@A+PC

第五章 MCS-51单片机中断系统

5-1 MCS-51单片机的中断系统由哪些功能部件组成?分别有什么作用? 答:51单片机的中断系统由与中断有关的特殊功能寄存器(中断允许控制寄存器IE、中断优先等控制寄存器IP、定时器/计数器控制寄存器TCON、T2CON、串行口控制寄存器SCON)和6个中断源(2个外部中断源INT0[P3.2]、

INT1[P3.3],3个定时器/计数器中断源T0[P3.4]、T1[P3.5]、T2[P1.0]),1个串行接口中断源(RXD[p3.0]接收数据中断、TXDp[P3.1]发送数据中断)组成。

中断允许控制寄存器IE由七个控制位构成,其中D7位EA是所有中断的总开关,若EA=1,CPU中断允许,EA=0时,CPU屏蔽一切中断请求。其余6位D5~D0分别控制6个中断源,置1为允许申请中断,清0为禁止申请中断。其字节地址是A8H,位地址是A8H~ADH和AFH,每位都可由软件来置1或清0。

中断优先等控制寄存器IP用于设置每个中断的优先级,该寄存器由6个控制位构成(D5~D1)分别控制每个中断源的优先级,置1为高优先级,置0为低优先级。其位地址为B8H~BDH,每位都可由软件来置1或清0。

定时器/计数器控制寄存器TCON字节地址88H,其位地址88H~8FH,除D6和D4位用于控制定时器/计数器0、1启停外,其余6位分二组分别控制定时器/计数器0、1的中断信号方式(IT0/IT1),外部中断请求标志位(IE0/IE1)、溢出标志位(TF0/TF1)、T2CON字节地址为C8H,可按位寻址,但只有2位(D7和D6位)用作中断控制,当T2EX(P1.1脚)的负跳变有效时T2的硬件置D6位EXF2(T2CON.6)=1,tm CPU申请中断。当T2计数溢出时由硬件置D7(TF2,T2CON.7)=1,向CPU申请中断。

串行口控制寄存器SCON字节地址为98H,其位地址98H~ 9FH。与中断有关的只有D0位和D1位。串行口发送了一帧信息,便由硬件置TI=1,向CPU申请中断。串行口接收一邓一帧信息,便由硬件置RI=1,向CPU申请中断。

5-2 MCS-51系列单片机能提供几个中断源? 答:MCS-51系列单片机能提供6个中断源,。

5-3 MCS-51单片机的中断系统中有几个优先级?如何设定?

MCS-51单片机有2个中断优先级。各个中断源的优先级是由特殊功能寄存器IP来确定,IP中和各个中断源对应位为1时,此中断源为高优先级,否则为低优先级。在同一优先级中,各个中断源的优先顺序是由自然优先级来确定的。

5-4 CPU响应中断有哪条件?在什么情况下中断响应会受阻?

答:CPU响应中断的基本条件有以下三个:①有中断源提出中断请求。②中断总允许位EA=1,即CPU开放中断。③申请中断的中断源的中断允许位(ET2、ES、ET1、EX1、ET0、EX0)为1,即没有被屏蔽。

在中断源提出中断申请后,有二种情况可以使中断受阻:①中断允许寄存器IE中对应于有中断请求的控制位为0,屏蔽了中断请求,即CPU没无法收到中断请求。②中断允许寄存器IE的D7位(EA位)为0,即CPU没有开放中断响应。

CPU正在处理同等级或高等级中断时,CPU将在处理完该中断并返回执行一条指令后才响应新中断请求。

现行的机器周期不是所执行指令的最后一个机器周期。 正在执行的指令是RETI或访问IE、IP指令。 5-5 简述MCS-51系列单片机的中断响应过程。

答:MCS-51系列单片机的中断响应过程是按照以下顺序执行的:开中断→中断请求→中断判断→中断响应→中断返回。

5-6 MCS-51单片机中断响应时间是否固定?为什么?

答:MCS-51单片机中断响应时间不固定,因为当中断源向CPU提出中断请求时,CPU正在执行的指令的指令周期是不一样的,一般情况下中断响应时间在3~8个机器周期之间。当然如果中断到来时是在处理同级或高级中断服务程序中,则响应时间就无法估计了。

5-7 MCS-51中若要扩充8个中断源,可采用哪些方法?如何确定优先级? 答:一般可采取中断加查询方式,软件先查询到的为高优先级,最后查询到的为低优先级。

5-8 8031芯片的INT0、INT1引脚分别输入压力超限、温度超限中断请求信号,定时器/计数器0作定时检测的实时时钟,用户规定的中断优先权排队次序为:压力超限→温度超限→定时检测。要求确定IE、IP的内容,以实现上述要求。

答:IE设87H,IP设05H。

第六章 MCS-51单片机定时器/计数器

6-1 MCS-51单片机内部设有几个定时器/计数器?它们是由哪些专用寄存器组成的?

设有3个定时器/计数器T0、T1、T2。

它们由特殊功能寄存器工作方式寄存器TMOD(字节地址89H,不能按位寻址,用来控制T0和T1的工作方式),TCON控制寄存器(字节地址88H,位地址88H~8FH ,用高4位控制定时器/计数器0、1的启、停,和作溢出标志位),定时器/计数器2的控制寄存器T2CON(其字节址C8H,位地址C8H~CFH)组成,各定时器/计数器还有1个16位工作寄存器(TL0[8AH]、TH0[8CH]、TL1[8BH]、TH1[8DH]、TL2[CCH]、TH2[CDH],T2还有二字节特殊功能寄存器RLDL[CAH]和RLDH[CBH])。

6-2 MCS-51单片机的定时器/计数器有哪几种工作方式?各有什么特点? 答:MCS-51定时器/计数器有0,1,2,3四种工作模式。模式0为13位1定时器/计数器,模式1为16位1定时器/计数器,模式2为自动赋初值的8位定时器/计数器,模式3可以增加一个8位定时器(T1没有模式3)。

6-3 MCS-51定时器作定时和计数时其计数脉冲分别由谁提供?

答:MCS-51定时器作定时器时,输入的记数脉冲是由晶体振荡器的输出经12分频后得到的,所以定时器可看作是对单片机机器周期的计数器。8051定时器作计数器时,则对外部事件进行计数。

6-4 8051定时器的门控信号GATE设置为1时,定时器如何启动?

答:8051定时器的门控信号GATE为1时,通常先设置TR0或TR1为1,将T0或T1的启动控制权交由INT0或INT1。当INT0(或INT1)引脚为高电平时,相应的T0或T1才能选通工作。

6-5 定时器/计数器用作定时时,其定时时间与哪些因素有关?作计数器时,对外界计数脉冲频率有何限制?

答:作定时器时,其定时时间与晶振频率、定时计数器位数、定时初值有关。 作计数器时,要求外界脉冲频率小于晶振频率除24。

6-6 当T0设为工作方式3时,由于TR1位已被TH0占用,如何控制定时器T1的启动和关闭?

答:先设置T1的初始值和工作方式0~2,由于将T1设置为工作方式3时T1会停止工作,因此可以利用M1和M2来控制T1的启动和关闭。通常在T0工作在方式3的时候,将T1设置为方式2,8位自动装初值工作方式。

6-7 已知8051单片机的fosc=6MHz,请利用T0和P1.2输出长形波。其长形高电平宽50us,低电平宽300us。

解:(1)定时时间设为50us,低电平时间相当于持续6个定时周期。可选择于方式2,8位自动重装初值方式。X=256-6×50/12=231,即E7H

(2)设置TMOD参数:T1的四位全“0”,低四位为“0010”,TMOD=02H (3)中断IE:EA=1,ET0=1.其余为0,IE=82H

(4)TCON用于控制启停的TR0位在程序中用位设置。 (5)编写源程序如下: ORG 0000H MOV TMOD,#02H AJMP MAIN MOV IE,#82H ORG 000BH SETB TR0 AJMP T0INT SETB P1.2 ORG 0030H SETB F0 MAIN:MOV TH0,#0E7H SJMP $ MOV TL0,#0E7H T0INT:JBC F0,LOOP MOV R7,#06H DJNZ R7,LOOP2