单片机原理及应用课后答案 下载本文

处理,于是,CPU暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。实现这种功能的部件称为中断系统。 中断系统的功能:

(1)实现中断及中断返回,(2)实现优先级排队,(3)实现优先级控制。 5.2 什么是中断嵌套?

答:当CPU响应某一中断源的请求而进行中断处理时,若有优先级更高的中断源发出中断请求,则CPU中断正在执行的中断服务程序,保留程序的断点和现场,响应更高一级的中断,即是中断嵌套。

5.3 什么是中断源?MCS-51有哪些中断源?各有什么特点? 答:向CPU发出中断请求的来源称为中断源。 MC5-51单片机的中断系统有5个中断请求源:

⑴—外部中断0请求,由引脚输入,中断请求标志为IE0。 ⑵—外部中断l请求,由引脚输入,中断请求标志为IEl。 ⑶定时器/计数器T0溢出中断请求,中断请求标志为TF0。 ⑷定时器/计数器T1 溢出中断请求,中断请求标志为TF1。 ⑸串行口中断请求,中断请求标志为TI或RI。 外部中断0:它的触发方式选择位为IT0。 IT0=0,为电平触发方式,引脚上低电平有效

IT0=1,为脉冲触发方式,引脚上的电平从高到低的负跳变有效。 IT0位可由软件置“1”或清“0”。

外部中断0请求标志位IE0。 当IT0=0,即电平触发方式时,每个机器周期的S5P2采样引脚,若脚为低电平,则置“1” IE0,否则清“0” IE0。

当IT0=1,即跳沿触发方式时,在第一个机器周期采样为低电平,则置“1” IE0。IE0=1,表示外部中断0正在向CPU申请中断。当CPU响应中断,转向中断服务程序时,由硬件清“0” IE0。

外部中断1中断原是与此相同。

定时器/计数器0:被启动计数后,从初值开始加1计数,当定时器/计数器0计数满而产生溢出时,由硬件自动使TF0置 1,并向CPU申请中断。该标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。定时器/计数器1中断原理与此相同。

串行中断请求由TI、RI的逻辑“或”得到。即不论是发送标志还是接收标志,都将发生串行中断请求。

5.4 MCS-51单片机响应外部中断的典型时间是多少?在哪些情况下,CPU将推迟对中断请求的响应?

答:3~8个机器周期。

(1) CPU正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态触发器置“1”(该触发器指出CPU所处理的中断优先级别),从而封锁了低级中断和同级中断。

(2) 所查询的机器周期不是所执行指令的最后一个机器周期。作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。

(3) 正在执行的指令是RET1或是访问IE或IP的指令。因为按MCS-51中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。

如果存在上述三种情况之一,CPU将推迟对中断请求的响应。 5.5 中断查询确认后,在下列各种运行情况中,能立即进行响应的是: (1)当前正在进行高优先级中断处理 (2)当前正在执行RETI指令

(3)当前指令是DIV指令,且正处于取指令的机器周期 (4)当前指令是MOV A, R3 答:(4)能立即进行响应

5.6 试编写出外部中断1为跳沿触发方式的中断初始化程序。 答: SETB EA

SETB EX1 SETB IT1

5.7 在MCS-51中,需要外加电路实现中断撤除的是: (1)定时中断

(2)脉冲方式的外部中断 (3)串行中断

(4)电平方式的外部中断 答:(4)需要外加电路

5.8 MCS-51有哪几种扩展外部中断源的方法?各有什么特点? 答:

(1)定时器/计数器作为外部中断源的使用方法

当它们选择为计数器工作模式,T0或T1引脚上发生负跳变时,T0或T1计数器加1,利用这个特性,可以把T0、T1引脚作为外部中断请求输入引脚,而定时器/计数器的溢出中断TF1或TF0作为外部中断请求标志。 (2)中断和查询结合的方法

若系统中有多个外部中断请求源,可以按它们的轻重缓急进行排队,把其中最高级别的中断源IR0直接接到MCS-51的一个外部中断输入端,其余的中断源IR1~IR4用“线或”的办法连到另一个外部中断输入端,同时还连到P1口,中断源的中断请求由外设的硬件电路产生,这种方法原则上可处理任意多个外部中断。

查询法扩展外部中断源比较简单,但是扩展的外部中断源个数较多时,查询时间较长。 (3)用优先权编码器扩展外部中断源

采用74LS148优先权编码器在硬件上对外部中断源进行排队,可以避免响应优先级最高的中断和响应优先级最低的中断所需的时间可能相差很大这样的问题。该方法的最大特点是结构简单,价格低廉,但该电路无法实现中断服务子程序的嵌套。

5.9 中断服务子程序和普通子程序有什么区别?

答: 1,中断服务子程序的入口地址由中断向量表确定,而普通子程序的入口地址在中断向量表以外的程序存储空间内任意设定。

2,中断服务子程序的返回指令是RETI, 而普通子程序的返回指令是RET

5.10 试编写一段对中断系统初始化的程序,允许INT0,INT1,T0,串行口中断,且使T0中断为高优先级。 答: SETB EA SETB EX0 SETB EX1

SETB ET0

SETB ES SETB PT0

5.11在MCS-51单片机中,外部中断有哪两种触发方式?如何加以区别? 答:电平触发方式和跳沿触发方式。

IT0=0时, 为电平触发方式,引脚低电平有效。 IT0=1时, 为跳沿触发方式,引脚负跳变有效。 IT1=0时,为电平触发方式,引脚低电平有效。 IT1=1时,为跳沿触发方式,引脚负跳变有效。

5.12 单片机在什么条件下可响应INT0中断?简要说明中断响应的过程。

答:1,中断允许寄存器IE中的EA=1,且EX1=1,同时没有其它优先于外部中断0的中断,若IT0=0,引脚上低电平有效;若IT0=1,引脚上的电平从高到低的负跳变有效。 2,当CPU正在处理某件事情(例如,正在执行主程序)的时候,外部发生的某一事件(如某个引脚上电平的变化,一个脉冲沿的发生)请求CPU迅速去处理,于是,CPU暂时终止当前的工作,转去处理所发生的事件。中断服务程序处理完该事件后,再回到原来被终止的地方,继续原来的工作,这样的过程称为中断。处理事件请求的过程,称为CPU的中断响应过程。 5.13 当正在执行某一中断源的中断服务程序时,如果有新的中断请求出现,问在什么情况下可响应新的中断请求?在什么情况下不能响应新的中断请求? 答:1,一个中断源的中断请求被响应,需满足以下条件: ⑴ 该中断源发出中断请求。 ⑵ CPU开中断,即中断总允许位EA=1。

⑶ 申请中断的中断源的中断允许位=1,即该中断没有被屏蔽。 ⑷ 无同级或更高级中断正在被服务。

2,中断响应是有条件的,并不是查询到的所有中断请求都能被立即响应,当遇到下列三种情况之一时,中断响应被封锁:

(1) CPU正在处理相同的或更高优先级的中断。因为当一个中断被响应时,要把对应的中断优先级状态触发器置“1”(该触发器指出CPU所处理的中断优先级别),从而封锁了低级中断和同级中断。

(2) 所查询的机器周期不是所执行指令的最后一个机器周期。作这个限制的目的是使当前指令执行完毕后,才能进行中断响应,以确保当前指令完整的执行。

(3) 正在执行的指令是RETI或是访问IE或IP的指令。因为按MCS-51中断系统特性的规定,在执行完这些指令后,需要再执行一条指令才能响应新的中断请求。 如果存在上述三种情况之一,CPU将不能进行中断响应。 习题 6

6.1 MCS-51单片机的TO、T1用作定时器时,其定时时间与哪些因素有关?

答:定时器/计数器用作定时方式时,其定时时间与时钟周期、工作方式、定时初值等因素有关。

6.2 当MCS-51单片机的TO用于工作方式3时,由于TRl位已被TO占用,该如何控制定时器T1的开启和关闭?

答:这时T1只能用作串行口波特率发生器或不需要中断的场合。因为TR1已被T0借用,所以T1的控制只有和M1、M0 两个条件,选择定时或计数模式,M1、M0选择工作方式。这时只要把方式控制字送入TMOD寄存器就可启动T1运行,如果让它停止工作,只需送入一个将T1设置为工作方式3的方式控制字就可以了。 6.3 设MCS-51单片机的晶振频率为12MHz,试用单片机的内部定时方式产生频率为100kHz

的方波信号,由P1.1脚输出。

答:依据题意,只要使P1.0引脚每隔5us取反一次即可得到10us的方波,因此定是时间T=5us,可选择定时器/计数器T0,以中断方式工作。 设定TMOD

TMOD的低4位控制T0,设定T0定时模式,即=0;工作在方式0,即 M1M0=00H;软件启动定时器,即GAME=0。TMOD的高4位与T0无关,一般取0,所以TMOD控制字为00H。

计算定时初值

晶振频率为12MHz,机器周期=1us

定时初值 =8192-5=8187=1FFBH=0001111111111011B

因TL0的高3位未用,对计算出的初值要进行修正,即低5位前插入3个0构成低8位初值,从低6位向前取8位构成高8位初值,即1111111100011011B=FF1BH ORG 0000H

AJMP MAIN ;转主程序 ORG 000BH ;T0中断矢量地址 AJMP ISER ;转中断服务程序

ORG 100H

MAIN: MOV SP,#60H ;设堆栈指针 MOV TMOD,#00H ;写控制字 MOV TL0,#1BH ;置T0 初值 MOV TH0,#0FFH SETB ET0 ;允许T0中断 SETB EA ;CPU开中断 SETB TR0 ;启动T0 SJMP $ ;等待中断

ISER: MOV TL0,#1BH ;T0中断服务子程序,重置T0 初值 MOV TH0,#0FFH CPL P1.0 ;P1.1取反

RETI END

6.4 设MCS-51单片机的晶振频率为6MHz,使用定时器T1的定时方式1,在P1.0输出周期为20ms、占空比为60%的矩形脉冲,以查询方式编写程序。

答:依据题意,使P1.0引脚输出12ms高电平,8ms低电平,即可得到周期为20ms、占空比为60%的矩形脉冲,因此定时时间T1=12ms,T2=8ms,定时器/计数器T1,以查寻方式工作。 设定TMOD

TMOD的高4位控制T1,设定T1定时模式,即=0;工作在方式1,即 M1M0=01H;软件启动定时器,即GAME=0。TMOD的低4位与T0无关,一般取0,所以TMOD控制字为10H。

计算定时初值

晶振频率为6MHz,机器周期=2us 定时初值=65536-6000 =59536=E890H =65536-4000=61536=F060H ORG 100H

MOV TMOD,#10H ;