一个51单片机交通灯C程序,这个程序里面按键消抖和数码管都是用软件延时,用定时器0来怎么做C程序
答案:2 悬赏:0 手机版
解决时间 2021-02-19 14:42
- 提问者网友:夢醒日落
- 2021-02-19 10:10
定时器1用来做精确的时间计算了,或者说怎样用一个定时器来做所有的时间计算
最佳答案
- 五星知识达人网友:雾月
- 2021-02-19 10:18
给个定时器的示例你看看
#include<reg52.h>
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
{
TH0 = (8192 - 5000) / 32; // 重装初值
TL0 = (8192 - 5000) % 32;
num++; // 计数器加1
}
#include<reg52.h>
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
{
TH0 = (8192 - 5000) / 32; // 重装初值
TL0 = (8192 - 5000) % 32;
num++; // 计数器加1
}
全部回答
- 1楼网友:怀裏藏嬌
- 2021-02-19 11:25
void timer0init(void) //1毫秒@22.1184mhz
{
auxr |= 0x80; //定时器时钟1t模式
tmod &= 0xf0; //设置定时器模式
tl0 = 0x9a; //设置定时初值
th0 = 0xa9; //设置定时初值
tf0 = 0; //清除tf0标志
tr0 = 1; //定时器0开始计时
}
一般延时10毫秒就好了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯