您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 交通运输 > 第四章-80C51基本功能单元结构与操作原理
第四章80C51基本功能单元结构与操作原理4·180C51定时器/计数器方式0的13往/计数器初值如何计算?有方式1的16位/计数为什么还要13位的计数方式?答:在80C51定时器/计数器中,有方式0和方式1两种方式:方式0为13位计数方式,相当于有5位预分频的8位计数方式;方式1为16位计数方式。方式0工作状态的计数器结构,保留了80C51前身MCS一48单片机32分频的8位计数方式,由TLi的低5位和THi的8位组成13位计数器。计数初值设置不直观。方式1为16位计数方式,与方式0的区别在于方式1为16位计数,并且是置位方式。而方式0为复位方式(即单片机复位后为方式0状态)。80C51定时器川十数器的方式0的13位计数器是按5位预分频定标器、8位计数器设置的。在80C5lTHi、TLi两个8位计数器构成的13位计数中,TLi为低5位,THi为高8位。这种计数器的配置其计数初值不是按13位减法所得的数据值。例如,要实现x的定时要求,系统时钟为fosc,定时器计数脉冲周期为12//fosc,按13位减法,13位加计数器的计数初值m为x×foscm=213一12设x=1ms,fosc=12MHz,则l×l0-3×l2×106m=213一=7192=lCl8H12上述m是按13位计数(高5位,低8位)的减法求得的计数器初值;而80C51定时器方式0的13位计数器是按高8位、低5位安排的,即要把郴按高8位、低5位组合成计数初值:lCl8H=l110000011000B=E0l8H计数初值为E0l8H。4·2如何使用外部引脚信号来挂制定时器/计数的启、棒?答:定时器/计数器方式寄存器TMOD申,GATE是控制方式选择位。当GATE=0时,计数器由内部TRi位控制启、停;当GATE=l时,计数器由TRi和外部引脚INTi控制启、停。为了能通过INT0引脚来控制定时器/计数器T0的启、停,必须在方式寄存器TMOD中将GATE置l:MOVTMOD,#0DH;控制字为0000110lB定时器/十数器可由外部引脚INTi控制启、停,利用这一特性,可对外部脉冲信号宽度进行测量。通过T1对外部脉冲信号正脉冲宽度进行测量。外部脉冲频率信号从引脚INT1输入,如题图4–1所示。正脉冲信号宽度为TW。①设计电路由外部引脚INT1控制T1计数器定时计数的启动、停止,高电平时启动计数,低电平时停止计数。INT1高电平时,计数器中记得的数值m为12分频的时钟频率fosc的周期数。脉冲宽度TW则为TW=(12/fosc)×m②定时器/计数器的控制字选定T1、方式1、外部INT1控制启停(GATE、1)、定时器方式(C/T=0),故TMOD=1001××××B。令TMOD=90H③测量Tw子程序STW清单:STW:MOVTMOD,#90H;设Tl控制字MOVTLl,#00H;计数器清零MOVTHl,#00HSETBP3.3;置P3.3为输入方式STLP0:MOVC,P3.3;读INTl引脚入CYJCSTLP0;等待外部引脚变低电平SETBTR1;置INTl启、停允许STLP1:MOVC,P3.3;查询INTl状态是否变高电平JNCSTLPl;末变高等待STLP2:MOVC,P3.3;查询INTl是否变低JCSTLP2;未变低,等待CLRTR1;变低,测量结束,关闭TRlMOV31H,THl;计数值彻放入内存31H、30H单元MOV30H,TLlRET4·3计数器的飞读是什么概念?为什么要飞读?答:80C51计数器不具有捕获功能,不能在计数器计数瞬间捕捉住THi、TLi的计数值。在计数器计数期间,如果读第1个8位计数器,第2个计数器还在计数,恰逢溢出,再读第2个8位计数器时,就会出现粗大计数误差。这就要通过计数器的飞读来解决,即先读THi值,后读TLi值,然后再重复读取THi值。若两次THi值相同,读得的内容正确;若不相同,则再重复上述过程。下面是对T0计数的飞读子程序RDT0。读取的计数值人R0、Rl。RDT0:MOVA,TH0;读TH0入AMOVRl,TL0;读TL0入RlCJNEA,TH0,RDT0;比较两次读得的(TH0),不同时再读一次MOVR0,ARET4·4方式3下,定时器/计数器可构成哪些工作状态?为什么会有这些状态?答:定时器/计数器的方式3是一个较为特殊的工作方式。在这样情况下,Tl将TFl、TRl资源出借给T0使用。因此,在方式3T,T0可以构成两个独立的计数器结构,如题图4-2(a)和题图4-2(b)所示。TL0构成一个完整的8位定时器/计数器,而TH0则是一个仅能对fosc/12脉冲计数的8位定时器。题图4-2在方式3下,Tl只能作波特率发生器使用。这时,Tl可以设置成方式0~方式2,用在任何不需要中断控制的场合。但是,常设置成方式2的自动重装状态。4·5什么是定时器/计数器溢出中断同步问题?在什么情况下要考虑这一问题?解决这一问题的原理是什么?答:定时器/计数器溢出中断会产生不同步司题。不同步是指在同样的计数初值下,定时器/计数器循环定时操作时,会出相邻两次计数器溢出中断响应的差异。一出现计数器溢出中断请求时,中断响应时间会因为不同的情况(如有无其他中断请求,与正在执行什么指令有关)下,时间在3~8个机器周期内变化。要求循环定时精度较高时,可采取以下修正措施:在定时器/计数器溢出中断响应后立即停止计数器计数,并读出计数器中的值。由于计数器溢出后又自动从零开始加计数,故这时计数器中读出的数为中断响应延迟的机器周期数。将这一数值与中断处理中从停止计数到计数启动间经历的机器周期数,一并加人到计数初值中,即得到修正。这样,可保证相邻两次中断响应间隔不会超过一个机器周期。例如,设T1方式1工作,fosc=l2MHz,循环定时周期为lms,计数初值为12×106×l×l0-3m=216一=64536=FCl8H考虑到下述中断响应重装计数初值的停止计数(CLRTRl)和重新启动计数(SETBTRl)间指令运行时间为7个机器周期,计数初值FCl8H应加上7个计数值,为FClFH,而且在下述重新装载计数初值时应再加上从溢出到中断响应停止计数时的计数初值。下面是中断服务中计数初值修正的程序段。指令周期CLREA;禁止CPU中断CLRTRl;停止Tl计数1MOVA,#1FH;指令运行补偿后的低位初值入A1ADDA,TL1;低位初值响应误差补偿1MOVA,#0FCH;指令运行补偿后初值高位入A1MOVA,THl;计数初值高位计算1ADDCTHl,A;计数初值高位装入1MOVTLl,A1SETBTR17;4·680C51中断系统中有几个中断源?定请写出这些中断源的优先级的顺序以及这些中新的入口地址。答:(1)80C51中断系统中的中断源80C5l的中断系统中有五个中断源,其中有两个外部中断源,三个内部中断源。外部中断源为INT0、INTl,可选择低电平有效或下降沿有效;内部中断源为T0、T1隘出中断,串行口发送/接收共用一个中断源。(2)中断源的优先级的顺序及中断的入口地址每个中断源都可选择高、低两个优先级。80C51中的中断优先级与中断入口地址示于题表4–1中。当低优先级组中任何一个中断源被设定为高优先级时,其优先级将比低优先级组中任何一个中断源的优先级要高。4·7在外部中断中,有几种中断触发方式?去何选择中断源的触发方式?答:在外部中断源中,有两种中断触发方式可选择:低电平有效或下降沿有效。定时器控制寄存器(TCON)中,TT0、TTl为外部中断INT0、INTl引脚电平触发方式选择位。置0时,选择低电平触发;置1时,选择下降沿触发。4·8请叙述中断响应的CPU操作过程,为什么说中新操作是一个CPU的微查询过程?答:在中断响应中,CPU要完成以下自主操作过程:①置位相应的优先级状态触发器,以标明所响应中断的优先级别;②中断源标志清零(TI、RI除外);③中断断点地址装人堆栈保护(不保护PSW);④中断入口地址装人PC,以便便程序转到中断入口地址处。在计算机内部,中断表现为CPU的微查询操作。80C51单片机中,CPU在每个机器周期的S6状态中,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的S1状态中,响应最高级中断请求。但是有以下情况者除外:①CPU正在处理相同或更高优先级中断;②多机器周期指令中,还未执行到最后一个机器周期;③正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时,要延后一条指令。4·9在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?答:在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机内部,中断表现为CPU的微查询操作。80C51单片机中,CPU在每个机器周期的S6状态中,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的S1状态中,响应最高级中断请求。在以下情况下,还需要有另外的等待:①CPU正在处理相同或更高优先级中断;②多机器周期指令申,还未执行到最后一个机器周期;③正在执行中断系统的SFR操作,如RETI指令及访问IE、IP等操作时要延后一条指令。4·10中新响应中,CPU应完成哪些自主操作?这些操作状态对程序运行有什么影响?答:(1)中断响应中的CPU自主操作中断响应的自主操作是指中断响应过程中,单片机中CPU不依赖指令控制的内部操作行为。①响应中断时CPU的自主操作过程:●置位相应的优先级状态触发器,以标明所响应中断的优先级别;●中断源标志清零(TI、RI除外);●中断断点地址装入堆栈保护(不保护PSW);●中断入口地址装入PC,以便便程序转到中断入口地址处。②中断返回时CPU的自主操作过程:CPU在执行到中断返回指令RETI时,产生以下自主操作:●优先级状态触发器清零;●断点地址送入PC,以便便程序返回到断点处。(2)自主操作状态对程序运行的影晌①响应中断时的自主操作,使CPU暂停当前程序的运行,而转入中断服务程序去执行。②中断返回时的自主操作,使CPU结束中断服务程序的执行,返回到原来的程序继续执行。4·1180C51串行接口UART发送/接收的操作界面是什么?发送/接收完毕的标志往为什么设计成指令清零而不是自动清零?答:(1)80C51串行接口UART发送/接收的操作界面80C51串行接口UART发送/接收的通信操作界面,体现为累加器A与发送/接收缓冲器SBUF间的数据传送操作。当对串行口完成初始化操作后,要发送数据时,待发送的数据由A送入SBUF中,在发送控制器控制下组成帧结构,并且自动以串行方式发送到TXD端,在发送完毕后置位TI。如果要继续发送,在指令中将TI清零;接收数据时,置位接收允许位才开始串行接收操作,在接收控制器控制下,通过移位寄存器将串行数据送入SBUF中。(2)发送/接收完毕的标志位清零发送/接收完毕的标志位TI/RI都是在发送/接收到停止位时硬件置位并请求中断的。为了便于对发送/接收的查询,这两个标志位是不会自动清除的,必须用指令清零。4·12串行口控制寄存器SCON中TB8、RB8起什么作用?在什么方式下使用?答:串行口控制寄存器SCON中TB8为发送数据的第9位,RB8为接收数据的第9位。它们的作用有两个方面:①当80C51使用带奇偶校验位的8位数据通信时,使用方式2和方式3的9位数据通信,发送和接收的第9位为奇偶校验位。即在发送时通过指令将PSW(PSW·0\中的奇偶校验位P送入TB8中,与数据组成一帧一并发送;当接收方接收到一帧数据后,将数据和R8中的奇偶校验位分离,将接收的数据送人累加器A,并将PSW中的奇偶校验位P与传送过来的TB8相比较,若不同,则传送出错。②多机通信(方式2、方式3)中,TB8标明主机发送的是地址还是数据,TB8=0为数据,TB8=1为地址。此时,TB8由指令置位或清零。串行口控制寄存器SCON中RB8是多机通信(方式2、方式3)中,用来存放接收到的第9位数据的,用以表明所接收的数据的特征。可以看出,TB8、RB8只有在串行数据通信的方式2、方式3中使用
本文标题:第四章-80C51基本功能单元结构与操作原理
链接地址:https://www.777doc.com/doc-2167523 .html