《第05章思考题和习题解答.doc》由会员分享,可在线阅读,更多相关《第05章思考题和习题解答.doc(38页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-date第05章思考题和习题解答第5章思考题和习题解答第5章 思考题和习题解答5.1 什么叫中断源?8031单片机有几个外部中断源?几个内部中断源?答:引起中断的原因,或能发出中断请求的来源,称为中断源。MCS-51单片机有5个中断源,其中外部中断0(INT0)和外部中断1(INT1)是外部中断源,定时器计数器0(T0)、定时器计数器1(T1)和串行口的中断是内部中断源。5.
2、2 8031单片机5个中断源的中断程序入口地址分别是多少?8031响应中断的最短时间是多少?答:8031单片机5个中断源的中断入口地址是固定的,如下所列:中断源中断入口地址外中断00003H定时器0000BH外中断10013H定时器1001BH串口中断0023H8031在响应中断过程中,对中断请求标志位的查询需要1个机器周期;子程序调用指令LCALL以转到相应的中断服务程序入口需要2个机器周期,因此外部中断响应的最短时间为3个机器周期。5.3 说明什么情况下可在中断入口地址开始直接编写中断服务程序,而不需要跳转。答:由于MCS-51单片机各中断源入口地址之间只相隔8个字节,因此,当中断服务程序
3、不超过8个字节时,就可以在中断入口地址开始直接编写中断服务程序,而不需要跳转。5.4 试写出设定INT0和定时器0的中断请求为高优先级和允许它们中断的程序。如果INT0和定时器0同时有中断请求时,试问MCS-51先响应哪个中断请求?为什么?答:可用字节操作指令对IE和IP进行设置:MOV IE,#83H;同时置位EA、ET0和EX0MOV IP,#03H;置位PX0和PT0也可用位操作指令进行设置,此处从略。因为本题中外中断0和定时器0同为高优先级,当它们同时发中断请求时,系统则按硬件设定的自然优先级顺序响应中断,因此MCS-51先响应外中断0的中断请求。5.5 MCS-51单片机外部中断申请
4、有几种方式?为什么外部中断一般不用电平触发方式?答:MCS-51单片机外部中断请求申请信号可以是低电平触发方式,也可以是负脉冲触发方式。对于采用负脉冲触发方式的外部中断请求标志位IE0或IE1的清“0”是由单片机硬件自动完成的,用户无需参与。对低电平触发方式的外部中断请求信号,需要外加电路并配合指令,在中断响应后将INT0、INT1 引脚电平从低电平强制为高电平,从而将INT0、INT1引脚的低电平中断请求信号撤除,可见低电平方式的外部中断请求信号的撤除比较麻烦,因此一般应尽可能采用负脉冲触发方式申请中断。5.6 某单片机系统用于检测压力、温度,另外还需要用定时器0作定时控制。如果压力超限和温
5、度超限的报警信号分别由INT0、INT1输入,中断优先权排列顺序依次为压力超限温度超限定时控制,试确定特殊功能寄存器IE和IP的内容。答:要使外部中断0、外部中断1和定时器0的中断可用,应将中断允许寄存器IE中的EX0、ET0、EX1置“1” ,另外还要将中断总允许EA置“1”。本题在考虑优先级设置时,可将压力超限和温度超限的报警信号设为高优先级,将定时控制设为低优先级,即把中断优先级寄存器IP中的PX0和PX1置“1”,从而在发生压力超限或温度超限时可中断低级的定时控制,实现异常报警的优先处理。5.7 设外部中断1为低电平触发方式,高优先级,试编写中断初始化程序。答:该中断初始化程序可用两种
6、方法编写。解法一:用位操作指令:CLR IT1;低电平触发中断请求SETB EX1 ;外中断1开中断 SETB EA ;开中断允许总控制位SETB PX1;外中断1高优先级解法二:用字节指令也可对IE和IP进行设置:MOV IE,#84H;同时置位EA和EX1ORL IP,#04H;置位PX15.8 已知8031单片机晶振频率是12MHz,定时器T1最长定时时间是多少?如果8031单片机晶振频率是6MHz,定时器T1最长定时时间又是多少?答:为实现最长的定时时间,定时/计数器应选工作方式1。 当晶振频率为12MHz时,机器周期为1s,当初值=0时达到最大定时: 定时时间为:=(216 0) 1
7、s = 65536s = 65.536ms 当晶振频率为6MHz时,机器周期为2s,当初值=0时达到最大定时:定时时间为:=(216 0) 2s = 131072s = 131.072ms5.9 已知单片机晶振频率为6MHz,要求使用T1定时50ms,工作在方式1,允许中断,试计算初值并编写初始化程序。答: 计算定时器T1的初值已知晶振频率为6MHz,则机器周期为12/fosc2s使用T1定时功能,工作在方式1,定时时间为50ms,则T1的初值为: 所以T1的初值为:TH1=9EH,TL1=58H。 定时/计数器方式寄存器TMOD的设置 要求用T1定时、工作在方式1、软启动,所以TMOD寄存器
8、应按如下设置:T1T0GATE M1 M0 GATE M1 M0 0001所以TMOD=10H。 允许T1中断,中断允许寄存器IE设置如下: T1的初始化程序如下:MOVTMOD, #10H;置定时器1工作方式1MOVTH1,#9EH;送初值MOVTL1,#58HMOVIE,#88H;开中断SETBTR1;启动定时器5.10 定时器T0用于计数控制,工作在方式2,要求每计数35次产生一个中断,试计算初值并编写初始化程序。答: 计算T0的初值:初值X = 2835 = 221 = DDH 因此,TL0的初值为DDH,重装初值寄存器TH0=DDH。 定时/计数器方式寄存器TMOD的设置: 要求用T
9、0计数、工作在方式2、软启动,所以TMOD寄存器应按如下设置:T1T0GATE M1 M0 GATE M1 M0 0110所以TMOD=06H。 当T0计数到时向CPU申请中断,所以T0应开中断,中断允许寄存器IE设置如下: T0的初始化程序如下:MOV TMOD, #06H ;设T0为方式2计数 MOV TL1, #0DDH ;T0置初值 MOV TH1, #0DDH MOVIE,#82H SETB TR0 ;启动T0开始计数5.11 已知8031单片机晶振频率是12MHz,要求用定时器T1定时。每定时1s时间到,就使P1.7引脚外接的发光二极管的状态发生变化,由亮变暗,或反之。试计算初值,
10、并编写程序。 答:要求每定时1s时间就使P1.7引脚外接的发光二极管的状态发生变化,则定时器T1需要定时1s,这个值已经超过了定时器的最大定时时间。为此,可采用定时器定时与软件计数相结合的方法来解决问题。本题用定时器T1,每隔50ms中断1次,向CPU申请中断,用R0计中断的次数。当R0计到20次中断时,则1秒时间到,使发光二极管的状态发生变化。 计算定时器的初值已知晶振频率为12MHz,则机器周期为12/fosc1s用定时器T1定时,宜取工作方式1,定时时间为50ms,则T1的初值为: 所以T1的初值为:TH1=3CH,TL1=B0H。 定时/计数器方式寄存器TMOD的设置 要求用T1定时、
11、工作在方式1、软启动,所以TMOD寄存器应按如下设置:T1T0GATE M1 M0 GATE M1 M0 0001所以TMOD=10H。 当T1定时到向CPU申请中断,所以T1应开中断,中断允许寄存器IE设置如下: 程序如下: ORG 0000H LJMP STARTORG 001BH ;T1中断入口AJMP BRT1 ORG 0100H START: CLR P1.7 MOV TMOD, #10H ;用T1定时,在方式1MOV TH1,#3CH ;送初值MOV TL1,#0B0HMOV IE,#88HSETB TR1MOV R0,#14H ;预设中断20次 LOOP:SJMP $ORG 02
12、00H ;中断服务程序 BRT1:DJNZ R0,NEXTCPL P1.7MOV R0,#14H NEXT:MOV TH1, #3CHMOV TL1,#0B0HRETI END5.12 设MCS-51单片机时钟为12MHz,请利用内部定时器T1编写从P1.1引脚输出3ms矩形波的程序,要求占空比为2:1(高电平2ms,低电平1ms)。答:要求矩形波周期3ms,占空比2:1,就是在一个周期中,高电平2ms,低电平1ms 定时器T1工作在方式1,其方式寄存器TMOD为: 计算初值:机器周期12/fosc1s对1ms定时,初值X1为:X1655361000/164536FC18H对2ms定时,初值X
13、2为:X2655362000/163536F830H 中断允许寄存器IE为: 程序如下:ORG0000HLJMPSTARTORG001BHLJMPBRT1ORG0030HSTART:MOVTMOD,#10HMOVTH1,#0F8HMOVTL1,#30HMOVIE,#88HSETBTR1SETBP1.1LOOP:SJMPLOOPORG0100HBRT0:MOVC,P1.1JCNEXTMOVTH1,#0F8HMOVTL1,#30HSJMPCOMNEXT:MOVTH1,#0FCHMOVTL1,#18HCOM:CPLP1.1RETIEND5.13 已知晶振频率为6MHz,设计程序使P1.4和P1.5外
14、接灯自动轮流点亮,间隔时间为0.5s。答:要求间隔0.5s轮流点亮两个灯,则定时器需要定时0.5s,这个值已经超过了定时器的最大定时时间。为此,可采用定时器定时与软件计数相结合的方法来解决问题。本题用定时器T0,每隔0.1s中断1次,向CPU申请中断,用R0计中断的次数。当R0计到5次中断时,则0.5秒时间到,轮流点亮两个只发光二极管。 定时/计数器方式寄存器TMOD的设置 要求用T0定时、工作在方式1、软启动,所以TMOD寄存器应按如下设置:T1T0GATE M1 M0 GATE M1 M0 0001所以TMOD=01H。 计算定时器T0的初值已知晶振频率为6MHz,则机器周期为12/fos
15、c2s采用定时功能工作方式1,定时时间为100ms,则T0的初值为: 所以T0的初值为:TH0=3CH,TL0=B0H。 当T0定时到向CPU申请中断,所以T0应开中断,中断允许寄存器IE设置如下: 程序如下:ORG0000HLJMPSTARTORG000BH ;T0中断入口LJMPBKT0ORG0100HSTART: SETBP1.4;点亮1个LED灯CLRP1.5MOVR0,#05H ;设置中断次数5次MOVTMOD, #01H;置定时器0工作方式1MOVTH0,#3CH;送初值MOVTL0,#0B0HMOVIE,#82H;开中断SETBTR0;启动定时器LOOP: CJNER0,#00H
16、, NEXT;R00则转NEXTMOVR0,#05H ;否则1s延时到,重置R0CPLP1.4CPLP1.5NEXT: SJMPLOOPORG0300HBKT0:DECR0MOVTH0,#3CH;重置初值MOVTL0,#0B0HRETIEND 5.14 用定时器/计数器T1对外部脉冲计数,工作在方式2,并将T1的计数值从P1口输出,经反相器点亮发光二极管,以二进制数的形式显示出来。画出电路图并编写程序。答:单片机电路连接如下图所示: 定时/计数器T1方式寄存器TMOD的设置依题意,外部脉冲信号从T1(P3.5) 脚输入,每发生一次负跳变计数器加1。 因为要求用T1计数、工作方式2、软启动,所以
17、TMOD寄存器应按如下设置:T1T0GATE M1 M0 GATE M1 M0 0110所以TMOD=60H。 程序如下:ORG0500H MAIN:CLR EA;关中断 MOV P1, #00H;灯全暗MOV TMOD,#60HMOV TH1, #00HMOV TL1, #00H;初值为0SETB TR1 OUT:MOV P1, TL0;计数值送P1口显示SJMP OUT 5.15 MCS-51有哪几种扩展外部中断源方法?各有什么特点?答: 采用中断与查询相结合的方法进行多外部中断源的扩展将几个外部中断源用“线或”的方法连到MCS-51的一个外中断请求输入端,同时还将它们分别连到P1口的各个
18、引脚上。这几个中断源中任何1个发中断请求时,都会向CPU申请中断,然后在中断服务程序中查询是哪个中断源发出的中断请求,并予以处理,从而实现多外部中断源的扩展。这种方法扩展外部中断源要占用P1口的若干引脚,且当外中断源多时因查询耗时而加大的中断响应的时间。 可用定时器/计数器扩展外中断将定时/计数器其设置成计数模式,工作在方式2,且设置计数的初值为FFH。只要计数输入端来1个脉冲,计数器就计满溢出,其溢出标志会自动置“1”,向CPU发出中断请求,当CPU响应中断后,在对应的中断入口处放置跳转指令,跳到对扩展的外中断进行处理的中断服务程序去,从而实现借用定时器/计数器扩展外中断。这种扩展外部中断源的方法要占用MCS-51单片机的定时器/计数器,因此有一定的局限性。-