用C语言编程使单片机每隔0.005s(200HZ)去读取一下数据的定时器程序???急!!!谢谢!!!!!!!!!
答案:2 悬赏:60
解决时间 2021-02-15 06:12
- 提问者网友:刀枪不入
- 2021-02-14 14:01
用C语言编程使单片机每隔0.005s(200HZ)去读取一下数据的定时器程序???急!!!谢谢!!!!!!!!!
最佳答案
- 二级知识专家网友:一个很哇塞的汉子
- 2021-02-14 14:41
路过,随便找到一个,懒得改了,自己把定时器时间改一下就可以了,晶振按12m算的,有点误差
void system_Ini()
{
TMOD|= 0x11;
TH1=0x1C; //12.000M
TL1=0x18;
IE = 0x8A;
TR1 = 1;
}
void T1zd(void) interrupt 3 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断
{
TH1 = 0x1c; //12.000
TL1 = 0x18;
//读取数据......
}
void system_Ini()
{
TMOD|= 0x11;
TH1=0x1C; //12.000M
TL1=0x18;
IE = 0x8A;
TR1 = 1;
}
void T1zd(void) interrupt 3 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断
{
TH1 = 0x1c; //12.000
TL1 = 0x18;
//读取数据......
}
全部回答
- 1楼网友:duile
- 2021-02-14 16:10
单片机中通过中断的方式来调用定时器。
具体的调用方式可以参考通过如下程序:
程序功能:利用定时器进行定时,实现每秒中led闪烁一次
#include
sbit led = p0^0;
unsigned int num;
void main(void)
{
tmod = 0x00; // 工作方式0
th0 = (8192 - 5000) / 32; // 12m晶振下定时5ms
tl0 = (8192 - 5000) % 32;
ea = 1; // 开总中断
et0 = 1; // 开定时器中断
tr0 = 1; // 启动定时器
while(1)
{
if(num == 200) // 定时1秒钟到
{
num = 0; // 计数器清零
led = ~led; // led灯取反,实现1秒闪烁一次
}
}
}
void timer() interrupt 1 // 定时器1工作与方式0
{
th0 = (8192 - 5000) / 32; // 重装初值
tl0 = (8192 - 5000) % 32;
num++; // 计数器加1
}
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯