📄 ex_support.lis
字号:
029A 857C andi R24,197
029C 84BB out 0x14,R24
029E .dbline 546
029E ; BIT(3) | BIT(5)); //把端口pc1、pc3-pc4设置为输入
029E ;
029E ; DDRC |= BIT(2); //把pc2端口设为输出
029E A29A sbi 0x14,2
02A0 .dbline 548
02A0 ;
02A0 ; PORTC |= BIT(1) | BIT(2) | BIT(3) |
02A0 85B3 in R24,0x15
02A2 8E63 ori R24,62
02A4 85BB out 0x15,R24
02A6 .dbline 551
02A6 ; BIT(4) | BIT(5);
02A6 ;
02A6 ; PORTC &= ~BIT(2); //把pc2端口拉低
02A6 AA98 cbi 0x15,2
02A8 .dbline 552
02A8 ; NOP();
02A8 0000 nop
02AA .dbline 553
02AA ; NOP();
02AA 0000 nop
02AC .dbline 555
02AC ;
02AC ; if (!(PINC & (BIT(1)))) //读取pc1端口,如果返回值是0则表明按键被按下,
02AC 9999 sbic 0x13,1
02AE 02C0 rjmp L93
02B0 X41:
02B0 .dbline 557
02B0 ; //则返回按键的值
02B0 ; {
02B0 .dbline 558
02B0 ; chTempKeyCode = 5;
02B0 .dbline 559
02B0 ; return chTempKeyCode;
02B0 05E0 ldi R16,5
02B2 01C0 rjmp L44
02B4 L93:
02B4 .dbline 563
02B4 ; }
02B4 ;
02B4 ;
02B4 ; return chTempKeyCode; //返回按键值
02B4 0FEF ldi R16,255
02B6 .dbline -2
02B6 L44:
02B6 .dbline 0 ; func end
02B6 0895 ret
02B8 .dbend
.area lit(rom, con, rel)
0000 L96:
0000 C0F9 .byte 192,249
0002 A4B0 .byte 164,176
0004 9992 .byte 153,146
0006 82F8 .byte 130,248
0008 8090 .byte 128,144
.area text(rom, con, rel)
02B8 .dbfile F:\AVR\按键扫描\EX_Support.c
02B8 .dbfunc e Get_Code _Get_Code fc
.area func_lit(rom, con, rel)
0000 L148:
0000 7F01 .word `L100
0002 8101 .word `L102
0004 8301 .word `L104
0006 8501 .word `L106
0008 8701 .word `L108
000A 8901 .word `L110
000C 8B01 .word `L112
000E 8D01 .word `L114
0010 8F01 .word `L116
0012 9101 .word `L118
0014 9301 .word `L119
0016 9501 .word `L121
0018 9701 .word `L123
001A 9901 .word `L125
001C 9B01 .word `L127
001E 9D01 .word `L129
0020 9F01 .word `L131
0022 A101 .word `L133
0024 A301 .word `L135
0026 A501 .word `L137
0028 A701 .word `L138
002A A901 .word `L140
002C AB01 .word `L142
002E AD01 .word `L144
0030 AF01 .word `L146
.area text(rom, con, rel)
; Table -> y+0
; chj0 -> R20
; chi -> R10
.even
02B8 _Get_Code::
02B8 AA92 st -y,R10
02BA 4A93 st -y,R20
02BC A02E mov R10,R16
02BE 2A97 sbiw R28,10
02C0 .dbline -1
02C0 .dbline 567
02C0 ; }
02C0 ;
02C0 ; UINT8 Get_Code (UINT8 chi)
02C0 ; {
02C0 .dbline 569
02C0 ; UINT8 chj;
02C0 ; UINT8 Table[10]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
02C0 80E0 ldi R24,<L96
02C2 90E0 ldi R25,>L96
02C4 FE01 movw R30,R28
02C6 0AE0 ldi R16,10
02C8 10E0 ldi R17,0
02CA FA93 st -y,R31
02CC EA93 st -y,R30
02CE 9A93 st -y,R25
02D0 8A93 st -y,R24
02D2 00D0 rcall asgncblk
02D4 .dbline 570
02D4 ; switch(chi)
02D4 4A2D mov R20,R10
02D6 4130 cpi R20,1
02D8 08F4 brsh X45
02DA 43C0 rjmp L97
02DC X45:
02DC X42:
02DC 89E1 ldi R24,25
02DE 8A15 cp R24,R10
02E0 08F4 brsh X46
02E2 3FC0 rjmp L97
02E4 X46:
02E4 X43:
02E4 80E0 ldi R24,<L148
02E6 90E0 ldi R25,>L148
02E8 E42F mov R30,R20
02EA E150 subi R30,1
02EC FF27 clr R31
02EE EE0F lsl R30
02F0 FF1F rol R31
02F2 E80F add R30,R24
02F4 F91F adc R31,R25
02F6 2590 lpm R2,Z+
02F8 3490 lpm R3,Z
02FA F101 movw R30,R2
02FC 0994 ijmp
02FE X44:
02FE .dbfile F:\AVR\按键扫描\EX_Support.c
02FE .dbline 571
02FE ; {
02FE L100:
02FE .dbline 572
02FE ; case 1: chj = Table[1];break;
02FE 4981 ldd R20,y+1
0300 .dbline 572
0300 31C0 rjmp L98
0302 L102:
0302 .dbline 573
0302 ; case 2: chj = Table[2];break;
0302 4A81 ldd R20,y+2
0304 .dbline 573
0304 2FC0 rjmp L98
0306 L104:
0306 .dbline 574
0306 ; case 3: chj = Table[3];break;
0306 4B81 ldd R20,y+3
0308 .dbline 574
0308 2DC0 rjmp L98
030A L106:
030A .dbline 575
030A ; case 4: chj = Table[4];break;
030A 4C81 ldd R20,y+4
030C .dbline 575
030C 2BC0 rjmp L98
030E L108:
030E .dbline 576
030E ; case 5: chj = Table[5];break;
030E 4D81 ldd R20,y+5
0310 .dbline 576
0310 29C0 rjmp L98
0312 L110:
0312 .dbline 577
0312 ; case 6: chj = Table[6];break;
0312 4E81 ldd R20,y+6
0314 .dbline 577
0314 27C0 rjmp L98
0316 L112:
0316 .dbline 578
0316 ; case 7: chj = Table[7];break;
0316 4F81 ldd R20,y+7
0318 .dbline 578
0318 25C0 rjmp L98
031A L114:
031A .dbline 579
031A ; case 8: chj = Table[8];break;
031A 4885 ldd R20,y+8
031C .dbline 579
031C 23C0 rjmp L98
031E L116:
031E .dbline 580
031E ; case 9: chj = Table[9];break;
031E 4985 ldd R20,y+9
0320 .dbline 580
0320 21C0 rjmp L98
0322 L118:
0322 .dbline 581
0322 ; case 10: chj = Table[0];break;
0322 4881 ldd R20,y+0
0324 .dbline 581
0324 1FC0 rjmp L98
0326 L119:
0326 .dbline 582
0326 ; case 11: chj = Table[1];break;
0326 4981 ldd R20,y+1
0328 .dbline 582
0328 1DC0 rjmp L98
032A L121:
032A .dbline 583
032A ; case 12: chj = Table[2];break;
032A 4A81 ldd R20,y+2
032C .dbline 583
032C 1BC0 rjmp L98
032E L123:
032E .dbline 584
032E ; case 13: chj = Table[3];break;
032E 4B81 ldd R20,y+3
0330 .dbline 584
0330 19C0 rjmp L98
0332 L125:
0332 .dbline 585
0332 ; case 14: chj = Table[4];break;
0332 4C81 ldd R20,y+4
0334 .dbline 585
0334 17C0 rjmp L98
0336 L127:
0336 .dbline 586
0336 ; case 15: chj = Table[5];break;
0336 4D81 ldd R20,y+5
0338 .dbline 586
0338 15C0 rjmp L98
033A L129:
033A .dbline 587
033A ; case 16: chj = Table[6];break;
033A 4E81 ldd R20,y+6
033C .dbline 587
033C 13C0 rjmp L98
033E L131:
033E .dbline 588
033E ; case 17: chj = Table[7];break;
033E 4F81 ldd R20,y+7
0340 .dbline 588
0340 11C0 rjmp L98
0342 L133:
0342 .dbline 589
0342 ; case 18: chj = Table[8];break;
0342 4885 ldd R20,y+8
0344 .dbline 589
0344 0FC0 rjmp L98
0346 L135:
0346 .dbline 590
0346 ; case 19: chj = Table[9];break;
0346 4985 ldd R20,y+9
0348 .dbline 590
0348 0DC0 rjmp L98
034A L137:
034A .dbline 591
034A ; case 20: chj = Table[0];break;
034A 4881 ldd R20,y+0
034C .dbline 591
034C 0BC0 rjmp L98
034E L138:
034E .dbline 592
034E ; case 21: chj = Table[1];break;
034E 4981 ldd R20,y+1
0350 .dbline 592
0350 09C0 rjmp L98
0352 L140:
0352 .dbline 593
0352 ; case 22: chj = Table[2];break;
0352 4A81 ldd R20,y+2
0354 .dbline 593
0354 07C0 rjmp L98
0356 L142:
0356 .dbline 594
0356 ; case 23: chj = Table[3];break;
0356 4B81 ldd R20,y+3
0358 .dbline 594
0358 05C0 rjmp L98
035A L144:
035A .dbline 595
035A ; case 24: chj = Table[4];break;
035A 4C81 ldd R20,y+4
035C .dbline 595
035C 03C0 rjmp L98
035E L146:
035E .dbline 596
035E ; case 25: chj = Table[5];break;
035E 4D81 ldd R20,y+5
0360 .dbline 596
0360 01C0 rjmp L98
0362 L97:
0362 .dbline 597
0362 ; default: chj = 0xFF;
0362 4FEF ldi R20,255
0364 .dbline 598
0364 ; }
0364 L98:
0364 .dbline 599
0364 ; return chj;
0364 042F mov R16,R20
0366 .dbline -2
0366 L95:
0366 .dbline 0 ; func end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -