Stap 8: Kaart uit de ToetsIndrukken (KeyPress) waarden
Wat we moeten doen is nu de waarden in ADCH converteren naar getallen overeenkomen met de toets waarop is gedrukt. We doen dit door het schrijven van de inhoud van ADCH voor elke ToetsIndrukken (KeyPress) en die vervolgens te converteren naar een decimaal getal zoals ik deed in de afbeelding. In onze interrupt routine behandeling zullen we een hele reeks van waarden als corresponderend met elke ToetsIndrukken (KeyPress) zodat de ADC om het even wat in dat bereik koppelen aan een bepaalde ToetsIndrukken (KeyPress zal) overwegen.
Oefening 3: het doen van deze mappng en vervolgens herschrijven uw ADC interrupt routine.
Hier is wat ik kreeg voor mijn (jou zullen zeer waarschijnlijk afwijken). Merk op dat ik heb het opzette met een bereik van waarden voor elke ToetsIndrukken (KeyPress).
ADC_int: ; External interrupt handlerclr analyzer ; prepare for new numberlds buttonH,ADCH ; ADC updates when ADCH is read clccpi buttonH,240brlo PC+3 ; if ADCH is bigger then it's a 1ldi analyzer,1 ; so load analyzer with a 1rjmp return ; and return clccpi buttonH,230 ; if ADCH is bigger then a 2brlo PC+3ldi analyzer,2rjmp return clccpi buttonH,217brlo PC+3ldi analyzer,3rjmp return clccpi buttonH,203brlo PC+3ldi analyzer,4rjmp return clccpi buttonH,187brlo PC+3ldi analyzer,5rjmp return clccpi buttonH,155brlo PC+3ldi analyzer,6rjmp return clccpi buttonH,127brlo PC+3ldi analyzer,255 ; we will set flash as all onrjmp return clccpi buttonH,115brlo PC+3ldi analyzer,7rjmp return clccpi buttonH,94brlo PC+3ldi analyzer,8rjmp return clccpi buttonH,62brlo PC+3ldi analyzer,9rjmp return clccpi buttonH,37brlo PC+3ldi analyzer,0b11110000 ; asterisk is top half onrjmp return clccpi buttonH,28brlo PC+3ldi analyzer,0rjmp return clccpi buttonH,17brlo PC+3ldi analyzer,0b00001111 ; hash sign is bottom half onrjmp return clccpi buttonH,5brlo PC+3ldi analyzer,0b11000011 ; redial is top 2 bottom 2rjmp return ldi analyzer,0b11011011 ; otherwise error occurred return:reti