Att få mer I/O pins på ATTiny med Skift register (2 / 6 steg)
Steg 2: Exempel #1 [utgång]
Koden
Vi ska läsa en 8-bitars värde från ADC3 (mest signifikanta bitarna) och sedan skicka motsvarande produktionsvärde till våra skiftregister.
För att vara mer specifik jag har gjort en tabell med värden för I/O stater:
ADC3 värde | Produktionsvärde | Segment på |
---|---|---|
0..40 | 0xFF | 0 |
41..80 | 0xFE | 1 |
81..120 | 0xFC | 2 |
121..160 | 0xF8 | 3 |
161..200 | 0xF0 | 4 |
201..255 | 0xE0 | 5 |
Obs: Eftersom det är en gemensam anod LED indikator vi behöva ställa in lämpligt pin låg när vi vill det att lysa upp.
Nu, låt oss skriva någon kod.
Kort sagt, måste vi ställa in en Timer Overflow avbryta, som kommer att läsa det aktuella läget i ADC3 och skicka motsvarande värde till våra skiftregister ungefärligt varje ~ 27ms.
SEND_BYTE subrutin skickar en 8-bitars ström av data och spärrarna i skiftregister. Detta är en lite förenklad funktion, men med några mindre förbättringar kan användas universellt.
Jag skrev de flesta nummer i binär form, så blir det lättare (åtminstone för mig) att se som lysdioder är aktiverade och vilka flaggor anges.