标题:
51单片机定时器怎么定100微秒
[打印本页]
作者:
最高权限
时间:
2020-3-7 20:01
标题:
51单片机定时器怎么定100微秒
51单片机,晶振是11.0592,如何隔100毫秒跳一次
作者:
csmyldl
时间:
2020-3-8 00:09
用定时计数器
void Timer0Init(void) //100微秒@11.0592MHz
{
TMOD = 0x10; //设置定时器1模式1
TL1 = 0xA4; //设置定时初值
TH1 = 0xFF; //设置定时初值
TF1 = 0; //清除TF0标志
TR1 = 1; //定时器0开始计时
}
检查TF1为1时就是100us
作者:
wulin
时间:
2020-3-8 06:52
#include <reg51.h>
unsigned int i;
void InitTimer0(void) //100微秒@11.0592MHz
{
TMOD= 0x02; //设置定时器自动重载模式
TL0 = 0xA4; //设置定时初值
TH0 = 0xA4; //设置定时重载值
TR0 = 1; //定时器0开始计时
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
}
void main(void)
{
i=0;
j=0;
InitTimer0();
while(1);
}
void Timer0Interrupt(void) interrupt 1
{
i++; //100um
if(i==1000)//100ms
{
i=0;
P1=~P1;//100毫秒翻转一次
}
}
作者:
suuy79
时间:
2020-3-8 20:22
如果用51定时器,要想在11.0592MHz的频率下产生0.1S的时间,据我所知,目前好像不能实现。
当然,如果将晶振频率降到6MHz是可以通过定时器一步实现的。
如果只是希望0.1S执行一次某的代码,那办法就比较多了,软件定时,定时器计数等方法都可以完成。
作者:
我叫小大打
时间:
2020-3-10 10:55
stc烧录软件可以调用定时器、延时器程序的
void InitTimer0(void) //100微秒@11.0592MHz
{
TMOD= 0x02; //设置定时器自动重载模式
TL0 = 0xA4; //设置定时初值
TH0 = 0xA4; //设置定时重载值
TR0 = 1; //定时器0开始计时
EA = 1; //开总中断
ET0 = 1; //开定时器0中断
}
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1