AT89S52有几个定时器,C中如何调用,头文件怎么写
2个回答
展开全部
1、AT89S52共有3个定时/计数器,分返册别是定时/计数器0、1、2,比AT89S51多了一个定时/计数器2。
2、头文件应采用REG52.H,即:
#include <reg52.h>
该头文件与REG51.H的主要区别就是增加了有关定时/计数器2的特殊功能寄存器定义。主要包括:
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
3、C中的调帆唯用方式,一般有如下几步
A、设定TMOD及T2CON的值,确定其工作方式。比如TMOD |= 0x02;设定定时计数器0为定时方式2,。。。。。,其中T2CON内容决定定时计数器2的工作方式;
B、设定相应的定时计数初值;比如TH0=TL0=253;等
C、如果使用中断处理定时/计数器的溢出,则应设置允许其中断。比如ET0 = 1等。
D、根据需要启动定时器。比如TR0 = 1。
E、如果需要,应编制相应的态世培中断服务函数处理定时中断,如:
void Timer0(void) interrupt 1
{
.......
}
2、头文件应采用REG52.H,即:
#include <reg52.h>
该头文件与REG51.H的主要区别就是增加了有关定时/计数器2的特殊功能寄存器定义。主要包括:
sfr T2CON = 0xC8;
sfr RCAP2L = 0xCA;
sfr RCAP2H = 0xCB;
sfr TL2 = 0xCC;
sfr TH2 = 0xCD;
3、C中的调帆唯用方式,一般有如下几步
A、设定TMOD及T2CON的值,确定其工作方式。比如TMOD |= 0x02;设定定时计数器0为定时方式2,。。。。。,其中T2CON内容决定定时计数器2的工作方式;
B、设定相应的定时计数初值;比如TH0=TL0=253;等
C、如果使用中断处理定时/计数器的溢出,则应设置允许其中断。比如ET0 = 1等。
D、根据需要启动定时器。比如TR0 = 1。
E、如果需要,应编制相应的态世培中断服务函数处理定时中断,如:
void Timer0(void) interrupt 1
{
.......
}
展开全部
呵呵,其实Timer2在个人看来可用制任何作者想指的东西,看作腊指坦者是怎么定义的了。
当然,你如果使用keil本身提供的“头文件”的话(非官方他人修改轮桐过的),那么,Timer2 指的是 定时器2的寄存器地址,这个在头文件的定义中已经给出,你只需要对着相应AT89S52的说明文档,就明了了。
作为代码,timer2,可用作为局部变量、全局变量、宏参数、寄存器等中的任意一个,而且其意义也有作者赋予。逗局
按照个人编程的习惯,即使让个人去赋予timer2的意义的话,我也会把它定义到硬件寄存器地址所对应的名称上去的,编程的风格已经任意,但是代码的可读性也是相当重要,无论是对他人,还是自己,都是一种便捷。
当然,你如果使用keil本身提供的“头文件”的话(非官方他人修改轮桐过的),那么,Timer2 指的是 定时器2的寄存器地址,这个在头文件的定义中已经给出,你只需要对着相应AT89S52的说明文档,就明了了。
作为代码,timer2,可用作为局部变量、全局变量、宏参数、寄存器等中的任意一个,而且其意义也有作者赋予。逗局
按照个人编程的习惯,即使让个人去赋予timer2的意义的话,我也会把它定义到硬件寄存器地址所对应的名称上去的,编程的风格已经任意,但是代码的可读性也是相当重要,无论是对他人,还是自己,都是一种便捷。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询