【发布时间】:2018-05-10 10:00:43
【问题描述】:
我在 PIC12F675 中使用了带有溢出中断的 TIMER1,溢出时间约为 0.5 秒,在模拟中它是真的
溢出中断FUNCTION代码:
void interrupt int_tmr1(void) {
if((PIE1&(1<<0))&&(PIR1&(1<<0))) //TMR1 OVERFLOW CONDITION
{
GPIO^=(1<<0); //TOGGLE LED
PIR1&=~(1<<0); //CLEAR TMR1 INTERRUPT OVER FLOW FLAG
}
}
但如果我想通过编辑这样的中断函数来增加持续时间:
void interrupt int_tmr1(void)
{
if((PIE1&(1<<0))&&(PIR1&(1<<0))) //TMR1 OVERFLOW CONDITION
{
static unsigned char count=0;
if(count>10)
{
GPIO^=(1<<0); //TOGGLE LED
count=0;
}
else
{
count++;
}
PIR1&=~(1<<0); //CLEAR TMR1 INTERRUPT OVER FLOW FLAG
}
}
所需时间为 5 秒,但在模拟中为 6 秒 这是什么意思?
【问题讨论】:
-
不清楚你的问题是什么或你的问题是什么。因此,您添加了一个计数器,该计数器需要 10 次中断才能触发 LED 切换。什么事情没有按照你想要的方式发生?什么是 5 秒与 6 秒?你的定时器设置代码在哪里?等等。