51单片机怎么用定时器记录两次外部中断的时间?C语言应该如何编程?
voidcounter(void)interrupt0{EX0=0;Delay10ms(1);Count++;Delay10ms(1);EX0=1;}voidTimer_...
void counter(void) interrupt 0
{
EX0=0;
Delay10ms(1);
Count++;
Delay10ms(1);
EX0=1;
}
void Timer_0(void) interrupt 1
{
TH0=0x3c; //0.1s
TL0=0xb0;
t0++;
}
好像缺少了什么,不能实现功能 展开
{
EX0=0;
Delay10ms(1);
Count++;
Delay10ms(1);
EX0=1;
}
void Timer_0(void) interrupt 1
{
TH0=0x3c; //0.1s
TL0=0xb0;
t0++;
}
好像缺少了什么,不能实现功能 展开
2个回答
展开全部
我51的时钟寄存器了解的不多,因此以概念形式来述说下。
第一需要定时器初始化:
a:中断寄存器初始化
b:计数寄存器初始化
c:重装填寄存器初始化(当计数寄存器计数完了后,使用这个寄存器,还原计数寄存器)
d:分频值 主频/2^分频值 =定时器的频率
e:使能
第二部需要根据中断向量设置中断函数
void Timer_0(void) interrupt 中断向量值//定时器中断函数的向量值参照芯片文档
{
你想做的处理;
SR寄存器复原;//进入中断的标志寄存器,不清除的话,立马又进中断
}
第三部调用
int main(){
系统时钟初始化函数();//设置主频
定时器初始化函数();
while(1){
每次到达你设定的时间就进入中断函数一次
}
}
希望对你有帮助
第一需要定时器初始化:
a:中断寄存器初始化
b:计数寄存器初始化
c:重装填寄存器初始化(当计数寄存器计数完了后,使用这个寄存器,还原计数寄存器)
d:分频值 主频/2^分频值 =定时器的频率
e:使能
第二部需要根据中断向量设置中断函数
void Timer_0(void) interrupt 中断向量值//定时器中断函数的向量值参照芯片文档
{
你想做的处理;
SR寄存器复原;//进入中断的标志寄存器,不清除的话,立马又进中断
}
第三部调用
int main(){
系统时钟初始化函数();//设置主频
定时器初始化函数();
while(1){
每次到达你设定的时间就进入中断函数一次
}
}
希望对你有帮助
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询