AVR Assembler Övningsexempel 7 (8 / 12 steg)
Steg 8: Kartlägga knapptryckning värdena
Vad vi behöver göra nu är att konvertera värdena i ADCH till tal motsvarar knappen som trycktes. Vi gör detta genom att skriva ut innehållet i ADCH för varje knapptryckning och sedan konvertera det till ett decimaltal som jag gjorde i bilden. I våra avbrott hantering rutin kommer vi att överväga en rad värden som motsvarar varje knapptryckning så att ADC mappar något i det intervallet till en viss tangenttryckning.
Övning 3: gör denna mappng och sedan skriva din ADC avbrott rutin.
Här är vad jag fick för min (yours kommer mycket sannolikt olika). Märke att jag måste ställa upp med ett antal värden för varje knapptryckning.
ADC_int:; Externa avbrottshanterare
CLR analyzer; förbereda för nya numret
LDS buttonH, ADCH; ADC uppdateringar när ADCH läses clc
CPI buttonH, 240
brlo PC + 3. om ADCH är större är det en 1
LDI analyzer, 1; så Ladda analyzer med 1
rjmp avkastning. och återvända clc
CPI buttonH, 230; om ADCH är större då en 2
brlo PC + 3
LDI analyzer, 2
rjmp avkastning clc
CPI buttonH, 217
brlo PC + 3
LDI analyzer, 3
rjmp avkastning clc
CPI buttonH, 203
brlo PC + 3
LDI analyzer, 4
rjmp avkastning clc
CPI buttonH, 187
brlo PC + 3
LDI analyzer, 5
rjmp avkastning clc
CPI buttonH, 155
brlo PC + 3
LDI analyzer, 6
rjmp avkastning clc
CPI buttonH, 127
brlo PC + 3
LDI analyzer, 255; Vi kommer att ställa flash som alla på
rjmp avkastning clc
CPI buttonH, 115
brlo PC + 3
LDI analyzer, 7
rjmp avkastning clc
CPI buttonH, 94
brlo PC + 3
LDI analyzer, 8
rjmp avkastning clc
CPI buttonH, 62
brlo PC + 3
LDI analyzer, 9
rjmp avkastning clc
CPI buttonH, 37
brlo PC + 3
LDI analyzer, 0b11110000; asterisken är övre halvan på
rjmp avkastning clc
CPI buttonH, 28
brlo PC + 3
LDI analyzer, 0
rjmp avkastning clc
CPI buttonH, 17
brlo PC + 3
LDI analyzer, 0b00001111; hash-tecken är nedre hälften på
rjmp avkastning clc
CPI buttonH, 5
brlo PC + 3
LDI analyzer, 0b11000011; återuppringning är topp 2 botten 2
rjmp tillbaka
LDI analyzer, 0b11011011; annars uppstod fel avkastning:
Reti