⑴ 52单片机定时器T2的TF2不清零会一直执行中断程序吗
TF2 是T2 定时器的中断标志位,是T2 寄存器中的一位(bit),要软件清零,TF2 = 0 ,就是在中断子程序内的清零命令。
⑵ c51单片机中断程序中的interrupt1,2,3是由什么决定的
中断是指由于某种事件的发生(硬件或者软件的),计算机暂停执行当前的程序,转而执行另一程序,以处理发生的事件,处理完毕后又返回原程序继续作业的过程。中断是处理器一种工作状态的描述。
1、INT0——外部中断0,由P3.2端口引入,低电平或下降沿引起。默认优先级最高。
2、INT1——外部中断1,由P3.3端口引入,低电平或下降沿引起。默认优先级第二。
3、T0——定时器/计数器0中断,由T0计数器计满回零引起。默认优先级第三。
4、T1——定时器/计数器1中断,由T1计数器计满回零引起。默认优先级第四。
5、T2——定时器/计数器2中断,由T2计数器计满回零引起。默认优先级第五。
(2)单片机t2定时器扩展阅读
单片机中断源类型
(1)外部设备请求中断。一般的外部设备(如键盘、打印机和A / D转换器等)在完成自身的操作后,向CPU发出中断请求,要求CPU为他服务。 由计答仿衫算机硬件异常或故障引起的中断,也称为内部异常中断。
(2)故障强迫中断。计算机在一些关键部位都设有故障自动检测装置。如运算溢出、存储器读出出错、外部设备故障、电源掉电以及其他报警信号等,这些装置的报警信号都能使CPU中断,进行相应的中断处理。
(3)实时时钟请求中断。在控制中遇到定时检测和控制,为此常采用一个外部时钟电路(可编程)控制其时间间隔。需要定时时,CPU发出命令使时钟电路开始工作,一旦到达规定时间,时钟电路发出中断请求,由CPU转去完成检测和控制工作。
(4)数据通道中断。数据通道中断也称直接存储器存取(DMA)操作中断,如磁盘、磁带机或CRT等直接大旁与存储器交换数据所要求的中断。
(5)程序自愿中断。CPU执行了特殊指令(自陷指令)或由硬件电路引起的中断是程序自愿中断,是指当用户调试程序时,程序自愿中断检查中间结果或寻找错误所在而采用的检查手段,如断点中断和单步清腔中断等。
⑶ 52单片机T2定时计数器装载计数值是如何计算
跟T1、T0完全一样的。T2也是16位的定时器,你要定时1S,那就是20个50ms循环,也就是定时50mS,T0T1你应该会算吧,一模一样,2^16-(定时时间/机器周期),50ms的常数还是3CB0(当然是16进制的)。
下面是我以前程序中的一段。
(以下是初始化中的)
TH2=0x3C;/**T2定时初值,50ms**/
TL2=0xB0;
T2CON=0x00;/**T2工作模式,16位定时器**/
RCAP2H=0x3C;/**T2自动重装值,每次溢出后,自动将设置数值重新装入**/
RCAP2L=0xB0;
ET2=1;/**T2中断允许**/
EA=1;
TR2=1;/**T2启动**/
(以下是中断程序的一部分)
void Timer2(void) interrupt 5/**T2中断响应程序**/
{
TR2=0;/**停止T2计数器**/
TF2=0;/**清除T2中断标志,必须**/
con1s++;/**秒计数器加1**/
if(con1s==20)/**当秒计数器计到20,代表1秒,50ms*20=1秒**/
{
con1s=0;
second++;
。。。。。。
TR2=1;
}
T2最有意思的地方是,可以自动重装载,不过它的中断标志必须人工清除,与T0T1不同。
后两者是初值必须人工装载,但中断标志可以自动清除,刚好相反。
⑷ 52单片机定时器2,T2口怎么用
T2CON(T2的控制寄存器),字节地址0C8H:
位地址
符号TF2EXF2RCLKTCLKEXEN2TR2C/T2CP/RT2
各位的定义如下:
TF2:定时/计数器2溢出标志,T2溢出时置位,并申请中断。只能用软件清除,但T2作为波特率发生器使用的时候,(即RCLK=1或TCLK=1),T2溢出时不对TF2置位。
EXF2:当EXEN2=1时,且T2EX引脚(P1.0)出现负跳变而造成T2的捕获或重装的时候,EXF2置位并申请中断。EXF2也是只能通过软件来清除的。
RCLK:串行接收时钟标志,只能通过软件的置位或清除;用来选择T1(RCLK=0)还是T2(RCLK=1)来作为串行接收的波特率产生器
TCLK:串行发送时钟标志,只能通过软件的置位或清除;用来选择T1(TCLK=0)还是T2(TCLK=1)来作为串行发送的波特率产生器
EXEN2:T2的外部允许标志,只能通过软件的置位或清除;EXEN2=0:禁止外部时钟触发T2;EXEN2=1:当T2未用作串行波特率发生器时,允许外部时钟触发T2,当T2EX引脚输入一个负跳变的时候,将引起T2的捕获或重装,并置位EXF2,申请中断。
TR2:T2的启动控制标志;TR2=0:停止T2;TR2=1:启动T2
C/T2:T2的定时方式或计数方式选择位。只能通过软件的置位或清除;C/T2=0:选择T2为定时器方式;C/T2=1:选择T2为计数器方式,下降沿触发。
CP/RT2:捕获/重装载标志,只能通过软件的置位或清除。CP/RT2=0时,选择重装载方式,这时若T2溢出(EXEN2=0时)或者T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2重装载;CP/RT2=1时,选择捕获方式,这时若T2EX引脚(P1.0)出现负跳变(EXEN2=1时),将会引起T2捕获操作。但是如果RCLK=1或TCLK=1时,CP/RT2控制位不起作用的,被强制工作于定时器溢出自动重装载模式。
T2MOD(方式寄存器),字节地址0C9H:
D7D6D5D4D3D2D1D0
------------T2OEDCEN
T2OE:T2输出允许位,当T2OE=1的时候,允许时钟输出到P1.0。(仅对80C54/80C58有效)
DCEN:向下计数允许位。DCEN=1是允许T2向下计数,否则向上计数。
T2的数据寄存器TH2、TL2和T0、T1的用法一样,而捕获寄存器RCAP2H、RCAP2L只是在捕获方式下,产生捕获操作时自动保存TH2、TL2的值。
以上是T2的相关寄存器的描述,其实用法上跟T0、T1是差不多的,只是功能增强了,设置的东西多了而已。
定时/计数器2其实用到最多的就是T2CON这个寄存器啦,它设定的定时和计数的方式。有三种工作方式,捕获,自动重装,波特率发生器。下面我是在网络里面找的少许资料:
捕获方式:
在捕获方式下,通过T2CON控制位EXEN2来选择两种方式。如果EXEN2=0,定时器2是一个16位定时器或计数器,计数溢出时,对T2CON的溢出标志TF2置位,同时激活中断。如果EXEN2=1,定时器2完成相同的操作,而当T2EX引脚外部输入信号发生1至0负跳变时,也出现TH2和TL2中的值分别被捕获到RCAP2H和RCAP2L中。另外,T2EX引脚信号的跳变使得T2CON中的EXF2置位,与TF2相仿,EXF2也会激活中断。捕获方式如图4所示。
自动重装载(向上或向下计数器)方式:
当定时器2工作于16位自动重装载方式时,能对其编程为向上或向下计数方式,这个功能可通过特殊功能寄存器T2CON(见表5)的DCEN位(允许向下计数)来选择的。复位时,DCEN位置“0”,定时器2默认设置为向上计数。当DCEN置位时,定时器2既可向上计数也可向下计数,这取决于T2EX引脚的值,参见图5,当DCEN=0时,定时器2自动设置为向上计数,在这种方式下,T2CON中的EXEN2控制位有两种选择,若EXEN2=0,定时器2为向上计数至0FFFFH溢出,置位TF2激活中断,同时把16位计数寄存器RCAP2H和RCAP2L重装载,RCAP2H和RCAP2L的值可由软件预置。若EXEN2=1,定时器2的16位重装载由溢出或外部输入端T2EX从1至0的下降沿触发。这个脉冲使EXF2置位,如果中断允许,同样产生中断。
定时器2的中断入口地址是:002BH——0032H。
当DCEN=1时,允许定时器2向上或向下计数,如图6所示。这种方式下,T2EX引脚控制计数器方向。T2EX引脚为逻辑“1”时,定时器向上计数,当计数0FFFFH向上溢出时,置位TF2,同时把16位计数寄存器RCAP2H和RCAP2L重装载到TH2和TL2中。T2EX引脚为逻辑“0”时,定时器2向下计数,当TH2和TL2中的数值等于RCAP2H和RCAP2L中的值时,计数溢出,置位TF2,同时将0FFFFH数值重新装入定时寄存器中。
当定时/计数器2向上溢出或向下溢出时,置位EXF2位。
波特率发生器:
当T2CON(表3)中的TCLK和RCLK置位时,定时/计数器2作为波特率发生器使用。如果定时/计数器2作为发送器或接收器,其发送和接收的波特率可以是不同的,定时器1用于其它功能,如图7所示。若RCLK和TCLK置位,则定时器2工作于波特率发生器方式。
波特率发生器的方式与自动重装载方式相仿,在此方式下,TH2翻转使定时器2的寄存器用RCAP2H和RCAP2L中的16位数值重新装载,该数值由软件设置。
在方式1和方式3中,波特率由定时器2的溢出速率根据下式确定:
方式1和3的波特率=定时器的溢出率/16
定时器既能工作于定时方式也能工作于计数方式,在大多数的应用中,是工作在定时方式(C/T2=0)。定时器2作为波特率发生器时,与作为定时器的操作是不同的,通常作为定时器时,在每个机器周期(1/12振荡频率)寄存器的值加1,而作为波特率发生器使用时,在每个状态时间(1/2振荡频率)寄存器的值加1。波特率的计算公式如下:
方式1和3的波特率=振荡频率/{32*[65536-(RCP2H,RCP2L)]}式中(RCAP2H,RCAP2L)是RCAP2H和RCAP2L中的16位无符号数。
定时器2作为波特率发生器使用的电路如图7所示。T2CON中的RCLK或TCLK=1时,波特率工作方式才有效。在波特率发生器工作方式中,TH2翻转不能使TF2置位,故而不产生中断。但若EXEN2置位,且T2EX端产生由1至0的负跳变,则会使EXF2置位,此时并不能将(RCAP2H,RCAP2L)的内容重新装入TH2和TL2中。所以,当定时器2作为波特率发生器使用时,T2EX可作为附加的外部中断源来使用。需要注意的是,当定时器2工作于波特率器时,作为定时器运行(TR2=1)时,并不能访问TH2和TL2。因为此时每个状态时间定时器都会加1,对其读写将得到一个不确定的数值。
然而,对RCAP2则可读而不可写,因为写入操作将是重新装载,写入操作可能令写和/或重装载出错。在访问定时器2或RCAP2寄存器之前,应将定时器关闭(清除TR2)。