Stap 6: Hoe het werkt?
De IR ontvanger component bevat twee IR ontvangers dat de volgorde van hun staat verandering geeft de richting van de rotatie (00 10 11 01 00... en 00 01 11 10 00...).Een van de IR-ontvangers is aangesloten tot en met A4 pin en de andere is aangesloten op B0 pin. Elke keer dat de provincie B0 pin verandert van 0 in 1 de microcontroller stijgingen of dalingen van het "teken" variabele is afhankelijk van de staat van A4 pin, hoge A4 voorwaartse draaiing en lage A4 achterwaartse draaiing:
VOID interrupt(void)
{
Als (INTCON. INTF)
{
Als (Sensor1)
{
Als (Rindrukken)
{
Als (OneMeterTicks == MaxOneMeterTicks) OneMeterTicks = 0;
OneMeterTicks ++;
}
anders
Teken ++;
}
anders
{
Als (Rindrukken)
{
OneMeterTicks--;
Als (OneMeterTicks == 0) OneMeterTicks = MaxOneMeterTicks;
}
anders
Teken--;
}
Als (abs(Ticks) > = OneMeterTicks * 10) teken = 0;
INTCON. INTF = 0;
}
}
Het aantal teken gemaakt door de verandering van B0 pin staat bepaalt de afstand reisde na schalen met factor "OneMeterTicks". De waarde van "OneMeterTicks" kan worden gewijzigd door het draaien van het wiel de "RESET" knop ingedrukt.
Als (teken < 0)
n = - teken;
anders
n = teken;
n * = 100;
Als (UButton == 1)
n / = (unsigned long int)(OneMeterTicks * 2.54); inch
anders
n / (unsigned long int) = OneMeterTicks; cm
Cijfers [2] = n / 100;
n = n % 100;
Cijfer [1] = n / 10;
Cijfer [0] = n % 10;
Ik gebruikte "Mik PRO voor PIC" te schrijven het programma.