R2
auf 0 kurzgeschlossen. Bei einer gedrückten Taste wird der zugehörige Eingang auf 1 gezogen. Drei der 8 Bits am KEY Port werden nicht von der KEY API interpretiert. Sie stehen der Anwendung frei zur Verfügung. Auf dem Herkunftsboard AVR-Ctrl könnten dort analoge Signale angeschlossen werden.
Schaltplan angeschlossener Tasten
Nicht im Schaltplan enthalten ist der in diesem Beispiel benutzte Anschluß des LCD als Anzeige. Hierzu wird auf das Beispielprojekt: display verwiesen.
Die Bibliothek muß intern mit den folgenden Parametern übersetzt werden. Dies kann durch Benutzung der originalen Boardkonfiguration über --enable-board=avrctrl-8535-8mhz-small
erreicht werden:
AVRHAL_LIB_KEY_PORT="PORTA
"AVRHAL_LIB_KEY_PORT_DDR="DDRA
"AVRHAL_LIB_KEY_PORT_IN="PINA
"
#include <avrhal/delay.h>
#include <avrhal/key.h>
#include <avrhal/lcd.h>
int main(void) { uint8_t scancode, scroll_pos = 0; uint8_t scroll[] = " press a key.. "; key_init(); lcd_init((2 /* rows */ << 6) + 16 /* columns */); lcd_control(1, 0, 0); // cursor block off
while (1) { scancode = key_scancode(); lcd_clear(); lcd_gotoxy(4,1); lcd_printhex(scancode); lcd_gotoxy(10,1); lcd_print3(scancode); lcd_gotoxy(0,0); lcd_putstr(&scroll[strlen(scroll) - 1 - (scroll_pos++ >> 3)]); if (scroll_pos == 8 * strlen(scroll)) scroll_pos = 0; delay_us(25000); } } /* main() */
doc/examples/keys
entnommen werden.[avr@host] > avr-gcc -g -O2 -Wall -Wstrict-prototypes -Wa \ -mmcu=at90s8535 -DAVRHAL_CONFIG_avrctrl_8535_8mhz_small \ -c -o main.o main.c
[avr@host] > avr-gcc -Wl,-Map=keys.map,--cref -mmcu=at90s8535 \ -o keys.out main.o -lavrhal-avrctrl-8535-8mhz-small
[avr@host] > avr-objcopy -O binary -R .eeprom keys.out keys.out-rom.bin [avr@host] > avr-objcopy -O ihex -R .eeprom keys.out keys.out-rom.hex [avr@host] > avr-objcopy -O srec -R .eeprom keys.out keys.out-rom.s19
S00F00006B6579732D726F6D2E733139AE S113000010C02AC029C028C027C026C025C024C0CB S113001023C022C021C020C01FC01EC01DC01CC0E0 S11300201BC011241FBECFE5D2E0DEBFCDBF10E060 S1130030A0E6B0E0E2EEF3E003C0C89531960D927D S1130040A837B107D1F710E0A8E7B0E001C01D92CE S1130050AC37B107E1F701C0D3CFCFE4D2E0DEBFC4 S1130060CDBFEE2480E1CC2EDD2E0894C11CD11C22 S1130070BD2DAC2DE0E6F0E001900D928A95E1F7FC S11300808AB387708ABB80E976D084E0DAD089B3FA S1130090082F1127087F107043D061E084E0E7D077 S11300A0802F49D161E08AE0E2D0802F992705D1E1 S11300B060E0862FDCD0FD2DEC2D01900020E9F7C7 S11300C031978E2D869586958695E81BF109319793 S11300D0E3948E2F9F2FE2D08E2D9927FD2DEC2DAA S11300E001900020E9F73197EC19FD09EE0FFF1F8D S11300F0EE0FFF1FEE0FFF1F8E179F0721F088EAF8 S113010091E603D0C4CFEE24FACFE82FF92F30962E S113011031F000000000000000003197D1F708958D S113012081E004D080ED97E0F0DF0895282F85B3B7 S11301308870922F907F892B85BBAA9AAA9885B341 S113014088702295207F822B85BBAA9AAA9808954D S1130150282F95B39870807F8160982B95BBAA9ABD S1130160AA9885B388702295207F2160822B85BB55 S1130170AA9AAA980895982F8F73809378008093F1 S11301807200805C80937300892F82958695869592 S1130190837011F0833021F483E080937A0005C0EA S11301A0991F9927991F90937A0084B3876F84BB12 S11301B080E29EE4AADF85B38870806385BBAA9A37 S11301C0AA9888E893E1A1DF85B38870806385BB32 S11301D0AA9AAA988EE690E098DF85B38870806327 S11301E085BBAA9AAA9882E390E08FDF85B38870D2 S11301F0806285BBAA9AAA9882E390E086DF85B3E1 S11302008870806285BBAA9AAA9885B38870806832 S113021085BBAA9AAA9882E390E077DF85B38870B9 S113022085BBAA9AAA9885B38870806685BBAA9A6A S1130230AA9882E390E069DF73DF2AD087E001D0D7 S11302400895992782FF02C02CE001C028E081FFB5 S113025002C02A6001C0286080FF02C0296001C07A S11302602860822F63DF82E390E04FDF0895282F18 S1130270962F80917A00982390937B00E0E7F0E03A S1130280E90FF11D209379008081820F67D00895D2 S113029082E04CDF80ED97E038DF0895CF93DF9361 S11302A0D92FC82F8881882329F089915DD088812E S11302B08823D9F7DF91CF9108950F931F93CF939C S11302C0DF93D92FC82F83E0C83ED80760F58C2F61 S11302D09D2F64E670E06FD0062F172F862F805D68 S11302E043D0912F802F64E670E053D0C81BD90B04 S11302F08C2F9D2F6AE070E05ED0062F172F862F7B S1130300805D32D0912F802F23E0880F991F2A958A S1130310E1F7800F911F800F911FC81BD90B8C2F01 S1130320805D22D003C084E790E0B8DFDF91CF91F5 S11303301F910F910895CF93982F82958F70805DB0 S11303408A3308F0895F9F70C92FC05DCA3308F0F3 S1130350C95F0AD08C2F08D0CF9108958068E6DE5B S113036080ED97E0D2DE0895F3DE82E390E0CDDE07 S1130370809179008F5F809379009091780089173C S113038031F480917B008F5F682F80E070DF0895E7 S113039008955527002480FF02C0060E571F660FDC S11303A0771F6115710521F096958795009799F748 S11303B0952F802D0895AA1BBB1B51E107C0AA1FCE S11303C0BB1FA617B70710F0A61BB70B881F991FF2 S11303D05A95A9F780959095682F792F8A2F9B2F8E S10503E008957A S11303E22070726573732061206B65792E2E200054 S10B03F2004000004572720096 S9030000FC
[avr@host] > avr-objdump -x keys.out > keys.inf [avr@host] > avr-size -d keys.out > keys.siz [avr@host] > avr-size -x keys.out >> keys.siz
text data bss dec hex filename 994 24 4 1022 3fe keys.out text data bss dec hex filename 0x3e2 0x18 0x4 1022 3fe keys.out