Stap 2: Voorbeeld #1 [uitvoer]
Code
We gaan een 8-bit waarde afgelezen ADC3 (meest significante bits) en vervolgens de bijbehorende waarde van de output worden doorgeven aan onze shift register.
Om meer specifieke heb ik een tabel met waarden voor I/O Staten gemaakt:
ADC3 waarde | Output waarde | Segmenten op |
---|---|---|
0..40 | 0xFF | 0 |
41..80 | 0xFE | 1 |
81..120 | 0xFC | 2 |
121..160 | 0xF8 | 3 |
161..200 | 0xF0 | 4 |
201..255 | 0xE0 | 5 |
Opmerking: Omdat het is een gemeenschappelijk anode LED indicator moeten we de juiste pincode laag instellen wanneer we willen oplichten.
Nu, laten we schrijven wat code.
Kortom, moeten we instellen van een Timer Overflow interrupt, die leest de huidige stand van de ADC3 en de bijbehorende waarde verzenden onze shift register ongeveer elke ~ 27ms.
SEND_BYTE subroutine stuurt een 8-bit-stream van gegevens en het zakken in het shift register. Dit is een beetje vereenvoudigde functie, maar met enkele kleine verbeteringen kan universeel worden gebruikt.
Ik schreef de meeste nummers in binaire vorm, dus zal het gemakkelijker worden (tenminste voor mij) te zien die LEDs zijn ingeschakeld en welke flags gezet.