标题:
IAP15F2定时器模式
[打印本页]
作者:
风景第三
时间:
2017-9-16 21:00
标题:
IAP15F2定时器模式
各位大佬,我想用定时器0来设置10S读取一次温度并显示在数码管上,
当我用IAP15单片机的定时器0的模式1(16位)时代码如下:
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模
TMOD |= 0x01;
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1;
ET0=1;
}
void Time0 () interrupt 1
{
u16 T;
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
i++;
if(i==10000) //10s
{
i=0;
T=Ds18b20ReadTemp(); //读取温度
Tempdatapros(T); //数据转换
TF0=0; //清除中断标志位
}
}
啥反应都没有。
但是换成模式1(16位自动重装载时),代码如下:
void Timer0Init(void) //1毫秒@11.0592MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式(16位自动重装载)
TL0 = 0xCD; //设置定时初值
TH0 = 0xD4; //设置定时初值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
EA=1;
ET0=1;
}
void Time0 () interrupt 1
{
u16 T;
i++;
if(i==10000) //10s
{
i=0;
T=Ds18b20ReadTemp(); //读取温度
Tempdatapros(T); //数据转换
TF0=0; //清除中断标志位
}
}
结果就正确了,
有大佬知道这是为什么吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1