定时器的两种用法,一种是中断方式,另一种是查询方式。
不同的是中断由硬件清除计数溢出标志位TF,查询需要手动清0。
#include
unsigned num,flag;
sbit DB0=P1^0;
void time0_init() //定时器0初始化
{
TMOD=0x01; //模式1,16位计数最大65535。
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
TR0=1;
// ET0=1;
// EA=1;
}
void main() {
num=0;
flag=0;
time0_init();
while(1)
{
if(TF0)
{
num++;
TF0=0;
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
}
if(num>=50)
{
num=0;
DB0=~DB0;
}
}
}
同样实现LED每秒闪烁1次。亮0.5秒,暗0.5秒
定时器的两种用法,一种是中断方式,另一种是查询方式。
不同的是中断由硬件清除计数溢出标志位TF,查询需要手动清0。
#include
unsigned num,flag;
sbit DB0=P1^0;
void time0_init() //定时器0初始化
{
TMOD=0x01; //模式1,16位计数最大65535。
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
TR0=1;
// ET0=1;
// EA=1;
}
void main() {
num=0;
flag=0;
time0_init();
while(1)
{
if(TF0)
{
num++;
TF0=0;
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
}
if(num>=50)
{
num=0;
DB0=~DB0;
}
}
}
同样实现LED每秒闪烁1次。亮0.5秒,暗0.5秒