?? keyboard.lss
字號(hào):
148: 30 c0 rjmp .+96 ; 0x1aa <Get_Key+0x10c>
14a: 2b 3e cpi r18, 0xEB ; 235
14c: 31 05 cpc r19, r1
14e: e9 f0 breq .+58 ; 0x18a <Get_Key+0xec>
150: 2c 3e cpi r18, 0xEC ; 236
152: 31 05 cpc r19, r1
154: 24 f4 brge .+8 ; 0x15e <Get_Key+0xc0>
156: 27 3e cpi r18, 0xE7 ; 231
158: 31 05 cpc r19, r1
15a: f9 f0 breq .+62 ; 0x19a <Get_Key+0xfc>
15c: 26 c0 rjmp .+76 ; 0x1aa <Get_Key+0x10c>
15e: 2d 3e cpi r18, 0xED ; 237
160: 31 05 cpc r19, r1
162: 59 f0 breq .+22 ; 0x17a <Get_Key+0xdc>
164: 2e 3e cpi r18, 0xEE ; 238
166: 31 05 cpc r19, r1
168: 01 f5 brne .+64 ; 0x1aa <Get_Key+0x10c>
{
case 0xEE:
KEY_Number=0;
16a: 80 e0 ldi r24, 0x00 ; 0
break;
16c: 1f c0 rjmp .+62 ; 0x1ac <Get_Key+0x10e>
case 0xDE:
KEY_Number=1;
16e: 81 e0 ldi r24, 0x01 ; 1
break;
170: 1d c0 rjmp .+58 ; 0x1ac <Get_Key+0x10e>
case 0xBE:
KEY_Number=2;
172: 82 e0 ldi r24, 0x02 ; 2
break;
174: 1b c0 rjmp .+54 ; 0x1ac <Get_Key+0x10e>
case 0x7E:
KEY_Number=3;
176: 83 e0 ldi r24, 0x03 ; 3
break;
178: 19 c0 rjmp .+50 ; 0x1ac <Get_Key+0x10e>
case 0xED:
KEY_Number=4;
17a: 84 e0 ldi r24, 0x04 ; 4
break;
17c: 17 c0 rjmp .+46 ; 0x1ac <Get_Key+0x10e>
case 0xDD:
KEY_Number=5;
17e: 85 e0 ldi r24, 0x05 ; 5
break;
180: 15 c0 rjmp .+42 ; 0x1ac <Get_Key+0x10e>
case 0xBD:
KEY_Number=6;
182: 86 e0 ldi r24, 0x06 ; 6
break;
184: 13 c0 rjmp .+38 ; 0x1ac <Get_Key+0x10e>
case 0x7D:
KEY_Number=7;
186: 87 e0 ldi r24, 0x07 ; 7
break;
188: 11 c0 rjmp .+34 ; 0x1ac <Get_Key+0x10e>
case 0xEB:
KEY_Number=8;
18a: 88 e0 ldi r24, 0x08 ; 8
break;
18c: 0f c0 rjmp .+30 ; 0x1ac <Get_Key+0x10e>
case 0xDB:
KEY_Number=9;
18e: 89 e0 ldi r24, 0x09 ; 9
break;
190: 0d c0 rjmp .+26 ; 0x1ac <Get_Key+0x10e>
case 0xBB:
KEY_Number=10;
192: 8a e0 ldi r24, 0x0A ; 10
break;
194: 0b c0 rjmp .+22 ; 0x1ac <Get_Key+0x10e>
case 0x7B:
KEY_Number=11;
196: 8b e0 ldi r24, 0x0B ; 11
break;
198: 09 c0 rjmp .+18 ; 0x1ac <Get_Key+0x10e>
case 0xE7:
KEY_Number=12;
19a: 8c e0 ldi r24, 0x0C ; 12
break;
19c: 07 c0 rjmp .+14 ; 0x1ac <Get_Key+0x10e>
case 0xD7:
KEY_Number=13;
19e: 8d e0 ldi r24, 0x0D ; 13
break;
1a0: 05 c0 rjmp .+10 ; 0x1ac <Get_Key+0x10e>
case 0xB7:
KEY_Number=14;
1a2: 8e e0 ldi r24, 0x0E ; 14
break;
1a4: 03 c0 rjmp .+6 ; 0x1ac <Get_Key+0x10e>
case 0x77:
KEY_Number=15;
1a6: 84 2f mov r24, r20
break;
1a8: 01 c0 rjmp .+2 ; 0x1ac <Get_Key+0x10e>
default:
KEY_Number=255;
1aa: 8f ef ldi r24, 0xFF ; 255
break;
}
return KEY_Number;
}
1ac: 99 27 eor r25, r25
1ae: 08 95 ret
000001b0 <Scanf>:
const prog_char SegCode[16]={
/* Cathode common Smg display code*/
0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
unsigned char DisBuffer[8]={0,0,0,0,0,0,0,0};
void Scanf(void)
{
1b0: 0f 93 push r16
1b2: 1f 93 push r17
1b4: cf 93 push r28
1b6: df 93 push r29
1b8: 01 e0 ldi r16, 0x01 ; 1
1ba: 10 e0 ldi r17, 0x00 ; 0
1bc: a0 ea ldi r26, 0xA0 ; 160
1be: bf e0 ldi r27, 0x0F ; 15
1c0: c0 e0 ldi r28, 0x00 ; 0
1c2: d0 e0 ldi r29, 0x00 ; 0
1c4: 60 e6 ldi r22, 0x60 ; 96
1c6: 70 e0 ldi r23, 0x00 ; 0
1c8: 20 e0 ldi r18, 0x00 ; 0
1ca: 30 e0 ldi r19, 0x00 ; 0
1cc: 47 e0 ldi r20, 0x07 ; 7
unsigned char i=0;
for(i=0;i<8;i++)
{
PORTB = pgm_read_byte(&SegCode[DisBuffer[i]]);
1ce: fb 01 movw r30, r22
1d0: 81 91 ld r24, Z+
1d2: bf 01 movw r22, r30
1d4: e8 2f mov r30, r24
1d6: ff 27 eor r31, r31
1d8: ec 5a subi r30, 0xAC ; 172
1da: ff 4f sbci r31, 0xFF ; 255
1dc: 84 91 lpm r24, Z
1de: 88 bb out 0x18, r24 ; 24
PORTA|= (1<<PA4);
1e0: dc 9a sbi 0x1b, 4 ; 27
PORTA&=~(1<<PA4);
1e2: dc 98 cbi 0x1b, 4 ; 27
PORTB = (1<<i);
1e4: c8 01 movw r24, r16
1e6: 02 2e mov r0, r18
1e8: 02 c0 rjmp .+4 ; 0x1ee <Scanf+0x3e>
1ea: 88 0f add r24, r24
1ec: 99 1f adc r25, r25
1ee: 0a 94 dec r0
1f0: e2 f7 brpl .-8 ; 0x1ea <Scanf+0x3a>
1f2: 88 bb out 0x18, r24 ; 24
PORTA|= (1<<PA5);
1f4: dd 9a sbi 0x1b, 5 ; 27
PORTA&=~(1<<PA5);
1f6: dd 98 cbi 0x1b, 5 ; 27
*/
void
_delay_loop_2(uint16_t __count)
{
__asm__ volatile (
1f8: cd 01 movw r24, r26
1fa: 01 97 sbiw r24, 0x01 ; 1
1fc: f1 f7 brne .-4 ; 0x1fa <Scanf+0x4a>
1fe: 41 50 subi r20, 0x01 ; 1
200: 2f 5f subi r18, 0xFF ; 255
202: 3f 4f sbci r19, 0xFF ; 255
204: 47 ff sbrs r20, 7
206: e3 cf rjmp .-58 ; 0x1ce <Scanf+0x1e>
208: df 91 pop r29
20a: cf 91 pop r28
20c: 1f 91 pop r17
20e: 0f 91 pop r16
210: 08 95 ret
00000212 <main>:
_delay_ms(2);
}
}
int main(void)
{
212: cf e5 ldi r28, 0x5F ; 95
214: d4 e0 ldi r29, 0x04 ; 4
216: de bf out 0x3e, r29 ; 62
218: cd bf out 0x3d, r28 ; 61
unsigned char KeyNumber=0;
/* Set LED and Smg LE pin and USB-pull-up pin as output , databus as output */
DDRA |=(1<<PA4)|(1<<PA5)|(1<<PA6)|(1<<PA7);
21a: 8a b3 in r24, 0x1a ; 26
21c: 80 6f ori r24, 0xF0 ; 240
21e: 8a bb out 0x1a, r24 ; 26
DDRB = 0xFF;
220: 9f ef ldi r25, 0xFF ; 255
222: 97 bb out 0x17, r25 ; 23
/* Off the LED display */
PORTB = 0xFF;
224: 98 bb out 0x18, r25 ; 24
PORTA|= (1<<PA6);
226: de 9a sbi 0x1b, 6 ; 27
PORTA&=~(1<<PA6);
228: de 98 cbi 0x1b, 6 ; 27
/* Enable the USB pull-up */
PORTA|= (1<<PA7);
22a: df 9a sbi 0x1b, 7 ; 27
PORTB = 0x80;
22c: 80 e8 ldi r24, 0x80 ; 128
22e: 88 bb out 0x18, r24 ; 24
PORTA&=~(1<<PA7);
230: df 98 cbi 0x1b, 7 ; 27
PORTB= 0xff;
232: 98 bb out 0x18, r25 ; 24
while(1)
{
KeyNumber=Get_Key();
234: 0e 94 4f 00 call 0x9e <Get_Key>
if(KeyNumber!=255)
238: 8f 3f cpi r24, 0xFF ; 255
23a: 11 f0 breq .+4 ; 0x240 <main+0x2e>
DisBuffer[7]=KeyNumber;
23c: 80 93 67 00 sts 0x0067, r24
Scanf();
240: 0e 94 d8 00 call 0x1b0 <Scanf>
244: f7 cf rjmp .-18 ; 0x234 <main+0x22>
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -