📄 key.lis
字号:
0136 ; DDRD=0xff;
0136 8FEF ldi R24,255
0138 81BB out 0x11,R24
013A .dbline 76
013A ; DDRB=0xff;
013A 87BB out 0x17,R24
013C .dbline 78
013C ; // PORTA=0xff;
013C ; PORTB=0xff;
013C 88BB out 0x18,R24
013E .dbline 79
013E ; PORTD=0xff;
013E 82BB out 0x12,R24
0140 .dbline -2
0140 L34:
0140 .dbline 0 ; func end
0140 0895 ret
0142 .dbend
0142 .dbfunc e main _main fV
0142 ; i -> <dead>
0142 ; space -> R20,R21
0142 ; x_position -> R20
0142 ; key -> R10
.even
0142 _main::
0142 2297 sbiw R28,2
0144 .dbline -1
0144 .dbline 83
0144 ;
0144 ; }
0144 ; void main()
0144 ; { uchar key;
0144 .dbline 86
0144 ; uchar i;
0144 ; uchar x_position;
0144 ; uchar *space = " ";
0144 40E0 ldi R20,<L36
0146 50E0 ldi R21,>L36
0148 .dbline 87
0148 ; Init_LCD();
0148 00D0 rcall _Init_LCD
014A .dbline 90
014A ; //PORTD = 0xff;
014A ; //DDRD = 0xf0;
014A ; PORTA = 0xff;
014A 8FEF ldi R24,255
014C 8BBB out 0x1b,R24
014E .dbline 91
014E ; DDRA = 0xf8;
014E 88EF ldi R24,248
0150 8ABB out 0x1a,R24
0152 .dbline 92
0152 ; LCD_DisplayString(1,1,"key scan test");
0152 80E0 ldi R24,<L37
0154 90E0 ldi R25,>L37
0156 9983 std y+1,R25
0158 8883 std y+0,R24
015A 21E0 ldi R18,1
015C 01E0 ldi R16,1
015E 00D0 rcall _LCD_DisplayString
0160 .dbline 93
0160 ; x_position = 2;
0160 42E0 ldi R20,2
0162 .dbline 94
0162 ; init();
0162 E9DF rcall _init
0164 .dbline 95
0164 ; for( ; ; )
0164 L38:
0164 .dbline 96
0164 ; {
0164 .dbline 97
0164 ; key=key_read();
0164 4DDF rcall _key_read
0166 A02E mov R10,R16
0168 .dbline 99
0168 ; //针对4X4的键盘
0168 ; switch(key)
0168 6A2D mov R22,R10
016A 7727 clr R23
016C 6130 cpi R22,1
016E E0E0 ldi R30,0
0170 7E07 cpc R23,R30
0172 09F4 brne X12
0174 38C0 rjmp L45
0176 X12:
0176 6230 cpi R22,2
0178 E0E0 ldi R30,0
017A 7E07 cpc R23,R30
017C 09F4 brne X13
017E 39C0 rjmp L46
0180 X13:
0180 6330 cpi R22,3
0182 E0E0 ldi R30,0
0184 7E07 cpc R23,R30
0186 09F4 brne X14
0188 3AC0 rjmp L47
018A X14:
018A 6430 cpi R22,4
018C E0E0 ldi R30,0
018E 7E07 cpc R23,R30
0190 09F4 brne X15
0192 3BC0 rjmp L48
0194 X15:
0194 6530 cpi R22,5
0196 E0E0 ldi R30,0
0198 7E07 cpc R23,R30
019A 09F4 brne X16
019C 3CC0 rjmp L49
019E X16:
019E 6630 cpi R22,6
01A0 E0E0 ldi R30,0
01A2 7E07 cpc R23,R30
01A4 09F4 brne X17
01A6 3DC0 rjmp L50
01A8 X17:
01A8 6730 cpi R22,7
01AA E0E0 ldi R30,0
01AC 7E07 cpc R23,R30
01AE 09F4 brne X18
01B0 3EC0 rjmp L51
01B2 X18:
01B2 6830 cpi R22,8
01B4 E0E0 ldi R30,0
01B6 7E07 cpc R23,R30
01B8 09F4 brne X19
01BA 3FC0 rjmp L52
01BC X19:
01BC 6930 cpi R22,9
01BE E0E0 ldi R30,0
01C0 7E07 cpc R23,R30
01C2 09F4 brne X20
01C4 40C0 rjmp L53
01C6 X20:
01C6 6A30 cpi R22,10
01C8 E0E0 ldi R30,0
01CA 7E07 cpc R23,R30
01CC 09F4 brne X21
01CE 41C0 rjmp L54
01D0 X21:
01D0 6B30 cpi R22,11
01D2 E0E0 ldi R30,0
01D4 7E07 cpc R23,R30
01D6 09F4 brne X22
01D8 42C0 rjmp L55
01DA X22:
01DA 6C30 cpi R22,12
01DC E0E0 ldi R30,0
01DE 7E07 cpc R23,R30
01E0 09F4 brne X23
01E2 43C0 rjmp L56
01E4 X23:
01E4 BFCF rjmp L38
01E6 X10:
01E6 .dbline 100
01E6 ; {
01E6 L45:
01E6 .dbline 102
01E6 ; case 1:
01E6 ; LCD_Cursor(2,x_position);
01E6 242F mov R18,R20
01E8 02E0 ldi R16,2
01EA 00D0 rcall _LCD_Cursor
01EC .dbline 103
01EC ; LCD_DisplayCharacter('1');
01EC 01E3 ldi R16,49
01EE 00D0 rcall _LCD_DisplayCharacter
01F0 .dbline 104
01F0 ; break;
01F0 B9CF rjmp L38
01F2 L46:
01F2 .dbline 106
01F2 ; case 2:
01F2 ; LCD_Cursor(2,x_position);
01F2 242F mov R18,R20
01F4 02E0 ldi R16,2
01F6 00D0 rcall _LCD_Cursor
01F8 .dbline 107
01F8 ; LCD_DisplayCharacter('2');
01F8 02E3 ldi R16,50
01FA 00D0 rcall _LCD_DisplayCharacter
01FC .dbline 108
01FC ; break;
01FC B3CF rjmp L38
01FE L47:
01FE .dbline 110
01FE ; case 3:
01FE ; LCD_Cursor(2,x_position);
01FE 242F mov R18,R20
0200 02E0 ldi R16,2
0202 00D0 rcall _LCD_Cursor
0204 .dbline 111
0204 ; LCD_DisplayCharacter('3');
0204 03E3 ldi R16,51
0206 00D0 rcall _LCD_DisplayCharacter
0208 .dbline 112
0208 ; break;
0208 ADCF rjmp L38
020A L48:
020A .dbline 114
020A ; case 4:
020A ; LCD_Cursor(2,x_position);
020A 242F mov R18,R20
020C 02E0 ldi R16,2
020E 00D0 rcall _LCD_Cursor
0210 .dbline 115
0210 ; LCD_DisplayCharacter('4');
0210 04E3 ldi R16,52
0212 00D0 rcall _LCD_DisplayCharacter
0214 .dbline 116
0214 ; break;
0214 A7CF rjmp L38
0216 L49:
0216 .dbline 118
0216 ; case 5:
0216 ; LCD_Cursor(2,x_position);
0216 242F mov R18,R20
0218 02E0 ldi R16,2
021A 00D0 rcall _LCD_Cursor
021C .dbline 119
021C ; LCD_DisplayCharacter('5');
021C 05E3 ldi R16,53
021E 00D0 rcall _LCD_DisplayCharacter
0220 .dbline 120
0220 ; break;
0220 A1CF rjmp L38
0222 L50:
0222 .dbline 122
0222 ; case 6:
0222 ; LCD_Cursor(2,x_position);
0222 242F mov R18,R20
0224 02E0 ldi R16,2
0226 00D0 rcall _LCD_Cursor
0228 .dbline 123
0228 ; LCD_DisplayCharacter('6');
0228 06E3 ldi R16,54
022A 00D0 rcall _LCD_DisplayCharacter
022C .dbline 124
022C ; break;
022C 9BCF rjmp L38
022E L51:
022E .dbline 126
022E ; case 7:
022E ; LCD_Cursor(2,x_position);
022E 242F mov R18,R20
0230 02E0 ldi R16,2
0232 00D0 rcall _LCD_Cursor
0234 .dbline 127
0234 ; LCD_DisplayCharacter('7');
0234 07E3 ldi R16,55
0236 00D0 rcall _LCD_DisplayCharacter
0238 .dbline 128
0238 ; break;
0238 95CF rjmp L38
023A L52:
023A .dbline 130
023A ; case 8:
023A ; LCD_Cursor(2,x_position);
023A 242F mov R18,R20
023C 02E0 ldi R16,2
023E 00D0 rcall _LCD_Cursor
0240 .dbline 131
0240 ; LCD_DisplayCharacter('8');
0240 08E3 ldi R16,56
0242 00D0 rcall _LCD_DisplayCharacter
0244 .dbline 132
0244 ; break;
0244 8FCF rjmp L38
0246 L53:
0246 .dbline 134
0246 ; case 9:
0246 ; LCD_Cursor(2,x_position);
0246 242F mov R18,R20
0248 02E0 ldi R16,2
024A 00D0 rcall _LCD_Cursor
024C .dbline 135
024C ; LCD_DisplayCharacter('9');
024C 09E3 ldi R16,57
024E 00D0 rcall _LCD_DisplayCharacter
0250 .dbline 136
0250 ; break;
0250 89CF rjmp L38
0252 L54:
0252 .dbline 138
0252 ; case 10:
0252 ; LCD_Cursor(2,x_position);
0252 242F mov R18,R20
0254 02E0 ldi R16,2
0256 00D0 rcall _LCD_Cursor
0258 .dbline 139
0258 ; LCD_DisplayCharacter('*');
0258 0AE2 ldi R16,42
025A 00D0 rcall _LCD_DisplayCharacter
025C .dbline 140
025C ; break;
025C 83CF rjmp L38
025E L55:
025E .dbline 142
025E ; case 11:
025E ; LCD_Cursor(2,x_position);
025E 242F mov R18,R20
0260 02E0 ldi R16,2
0262 00D0 rcall _LCD_Cursor
0264 .dbline 143
0264 ; LCD_DisplayCharacter('0');
0264 00E3 ldi R16,48
0266 00D0 rcall _LCD_DisplayCharacter
0268 .dbline 144
0268 ; break;
0268 7DCF rjmp L38
026A L56:
026A .dbline 146
026A 242F mov R18,R20
026C 02E0 ldi R16,2
026E 00D0 rcall _LCD_Cursor
0270 .dbline 147
0270 03E2 ldi R16,35
0272 00D0 rcall _LCD_DisplayCharacter
0274 .dbline 148
0274 .dbline 149
0274 .dbline 152
0274 .dbline 95
0274 .dbline 95
0274 77CF rjmp L38
0276 X11:
0276 .dbline -2
0276 L35:
0276 2296 adiw R28,2
0278 .dbline 0 ; func end
0278 0895 ret
027A .dbsym l i 3 c
027A .dbsym r space 20 pc
027A .dbsym r x_position 20 c
027A .dbsym r key 10 c
027A .dbend
.area bss(ram, con, rel)
0000 .dbfile F:\AVR练习\key_lcd\key.c
0000 _newcount::
0000 .blkb 2
0002 .dbsym e newcount _newcount i
0002 _oldcount::
0002 .blkb 2
0004 .dbsym e oldcount _oldcount i
0004 _led::
0004 .blkb 6
000A .dbsym e led _led A[6:6]c
000A _ledbuff::
000A .blkb 6
0010 .dbsym e ledbuff _ledbuff A[6:6]c
.area data(ram, con, rel)
0000 .dbfile F:\AVR练习\key_lcd\key.c
0000 L37:
0000 .blkb 14
.area idata
0000 6B6579207363616E207465737400 .byte 'k,'e,'y,32,'s,'c,'a,'n,32,'t,'e,'s,'t,0
.area data(ram, con, rel)
000E .dbfile F:\AVR练习\key_lcd\key.c
000E L36:
000E .blkb 20
.area idata
000E 20202020202020202020202020202020 .byte 32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32
001E 20202000 .byte 32,32,32,0
.area data(ram, con, rel)
0022 .dbfile F:\AVR练习\key_lcd\key.c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -