PIC用のmikroCでタイマベースの割り込みを実装する際に問題が発生しています。PIC用mikroCを使用した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
事実上、Nothingは実際には非常に曖昧なコメントです。私はポート割り込みを使用して正確に8回ごとに100msごとにポートトグルを実装しようとしています。私は多くのオプションを働こうとしたが、どれも私のために働いていなかった。私が一番近かったのは、割り込みを使ってある時間遅れてPORTをトグルさせることでした。しかし、何度も何度もトグルするのを止めることはできません。 – Ace