ich ein Problem bin vor, während ein Timer-Interrupt basiert in mikroC für die PIC-Implementierung.Timer-Interrupt basiert in PIC-Mikrocontroller mit mikroC für PIC
Ich möchte für 8 mal einen Port-Pin wechseln, wenn ein Tastendruck auf PORTC.F0 und sollte es zu einer Verzögerung von 100 ms zwischen den Knebel sagen sein.
Normalerweise wäre dies sehr einfach mit einer Verzögerungsfunktion
for (i=0;i<=8;i++)
{
PORTB.F0=~PORTB.F0;
Delay_ms(100);
}
Aber während der Zeit, alle anderen Tastenfolgen werden vom System verpasst. Also dachte ich über die Implementierung der Lösung mit Interrupts nach.
#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;
}
}
}
}
Nichts funktioniert. Kann mir bitte jemand helfen, den Code zu korrigieren?
"Nichts funktioniert" ist keine Problembeschreibung. Was funktioniert nicht? – Lundin
Im Nachhinein ist nichts in der Tat ein sehr vager Kommentar. Ich versuche, einen PORT-Umschalter alle 100ms für genau 8 Zeiten mit Timer-Interrupt zu implementieren. Ich habe versucht, viele Optionen zu arbeiten, keiner von ihnen hat für mich funktioniert. Am nächsten kam ich, um den PORT nach einer bestimmten Zeitverzögerung mit Interrupt zu aktivieren. Aber kann es nicht davon abhalten, nach n hin und her zu schalten. – Ace