AVR Assembler Övningsexempel 9 (4 / 7 steg)
Steg 4: Kodning 4-siffrig display
Låt oss tänka på hur vi vill kod denna display.
Vi vill att knappsatsen tryckknappar och har nummer sekventiellt visas på displayen när de trycker varje knapp. Så om jag trycker 1 följt av en 2 visas det på displayen som 12. Jag skulle också vilja lagra som värde, 12, för internt bruk, men vi kommer att få till det lite senare. För nu vill jag bara skriva ett nytt makro som tar dina tangenttryckningar och visar dem. Men eftersom vi bara har 4 siffror jag vill se till kan det du bara skriva fyra nummer.
En annan fråga är att hur multiplexade 4-siffrig display verk av cykling anoderna så att varje siffra är endast till för en sekund innan det visar nästa och sedan nästa och slutligen tillbaka till den första igen, etc. Vi behöver alltså ett sätt att koda detta.
Vi vill också att flytta "markören" över till höger ett utrymme när vi skriver nästa siffra. Så att om jag vill skriva 1234 till exempel, när jag skriver 1, flyttar markören så att nästa siffra jag skriver kommer att visas på nästa 7-segment display och så vidare. Allt medan detta händer jag vill fortfarande att kunna se det jag skrivit så det måste fortfarande vara cykling genom siffror och visar dem.
Låter som en tall order?
Saker är faktiskt ännu värre. Vi behöver 4 mer generella register som vi kan använda för att lagra aktuella värden för de 4 siffrorna vi vill visa (om vi ska gå igenom dem vi har att hålla dem lagras någonstans) och problemet med detta är att vi har använt upp generella register som galen och om vi inte titta vi kommer inte att ha någon vänster. Så är det förmodligen en bra idé att ta itu med frågan förr snarare än senare och visar hur du kan frigöra register med hjälp av stacken.
Så låt oss börja genom att förenkla saker och ting lite, använder stacken och frigöra några registren och då vi kommer att försöka utföra uppgiften att läsa och Visa våra siffror på 4-siffrig display.