?? main.lss
字號:
}
void KB_Write(uint8_t command)
{
1de: 1f 93 push r17
1e0: cf 93 push r28
1e2: c8 2f mov r28, r24
uint8_t cnt;
uint8_t chk=0; //效驗位
1e4: 10 e0 ldi r17, 0x00 ; 0
KBDDR=0x0f;
1e6: 8f e0 ldi r24, 0x0F ; 15
1e8: 81 bb out 0x11, r24 ; 17
ccbi(KB_Clk);
1ea: 82 e0 ldi r24, 0x02 ; 2
1ec: 0e 94 e4 00 call 0x1c8 <ccbi>
*/
void
_delay_loop_1(uint8_t __count)
{
__asm__ volatile (
1f0: 81 2f mov r24, r17
1f2: 8a 95 dec r24
1f4: f1 f7 brne .-4 ; 0x1f2 <KB_Write+0x14>
_delay_us(100); //延遲100us
ccbi(KB_Data);
1f6: 81 2f mov r24, r17
1f8: 0e 94 e4 00 call 0x1c8 <ccbi>
ssbi(KB_Clk);
1fc: 82 e0 ldi r24, 0x02 ; 2
1fe: 0e 94 d9 00 call 0x1b2 <ssbi>
KBDDR=0x01 ; //DATA輸出 clk輸入 ////////
202: 81 e0 ldi r24, 0x01 ; 1
204: 81 bb out 0x11, r24 ; 17
206: 97 e0 ldi r25, 0x07 ; 7
for(cnt=0;cnt<8;cnt++)
{
loop_until_bit_is_clear(KBPIN,KB_Clk);
208: 82 99 sbic 0x10, 2 ; 16
20a: fe cf rjmp .-4 ; 0x208 <KB_Write+0x2a>
KBPort=((command&0x01)|0x04);
20c: 8c 2f mov r24, r28
20e: 81 70 andi r24, 0x01 ; 1
210: 84 60 ori r24, 0x04 ; 4
212: 82 bb out 0x12, r24 ; 18
if(KBPort&0x01) chk++;
214: 90 99 sbic 0x12, 0 ; 18
216: 1f 5f subi r17, 0xFF ; 255
command>>=1;
218: c6 95 lsr r28
21a: 91 50 subi r25, 0x01 ; 1
21c: 97 ff sbrs r25, 7
21e: f4 cf rjmp .-24 ; 0x208 <KB_Write+0x2a>
}
loop_until_bit_is_clear(KBPIN,KB_Clk);
220: 82 99 sbic 0x10, 2 ; 16
222: fe cf rjmp .-4 ; 0x220 <KB_Write+0x42>
switch(chk)
224: 81 2f mov r24, r17
226: 99 27 eor r25, r25
228: 84 30 cpi r24, 0x04 ; 4
22a: 91 05 cpc r25, r1
22c: e9 f0 breq .+58 ; 0x268 <KB_Write+0x8a>
22e: 85 30 cpi r24, 0x05 ; 5
230: 91 05 cpc r25, r1
232: 7c f4 brge .+30 ; 0x252 <KB_Write+0x74>
234: 81 30 cpi r24, 0x01 ; 1
236: 91 05 cpc r25, r1
238: c9 f0 breq .+50 ; 0x26c <KB_Write+0x8e>
23a: 82 30 cpi r24, 0x02 ; 2
23c: 91 05 cpc r25, r1
23e: 1c f4 brge .+6 ; 0x246 <KB_Write+0x68>
240: 89 2b or r24, r25
242: 91 f0 breq .+36 ; 0x268 <KB_Write+0x8a>
244: 15 c0 rjmp .+42 ; 0x270 <KB_Write+0x92>
246: 82 30 cpi r24, 0x02 ; 2
248: 91 05 cpc r25, r1
24a: 71 f0 breq .+28 ; 0x268 <KB_Write+0x8a>
24c: 03 97 sbiw r24, 0x03 ; 3
24e: 71 f0 breq .+28 ; 0x26c <KB_Write+0x8e>
250: 0f c0 rjmp .+30 ; 0x270 <KB_Write+0x92>
252: 86 30 cpi r24, 0x06 ; 6
254: 91 05 cpc r25, r1
256: 41 f0 breq .+16 ; 0x268 <KB_Write+0x8a>
258: 86 30 cpi r24, 0x06 ; 6
25a: 91 05 cpc r25, r1
25c: 3c f0 brlt .+14 ; 0x26c <KB_Write+0x8e>
25e: 87 30 cpi r24, 0x07 ; 7
260: 91 05 cpc r25, r1
262: 21 f0 breq .+8 ; 0x26c <KB_Write+0x8e>
264: 08 97 sbiw r24, 0x08 ; 8
266: 21 f4 brne .+8 ; 0x270 <KB_Write+0x92>
{
case 0:
case 2:
case 4:
case 6:
case 8:KBPort=0x05;break ; //開上拉電阻~~發送標志位
268: 85 e0 ldi r24, 0x05 ; 5
26a: 01 c0 rjmp .+2 ; 0x26e <KB_Write+0x90>
case 1:
case 3:
case 5:
case 7:KBPort=0x04;break;
26c: 84 e0 ldi r24, 0x04 ; 4
26e: 82 bb out 0x12, r24 ; 18
}
loop_until_bit_is_clear(KBPIN,KB_Clk);
270: 82 99 sbic 0x10, 2 ; 16
272: fe cf rjmp .-4 ; 0x270 <KB_Write+0x92>
KBPort=0x05; //發送結束標志
274: 85 e0 ldi r24, 0x05 ; 5
276: 82 bb out 0x12, r24 ; 18
278: cf 91 pop r28
27a: 1f 91 pop r17
27c: 08 95 ret
0000027e <__vector_1>:
//loop_until_bit_is_clear(KBPIN,KB_Clk);
}
/*void keycode(void)
{
uint8_t keydata=0,j;
if(key)
{
//PORTB=0xff;
if(bf==0)
{
//PORTB=0xff;
if(keybf[0]) PORTB=0xf0;
if(keybf[0]==0x12||keybf[0]==0x59) //shift
{
for(j=0;j<cntbf;j++)
{
if(keybf[j]==0xe0)
{
if(keybf[j+1]==0xf0)
keydata=keybf[j+2];
}
else if(key==0xf0) break;
else keydata=keybf[j];
}
//PORTB=0xff;
for(j=0;j<59;j++)
if(keydata==Shifted[j][0])
keyword=Shifted[j][1];
}
else
{
keydata=keybf[0];
for(j=0;j<59;j++)
{
if(keydata==UnShifted[j][0])
keyword=UnShifted[j][1];
}
}
cntbf=0;
}
}
}*/
SIGNAL(SIG_INTERRUPT0)
{
27e: 1f 92 push r1
280: 0f 92 push r0
282: 0f b6 in r0, 0x3f ; 63
284: 0f 92 push r0
286: 11 24 eor r1, r1
288: 2f 93 push r18
28a: 3f 93 push r19
28c: 8f 93 push r24
28e: 9f 93 push r25
290: ef 93 push r30
292: ff 93 push r31
uint8_t pin,chk;
uint8_t keydata=0,j;
if(cnt==0) key=0;
294: 80 91 56 01 lds r24, 0x0156
298: 88 23 and r24, r24
29a: 11 f4 brne .+4 ; 0x2a0 <__vector_1+0x22>
29c: 80 93 4d 01 sts 0x014D, r24
KBDDR=(1<<KB_Clk)&(1<<KB_Data);
2a0: 11 ba out 0x11, r1 ; 17
KBPort=(1<<KB_Clk)&(1<<KB_Data);
2a2: 12 ba out 0x12, r1 ; 18
if(cnt>0&&cnt<9)
2a4: 80 91 56 01 lds r24, 0x0156
2a8: 88 23 and r24, r24
2aa: b1 f0 breq .+44 ; 0x2d8 <__vector_1+0x5a>
2ac: 80 91 56 01 lds r24, 0x0156
2b0: 89 30 cpi r24, 0x09 ; 9
2b2: 90 f4 brcc .+36 ; 0x2d8 <__vector_1+0x5a>
{
pin=KBPIN&0x01; ////////////////////
2b4: 80 b3 in r24, 0x10 ; 16
2b6: 81 70 andi r24, 0x01 ; 1
pin<<=(cnt-1);
2b8: 28 2f mov r18, r24
2ba: 33 27 eor r19, r19
2bc: 80 91 56 01 lds r24, 0x0156
2c0: 99 27 eor r25, r25
2c2: 01 97 sbiw r24, 0x01 ; 1
2c4: 02 c0 rjmp .+4 ; 0x2ca <__vector_1+0x4c>
2c6: 22 0f add r18, r18
2c8: 33 1f adc r19, r19
2ca: 8a 95 dec r24
2cc: e2 f7 brpl .-8 ; 0x2c6 <__vector_1+0x48>
key|=pin;
2ce: 80 91 4d 01 lds r24, 0x014D
2d2: 82 2b or r24, r18
2d4: 80 93 4d 01 sts 0x014D, r24
}
chk=KBPIN&0x01;
2d8: 80 b3 in r24, 0x10 ; 16
cnt++;
2da: 80 91 56 01 lds r24, 0x0156
2de: 8f 5f subi r24, 0xFF ; 255
2e0: 80 93 56 01 sts 0x0156, r24
if(cnt==11)
2e4: 80 91 56 01 lds r24, 0x0156
2e8: 8b 30 cpi r24, 0x0B ; 11
2ea: 91 f5 brne .+100 ; 0x350 <__vector_1+0xd2>
{
cnt=0;
2ec: 10 92 56 01 sts 0x0156, r1
if(shift==1)
2f0: 80 91 4e 01 lds r24, 0x014E
2f4: 81 30 cpi r24, 0x01 ; 1
2f6: 91 f4 brne .+36 ; 0x31c <__vector_1+0x9e>
2f8: 2a e3 ldi r18, 0x3A ; 58
2fa: e0 e6 ldi r30, 0x60 ; 96
2fc: f0 e0 ldi r31, 0x00 ; 0
{
//PORTB=0xff;
for(j=0;j<59;j++)
if(key==Shifted[j][0])
2fe: 90 91 4d 01 lds r25, 0x014D
302: 80 81 ld r24, Z
304: 98 17 cp r25, r24
306: 19 f4 brne .+6 ; 0x30e <__vector_1+0x90>
keyword=Shifted[j][1];
308: 81 81 ldd r24, Z+1 ; 0x01
30a: 80 93 4c 01 sts 0x014C, r24
30e: 21 50 subi r18, 0x01 ; 1
310: 32 96 adiw r30, 0x02 ; 2
312: 27 ff sbrs r18, 7
314: f4 cf rjmp .-24 ; 0x2fe <__vector_1+0x80>
shift=0;
316: 10 92 4e 01 sts 0x014E, r1
31a: 0f c0 rjmp .+30 ; 0x33a <__vector_1+0xbc>
31c: 2a e3 ldi r18, 0x3A ; 58
31e: e6 ed ldi r30, 0xD6 ; 214
320: f0 e0 ldi r31, 0x00 ; 0
}
else
{
//keydata=keybf[0];
for(j=0;j<59;j++)
{
if(key==UnShifted[j][0])
322: 90 91 4d 01 lds r25, 0x014D
326: 80 81 ld r24, Z
328: 98 17 cp r25, r24
32a: 19 f4 brne .+6 ; 0x332 <__vector_1+0xb4>
keyword=UnShifted[j][1];
32c: 81 81 ldd r24, Z+1 ; 0x01
32e: 80 93 4c 01 sts 0x014C, r24
332: 21 50 subi r18, 0x01 ; 1
334: 32 96 adiw r30, 0x02 ; 2
336: 27 ff sbrs r18, 7
338: f4 cf rjmp .-24 ; 0x322 <__vector_1+0xa4>
//PORTB=0x04;
}
}
if(key==0x12||key==0x59) //shift
33a: 80 91 4d 01 lds r24, 0x014D
33e: 82 31 cpi r24, 0x12 ; 18
340: 21 f0 breq .+8 ; 0x34a <__vector_1+0xcc>
342: 80 91 4d 01 lds r24, 0x014D
346: 89 35 cpi r24, 0x59 ; 89
348: 19 f4 brne .+6 ; 0x350 <__vector_1+0xd2>
{
shift=1;
34a: 81 e0 ldi r24, 0x01 ; 1
34c: 80 93 4e 01 sts 0x014E, r24
350: ff 91 pop r31
352: ef 91 pop r30
354: 9f 91 pop r25
356: 8f 91 pop r24
358: 3f 91 pop r19
35a: 2f 91 pop r18
35c: 0f 90 pop r0
35e: 0f be out 0x3f, r0 ; 63
360: 0f 90 pop r0
362: 1f 90 pop r1
364: 18 95 reti
00000366 <main>:
//PORTB=0xff;
}
}
}
int main(void)
{
366: cf e5 ldi r28, 0x5F ; 95
368: d4 e0 ldi r29, 0x04 ; 4
36a: de bf out 0x3e, r29 ; 62
36c: cd bf out 0x3d, r28 ; 61
// uint8_t i,j;
DDRA=0xff;
36e: 8f ef ldi r24, 0xFF ; 255
370: 8a bb out 0x1a, r24 ; 26
DDRB=0xff;
372: 87 bb out 0x17, r24 ; 23
KBPort=0x05;
374: 85 e0 ldi r24, 0x05 ; 5
376: 82 bb out 0x12, r24 ; 18
KBDDR=0x00;
378: 11 ba out 0x11, r1 ; 17
//KB_Write(0xE4);
MCUCR=(1<<ISC01);
37a: 82 e0 ldi r24, 0x02 ; 2
37c: 85 bf out 0x35, r24 ; 53
GICR=(1<<INT0);
37e: 80 e4 ldi r24, 0x40 ; 64
380: 8b bf out 0x3b, r24 ; 59
sei();
382: 78 94 sei
Initialize_LCD();
384: 0e 94 c1 00 call 0x182 <Initialize_LCD>
//Write_ASC(0,0,key);
for(;;)
{
if(key)
388: 80 91 4d 01 lds r24, 0x014D
38c: 88 23 and r24, r24
38e: e1 f3 breq .-8 ; 0x388 <main+0x22>
Write_Word(0,0 ,key) ;
390: 40 91 4d 01 lds r20, 0x014D
394: 60 e0 ldi r22, 0x00 ; 0
396: 86 2f mov r24, r22
398: 0e 94 d0 00 call 0x1a0 <Write_Word>
39c: f5 cf rjmp .-22 ; 0x388 <main+0x22>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -