我在mikroC for PIC中實現基於計時器的中斷時遇到問題。使用mikroC for PIC的PIC單片機中的基於計時器的中斷
如果在PORTC.F0上有一個按鍵,並且在切換之間應該有100ms的延遲,我想切換一個端口引腳8次。
正常情況下應該使用延遲功能
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;
}
}
}
}
沒有任何工作。有人可以幫我改正代碼嗎?
「沒有什麼工作」不是問題描述。 _什麼不工作? – Lundin
事後看來,沒有任何工作確實是一個非常模糊的評論。我正在嘗試使用定時器中斷每隔100ms實現一次PORT切換8次。我嘗試了許多選擇,他們都沒有爲我工作。最接近的是使用中斷在延遲一段時間後切換PORT。但無法阻止它在n次之後切換。 – Ace