【发布时间】:2017-06-26 10:40:21
【问题描述】:
在 mikroC for PIC 中实现基于定时器的中断时遇到问题。
如果 PORTC.F0 上有按键,我想切换端口引脚 8 次,并且切换之间应该有 100 毫秒的延迟。
通常这会很容易使用延迟函数
for (i=0;i<=8;i++)
{
PORTB.F0=~PORTB.F0;
Delay_ms(100);
}
但在此期间,系统会错过任何其他按键。所以我想到了使用中断来实现解决方案。
#define SW PORTC.F0
char ttime,i;
volatile flag;
void Inittimer()
{
T1CON = 0x01;
TMR1IF_bit = 0;
TMR1H = 0x06;
TMR1L = 0x00;
TMR1IE_bit = 1;
INTCON = 0xC0;
}
void Interrupt()
{
if (TMR1IF_bit)
{
TMR1IF_bit = 0;
TMR1H = 0x06;
TMR1L = 0x00;
ttime--;
if (ttime==0)
{
flag=1;
}
}
}
void main()
{
Inittimer1();
TRISB = 0;
TRISC.F0 = 1;
PORTB = 0x00;
while(1)
{
if (SW==0)
{
ttime=3;
}
if (flag==1)
{
for (i=0;i<=8;i++)
{
PORTB=~PORTB;
flag=0;
}
}
}
}
没有任何工作。有人可以帮我更正代码吗?
【问题讨论】:
-
“没有任何效果”不是问题描述。 什么不起作用?
-
事后看来,Nothing is working 确实是一个非常模糊的评论。我正在尝试使用定时器中断每 100 毫秒执行一次 PORT 切换恰好 8 次。我尝试了很多选项,但没有一个对我有用。我最接近的是使用中断在一定时间延迟后切换端口。但无法阻止它在 n 次后切换。