51单片机定时功能如何实现?
答案:3 悬赏:60 手机版
解决时间 2021-04-13 10:34
- 提问者网友:太高姿态
- 2021-04-12 19:42
51单片机定时功能如何实现?
最佳答案
- 五星知识达人网友:猎心人
- 2021-04-12 21:13
#include"reg51.h"
#define uchar unsigned char
#define uint unsigned int
void initiation()
{
TMOD=0x11; //设定计数方式等
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
TH1=-25000/256;
TL1=-25000%256; //25MS定时初值(T1计时用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
//下面写用户程序
}
void init_timer1(void) interrupt 3
{
TH1=-25000/256;
TL1=-25000%256; //50MS定时初值(T1计时用)
//下面写用户程序
}
main()
{
initiation();
while(1)
{
;
}
}
#define uchar unsigned char
#define uint unsigned int
void initiation()
{
TMOD=0x11; //设定计数方式等
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
TH1=-25000/256;
TL1=-25000%256; //25MS定时初值(T1计时用)
ET0=1;
ET1=1;
TR0=1;
TR1=1;
EA=1;
}
void init_timer0(void) interrupt 1
{
TH0=-10000/256;
TL0=-10000%256; //10MS定时初值(T0计时用)
//下面写用户程序
}
void init_timer1(void) interrupt 3
{
TH1=-25000/256;
TL1=-25000%256; //50MS定时初值(T1计时用)
//下面写用户程序
}
main()
{
initiation();
while(1)
{
;
}
}
全部回答
- 1楼网友:迟山
- 2021-04-12 23:34
楼上
- 2楼网友:玩家
- 2021-04-12 22:49
方法有很多种:
1.用外部中断,当外部中断检测到脉冲信号时打开定时器中断并配置初值,计时,定时器中断触发后,关闭计时。这种方法占用了两个中断源,浪费。
2.仅用计时器中断,首先配置一个脉冲信号扫描时间间隔,开启中断、计时,每当计时器中断触发时,抽样脉冲信号,抽样值非倒计时信号则重新配置扫描时间间隔,若抽样值是倒计时信号,配置倒计时时间间隔,当倒计时完毕后,触发中断,重新配置为扫描时间间隔。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯