6-1 简述中断、中断源、中断嵌套及中断优先级的含义。
答: 中断是指计算机在执行某一程序的过程中,由于计算机系统内、外的某种原因而必须终止原程序的执行,转去完成相应的处理程序,待处理结束之后再返回继续执行被终止原程序的过程。中断源指向 CPU 提出中断申请的设备,包括中断请求信号的产生及该信号怎样被CPU 有效地识别,要求中断请求信号产生一次,只能被CPU 接收处理一次,即不能一 次中断申请被CPU 多次响应。当 CPU 正在执行中断服务程序时,又有中断优先级更高的中断申请产生,CPU 就会暂停原来的中断处理程序而转去处理优先级更高的中断请求,处理完毕后再返回原低级中断服务程序,这一过程称为中断嵌套.中断优先级指在实际应用系统中往往有多个中断源,且中断申请是随机的,有时还可能会有多个中断源同时提出中断申请,但CPU 一次只能响应一个中断源发出的中断请求,CPU 响应哪个中断请求,就需要用软件或硬件安排一个优先顺序,即中断优先级排队。
6-2 MCS-51 单片机提供了几个中断源?有几级中断优先级别?各中断标志是如何产生的又如何清除这些中断标志?各中断源所对应的中断矢量地址是多少?
答:(1)MCS-51 单片机提供了5 个中断源: INT0 、INT1 、T0、T1、串行口。 (2)MCS-51 系列单片机有两个中断优先级,每一个中断请求源均可编程为高优先级中 断或低优先级中断,从而实现两级中断嵌套。
(3)外部中断可以设置边沿触发或者电平触发,靠软件置位。边沿触发进入中断程序后硬件自动清中断标志。电平触发需要软件清除中断标志位,还需在中断响应后把中断请求信号引脚从低电平强制改变为高电平。 (4)定时器T0、T1 计数溢出产生中断,进入中断程序后由硬件自动清除标志位TF0 或TF1。 (5)串行口发送完成或者接收到数据就触发中断,由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清除中断标志位。使用软件清除中断标志位的方法是: CLR TI ;清TI 标志位 CLR RI ;清RI 标志位
(6)各中断源对应的中断矢量地址分别为: 中断源 中断矢量 外部中断 0 0003H 定时器T0 中断000BH 外部中断1 0013H
定时器T1 中断001BH 串行口中断0023H
定时器中断T2(仅52 系列有) 002BH
6-3 外部中断源有电平触发和边沿触发两种触发方式,这两种触发方式所产生的中断过程有何不同?怎样设定?
答: 采用中断电平触发方式时,中断请求标志IT0=0,CPU 在每个机器周期的S5P2 期间采样,一旦在P3.2( INT0 )引脚上检测到低电平,则有中断申请,使IE0 置位(置1),向CPU 申请中断。在电平触发方式中,在中断响应后中断标志位IE0 的清0 由硬件自动完成,但由于CPU 对P3.2( INT0 )引脚没有控制作用,使中断请求信号的低电平可能继续存在,在以后的机器周期采样时又会把已清0 的IE0 标志位重新置1,所以, 在中断响应后必须采用其它方法撤消该引脚上的低电平,来撤除外部中断请求信号,否则有可能再次中断造成出错。采用边沿触发方式时,IT0=1,CPU 在每个机器的S5P2 期间采样,当检测到前一周期为高电平,后一周期为低电平时,使标志IE0 置1,向CPU 申请中断,此标志位一直保持到CPU 响应中断后,才由硬件自动清除。在边沿触发方式中,为保证CPU 在
两个机器周期内检测到由高到低的负跳变,高电平与低电平的持续时间不得少于一个机器周期的时间。
6-5 MCS-51 中断响应时间是否固定?为什么?
答: MCS-51 中断响应时间不固定。对一个单一中断系统,MCS-51 单片机对外部中断请求的响应时间在3—8 个机器周期。外部中断的最短的响应时间为3 个机器周期,其中中断请求标志位查询占1 个机器周期,而这个机器周期恰好又是处于指令的最后一个机器周期,该指令结束后中断即被响应,CPU 接着执行子程序调用指令LCALL 转到相应的中断服务程序入口,需2 个机器周期,所以,外部中断响应最短时间为3 个机器周期。外部中断响应的最长时间为8 个机器周期:发生在CPU 进行中断标志查询时,刚好是开始执行RETI 或是访问IE 或IP 的指令,则需把当前指令执行完再继续执行一条指令后,才能响应中断,最长需2 个机器周期。接着再执行一条指令,按最长指令(乘法指令MUL和除法指令DIV)来算,也只有4个机器周期。加上硬件子程序调用指令LCALL的执行,需要2 个机器周期。所以,外部中断响应最长时间为8 个机器周期。对于多级中断系统,响应时间无法计算。 7-1 定时/计数器有哪些特殊功能寄存器,它们有几种工作方式?如何设置? 答:(1)定时/计数器控制寄存器(TCON)、工作方式寄存器(TMOD)。
(2)定时/计数器T0 和T1 有四种不同的工作方式:方式0、方式1、方式2、方式3。 (3)4 种工作方式由TMOD 中的M1 和M0 两位决定。
当 TMOD 中M1M0=00 时,定时/计数器选定方式0 进行工作。 当 TMOD 中M1M0=01 时,定时/计数器选定方式1 进行工作。 当 TMOD 中M1M0=10 时,定时/计数器选定方式2 进行工作。 当 TMOD 中M1M0=11 时,定时/计数器选定方式3 进行工作。
7-2 如果采用晶振的频率为3 MHz,在定时/计数器工作方式0,1,2 下,其最大的定时时间分别为多少?
答:晶振的频率fOSC=3MHz时,机器周期为Tcy=12×(1/3MHz)=4μs。
(1)方式0 为13 位定时/计数器,计数值N = 213 – x = 8 192 x。计数初值x是由TH0 和TL0设定的初值。x = 0 时为最大计数值8 192,即计数范围为1~8 192(213)。定时时间为Td =(8 192 x) × Tcy。最大定时时间为x=0 时,Td =32768μs=32.768ms。
(2)方式1 为16 位定时/计数器,计数值N = 216 – x = 65536 x。计数初值x是由TH0 和TL0设定的初值。x = 0 时为最大计数值65 536,即计数范围为1~65 536(216)。定时时间为Td = (65536 x) × Tcy。最大定时时间为x=0 时,Td =262144μs=262.144ms。
(3)方式2 为8 位自动重装初值定时/计数器,计数值N = 28 – x = 256 x。计数初值x是由TH0 和TL0 设定的初值。x = 0 时为最大计数值256,即计数范围为1~256(28)。定时时间为Td = (256 x) × Tcy。最大定时时间为x=0 时,Td =1024μs=1.024ms。
7-5 采用定时/计数器T0 对外部脉冲进行计数,每计数100 个脉冲后,T0 转为定时工作方式。定时1 ms 后,又转为计数方式,如此循环不止。假定MCS-51 单片机的晶体振荡器频率为6 MHz,请使用方式1 实现,要求编写出程序。 答:编写程序如下: ORG 0000H
START: CLR TR0 MOV TMOD, #05H
MOV TH0, #0FFH MOV TL0, #9CH ;计数器初始化 S0: JBC TF0, NEXT SJMP S0
NEXT: CLR TR0 MOV TMOD, #01H MOV TH0, #0F8H MOV TL0, #30H ;定时器初始化 SETB TR0
S1: JBC TF0, START SJMP S1 END
7-9 利用定时/计数器T0 产生定时时钟,由P1 口控制8 个指示灯。编一个程序,使8 个指示灯依次一个一个闪动,闪动频率为20 次/秒(8 个灯依次亮一遍为一个周期)。 答:采用晶体振荡器频率为12MHz,每个灯的闪烁周期是50ms,采用工作方式1。 ORG 0000H AJMP START ORG 000BH AJMP TIME0 ORG 0030H
START: MOV SP, #5FH MOV R7, #0FEH
MOV TMOD, #01H ;T0在工作方式1 MOV TH0, #3CH MOV TL0, #0B0H SETB EA SETB ET0 SETB TR0
S0: AJMP S0 ;此处放任意程序段 TIME0: PUSH ACC PUSH PSW MOV P1, R7 MOV A, R7 RL A
MOV R7, A
MOV TH0, #3CH MOV TL0, #0B0H POP PSW POP ACC RETI END
7-12 简述特殊功能寄存器SCON,TCON,TMOD 功能。