本帖最后由 wambob 于 2017-9-12 22:04 编辑
stc89C52rc 的资源
新建工程时也有简单的说明
片上有3个定时器。
其相关寄存器如下:
开发板使用了11.0592晶振,1个机器周期大约1.09微秒。
定时器实现LED闪烁。
#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(flag)
DB0=0;
else
DB0=1;
}
}
//定时器T0中断函数
void tim0_int(void) interrupt 1
{
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
num++;
if(num>=50) //0.5秒切换
{
num=0;
flag=~flag;
}
}
本帖最后由 wambob 于 2017-9-12 22:04 编辑
stc89C52rc 的资源
新建工程时也有简单的说明
片上有3个定时器。
其相关寄存器如下:
开发板使用了11.0592晶振,1个机器周期大约1.09微秒。
定时器实现LED闪烁。
#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(flag)
DB0=0;
else
DB0=1;
}
}
//定时器T0中断函数
void tim0_int(void) interrupt 1
{
TH0=(65535-9173)/256; //10ms定时
TL0=(65535-9173)%256;
num++;
if(num>=50) //0.5秒切换
{
num=0;
flag=~flag;
}
}