《第四章-80C51基本功能单元结构与操作原理》由会员分享,可在线阅读,更多相关《第四章-80C51基本功能单元结构与操作原理(10页珍藏版)》请在金锄头文库上搜索。
1、第四章 80C51 基本功能单元结构与操作原理41 80C51 定时器/计数器方式 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 位计数方
2、式,与方式 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 为xfoscm=213 一 12设 x=1ms, f
3、osc=12MHz,则ll0-3l2106m=213 一 =7192=lCl8H12上述 m 是按 13 位计数(高 5 位,低 8 位)的减法求得的计数器初值;而 80C51 定时器方式0 的 13 位计数器是按高 8 位、低 5 位安排的,即要把郴按高 8 位、低 5 位组合成计数初值:lCl8H=l1100000 11000B=E0 l8H计数初值为 E0 l8H。42 如何使用外部引脚信号来挂制定时器/计数的启、棒?答: 定时器/计数器方式寄存器 TMOD 申,GATE 是控制方式选择位。当 GATE=0 时,计数器由内部 TRi 位控制启、停;当 GATE=l 时,计数器由 TRi
4、和外部引脚 INTi 控制启、停。为了能通过 INT0 引脚来控制定时器/计数器 T0 的启、停,必须在方式寄存器 TMOD中将 GATE 置 l:MOV TMOD,#0DH ;控制字为 0000110lB定时器/十数器可由外部引脚 INTi 控制启、停,利用这一特性,可对外部脉冲信号宽度进行测量。通过 T1 对外部脉冲信号正脉冲宽度进行测量。外部脉冲频率信号从引脚 INT1 输入,如题图 4 1 所示。正脉冲信号宽度为 TW。设计电路由外部引脚 INT1 控制 T1 计数器定时计数的启动、停止,高电平时启动计数,低电平时停止计数。INT1 高电平时,计数器中记得的数值 m 为 12 分频的时
5、钟频率 fosc 的周期数。脉冲宽度 TW 则为TW=(12/fosc) m定时器/计数器的控制字选定 T1、方式 1、外部 INT1 控制启停(GATE、1) 、定时器方式(C/T=0) ,故TMOD=1001B。令 TMOD=90H测量 Tw 子程序 STW 清单:STW: MOV TMOD,#90H ;设 Tl 控制字MOV TLl,#00H ;计数器清零MOV THl,#00HSETB P3.3 ;置 P3.3 为输入方式STLP0:MOV C,P3.3 ;读 INTl 引脚入 CYJC STLP0 ;等待外部引脚变低电平SETB TR1 ;置 INTl 启、停允许STLP1:MOV
6、C,P3.3 ;查询 INTl 状态是否变高电平JNC STLPl ;末变高等待STLP2:MOV C,P3.3 ;查询 INTl 是否变低JC STLP2 ;未变低,等待CLR TR1 ;变低,测量结束,关闭 TRlMOV 31H,THl ;计数值彻放入内存 31H、30H 单元MOV 30H,TLlRET43 计数器的飞读 是什么概念 ? 为什么要飞读?答: 80C51 计数器不具有捕获功能,不能在计数器计数瞬间捕捉住 THi、TLi 的计数值。在计数器计数期间,如果读第 1 个 8 位计数器,第 2 个计数器还在计数,恰逢溢出,再读第2 个 8 位计数器时,就会出现粗大计数误差。这就要通
7、过计数器的飞读 来解决,即先读THi 值,后读 TLi 值,然后再重复读取 THi 值。若两次 THi 值相同,读得的内容正确;若不相同,则再重复上述过程。下面是对 T0 计数的飞读子程序 RDT0。读取的计数值人R0、Rl。RDT0:MOV A,TH0 ;读 TH0 入 AMOV Rl,TL0 ;读 TL0 入 RlCJNE A,TH0,RDT0 ;比较两次读得的(TH0),不同时再读一次MOV R0,ARET44 方式 3 下,定时器/计数器可构成哪些工作状态 ? 为什么会有这些状态?答: 定时器/计数器的方式 3 是一个较为特殊的工作方式。在这样情况下,Tl 将 TFl、TRl资源出借给
8、 T0 使用。因此,在方式 3T,T0 可以构成两个独立的计数器结构,如题图 4-2(a)和题图 4-2(b)所示。 TL0 构成一个完整的 8 位定时器/计数器,而 TH0 则是一个仅能对 fosc /12 脉冲计数的 8 位定时器。 题图 4-2在方式 3 下,Tl 只能作波特率发生器使用。这时,Tl 可以设置成方式 0方式 2,用在任何不需要中断控制的场合。但是,常设置成方式 2 的自动重装状态。45 什么是定时器 /计数器溢出中断同步问题? 在什么情况下要考虑这一问题?解决这一问题的原理是什么?答: 定时器/计数器溢出中断会产生不同步司题。不同步是指在同样的计数初值下,定时器 /计数器
9、循环定时操作时,会出相邻两次计数器溢出中断响应的差异。一出现计数器溢出中断请求时,中断响应时间会因为不同的情况(如有无其他中断请求,与正在执行什么指令有关)下,时间在 38 个机器周期内变化。要求循环定时精度较高时,可采取以下修正措施:在定时器/ 计数器溢出中断响应后立即停止计数器计数,并读出计数器中的值。由于计数器溢出后又自动从零开始加计数,故这时计数器中读出的数为中断响应延迟的机器周期数。将这一数值与中断处理中从停止计数到计数启动间经历的机器周期数,一并加人到计数初值中,即得到修正。这样,可保证相邻两次中断响应间隔不会超过一个机器周期。例如,设 T1 方式 1 工作,fosc =l2MHz
10、,循环定时周期为 lms,计数初值为12106ll0-3m= 216 一 =64536=FC l8H考虑到下述中断响应重装计数初值的停止计数(CLR TRl)和重新启动计数(SETB TRl)间指令运行时间为 7 个机器周期,计数初值 FCl8H 应加上 7 个计数值,为 FClFH,而且在下述重新装载计数初值时应再加上从溢出到中断响应停止计数时的计数初值。下面是中断服务中计数初值修正的程序段。指令周期 CLR EA ;禁止 CPU 中断CLR TRl ;停止 Tl 计数1 MOV A,#1FH ;指令运行补偿后的低位初值入 A1 ADD A,TL1 ;低位初值响应误差补偿1 MOV A,#0
11、FCH ;指令运行补偿后初值高位入 A1 MOV A,THl ;计数初值高位计算1 ADDC THl,A ;计数初值高位装入1 MOV TLl,A1 SETB TR17 ;46 80C51 中断系统中有几个中断源 ?定请写出这些中断源的优先级的顺序以及这些中新的入口地址。答: (1)80C51 中断系统中的中断源80C5l 的中断系统中有五个中断源,其中有两个外部中断源,三个内部中断源。外部中断源为 INT0、INTl,可选择低电平有效或下降沿有效;内部中断源为 T0、T1 隘出中断,串行口发送/接收共用一个中断源。(2)中断源的优先级的顺序及中断的入口地址每个中断源都可选择高、低两个优先级。
12、80C51 中的中断优先级与中断入口地址示于题表 4 1 中。当低优先级组中任何一个中断源被设定为高优先级时,其优先级将比低优先级组中任何一个中断源的优先级要高。47 在外部中断中,有几种中断触发方式? 去何选择中断源的触发方式?答: 在外部中断源中,有两种中断触发方式可选择 : 低电平有效或下降沿有效。定时器控制寄存器(TCON) 中, TT0、TTl 为外部中断 INT0、INTl 引脚电平触发方式选择位。置0时,选择低电平触发 ; 置1时,选择下降沿触发。48 请叙述中断响应的 CPU 操作过程,为什么说中新操作是一个 CPU 的微查询过程?答: 在中断响应中,CPU 要完成以下自主操作
13、过程:置位相应的优先级状态触发器,以标明所响应中断的优先级别;中断源标志清零(TI、RI 除外);中断断点地址装人堆栈保护(不保护 PSW);中断入口地址装人 PC,以便便程序转到中断入口地址处。在计算机内部,中断表现为 CPU 的微查询操作。80C51 单片机中,CPU 在每个机器周期的 S6 状态中,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1 状态中,响应最高级中断请求。但是有以下情况者除外: CPU 正在处理相同或更高优先级中断;多机器周期指令中,还未执行到最后一个机器周期;正在执行中断系统的 SFR 操作,如 RETI 指令及访问 IE、IP 等操作
14、时,要延后一条指令。49 在中断请求有效并开中断状况下,能否保证立即响应中断?有什么条件?答: 在中断请求有效并开中断状况下,并不能保证立即响应中断。这是因为,在计算机内部,中断表现为 CPU 的微查询操作。80C51 单片机中,CPU 在每个机器周期的 S6 状态中,查询中断源,并按优先级管理规则处理同时请求的中断源,且在下一个机器周期的 S1 状态中,响应最高级中断请求。在以下情况下,还需要有另外的等待:CPU 正在处理相同或更高优先级中断;多机器周期指令申,还未执行到最后一个机器周期;正在执行中断系统的 SFR 操作,如 RETI 指令及访问 IE、IP 等操作时要延后一条指令。410
15、中新响应中,CPU 应完成哪些自主操作 ?这些操作状态对程序运行有什么影响 ?答: (1)中断响应中的 CPU 自主操作中断响应的自主操作是指中断响应过程中,单片机中 CPU 不依赖指令控制的内部操作行为。响应中断时 CPU 的自主操作过程:置位相应的优先级状态触发器,以标明所响应中断的优先级别;中断源标志清零(TI、RI 除外);中断断点地址装入堆栈保护(不保护 PSW);中断入口地址装入 PC,以便便程序转到中断入口地址处。中断返回时 CPU 的自主操作过程:CPU 在执行到中断返回指令 RETI 时,产生以下自主操作:优先级状态触发器清零;断点地址送入 PC,以便便程序返回到断点处。(2)自主操作状态对程序运行的影晌响应中断时的自