📄 key.lis
字号:
.module key.c
.area data(ram, con, rel)
0000 L2:
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 L3:
0001 .blkb 1
.area idata
0001 6F .byte 111
.area data(ram, con, rel)
.area bss(ram, con, rel)
0000 L4:
0000 .blkb 1
0001 L5:
0001 .blkb 1
0002 L6:
0002 .blkb 1
.area data(ram, con, rel)
0002 L7:
0002 .blkb 1
.area idata
0002 00 .byte 0
.area data(ram, con, rel)
.area text(rom, con, rel)
0000 .dbfile C:\avr3\key.c
0000 .dbfunc e key_t2 _key_t2 fc
0000 .dbsym s key_i L7 c
0000 .dbsym s NKEY_n L6 c
0000 .dbsym s YYK L5 c
0000 .dbsym s KZT L4 c
0000 .dbsym s PPK L3 c
0000 .dbsym s NK L2 c
0000 ; i -> R16
0000 ; z -> R18
0000 ; KEYIN -> R16
0000 ; a -> R20
0000 ; c -> R22
.even
0000 _key_t2::
0000 00D0 rcall push_gset2
0002 .dbline -1
0002 .dbline 3
0002 ; #include"sga.h"
0002 ; unsigned char key_t2(void)
0002 ; {
0002 .dbline 12
0002 ; static unsigned char NK=0,
0002 ; PPK=111,
0002 ; KZT,
0002 ; YYK,
0002 ; NKEY_n,
0002 ; key_i=0;
0002 ;
0002 ; unsigned char a,c, KEYIN,z,i;
0002 ; z=0;
0002 2227 clr R18
0004 .dbline 13
0004 ; DDRC|=0X3E;//0011 1110 PC1,PC2,PC3,PC4,PC5设为输出
0004 84B3 in R24,0x14
0006 8E63 ori R24,62
0008 84BB out 0x14,R24
000A .dbline 14
000A ; PC5_1;PC4_1;PC3_1; //PC3,PC4,PC5输出为1
000A AD9A sbi 0x15,5
000C .dbline 14
000C AC9A sbi 0x15,4
000E .dbline 14
000E AB9A sbi 0x15,3
0010 .dbline 15
0010 ; NOP();NOP();NOP();NOP();NOP();NOP();
0010 0000 nop
0012 .dbline 15
0012 0000 nop
0014 .dbline 15
0014 0000 nop
0016 .dbline 15
0016 0000 nop
0018 .dbline 15
0018 0000 nop
001A .dbline 15
001A 0000 nop
001C .dbline 16
001C ; switch(key_i)
001C 00910200 lds R16,L7
0020 1127 clr R17
0022 0030 cpi R16,0
0024 0107 cpc R16,R17
0026 29F0 breq L11
0028 X0:
0028 0130 cpi R16,1
002A E0E0 ldi R30,0
002C 1E07 cpc R17,R30
002E 21F0 breq L12
0030 07C0 rjmp L8
0032 X1:
0032 .dbline 17
0032 ; {
0032 L11:
0032 .dbline 18
0032 ; case 0:PC2_1;PC1_0; break;
0032 AA9A sbi 0x15,2
0034 .dbline 18
0034 A898 cbi 0x15,0
0036 .dbline 18
0036 04C0 rjmp L9
0038 L12:
0038 .dbline 19
0038 ; case 1:PC2_0;PC1_1; break;
0038 85B3 in R24,0x15
003A 8C7F andi R24,252
003C 85BB out 0x15,R24
003E .dbline 19
003E A99A sbi 0x15,1
0040 .dbline 19
0040 L8:
0040 L9:
0040 .dbline 21
0040 ; }
0040 ; key_i++;
0040 80910200 lds R24,L7
0044 8F5F subi R24,255 ; addi 1
0046 80930200 sts L7,R24
004A .dbline 22
004A ; NOP();NOP();NOP();NOP();NOP();NOP();
004A 0000 nop
004C .dbline 22
004C 0000 nop
004E .dbline 22
004E 0000 nop
0050 .dbline 22
0050 0000 nop
0052 .dbline 22
0052 0000 nop
0054 .dbline 22
0054 0000 nop
0056 .dbline 23
0056 ; if(key_i==2) key_i=0;
0056 8230 cpi R24,2
0058 19F4 brne L13
005A .dbline 23
005A 2224 clr R2
005C 20920200 sts L7,R2
0060 L13:
0060 .dbline 25
0060 ;
0060 ; DDRC&=0XC7;//1100 0111
0060 84B3 in R24,0x14
0062 877C andi R24,199
0064 84BB out 0x14,R24
0066 .dbline 26
0066 ; i=PORTC;
0066 05B3 in R16,0x15
0068 .dbline 27
0068 ; i=i&0x38;
0068 0873 andi R16,56
006A .dbline 28
006A ; if(i==0x18)//PC3,PC4,PC5中有一个为0
006A 0831 cpi R16,24
006C 11F4 brne L15
006E .dbline 29
006E ; {
006E .dbline 30
006E ; a=3;
006E 43E0 ldi R20,3
0070 .dbline 31
0070 ; }else
0070 09C0 rjmp L16
0072 L15:
0072 .dbline 32
0072 ; if(i==0x28)
0072 0832 cpi R16,40
0074 11F4 brne L17
0076 .dbline 33
0076 ; {
0076 .dbline 34
0076 ; a=4;
0076 44E0 ldi R20,4
0078 .dbline 35
0078 ; }else
0078 05C0 rjmp L18
007A L17:
007A .dbline 36
007A ; if(i==0x30)
007A 0033 cpi R16,48
007C 11F4 brne L19
007E .dbline 37
007E ; {
007E .dbline 38
007E ; a=5;
007E 45E0 ldi R20,5
0080 .dbline 39
0080 ; }else
0080 01C0 rjmp L20
0082 L19:
0082 .dbline 40
0082 ; {
0082 .dbline 41
0082 ; a=0;
0082 4427 clr R20
0084 .dbline 42
0084 ; }
0084 L20:
0084 L18:
0084 L16:
0084 .dbline 44
0084 ;
0084 ; a=a*10+key_i;
0084 8AE0 ldi R24,10
0086 849F mul R24,R20
0088 402D mov R20,R0
008A 20900200 lds R2,L7
008E 420D add R20,R2
0090 .dbline 45
0090 ; if(a<20)
0090 4431 cpi R20,20
0092 D8F4 brsh L21
0094 .dbline 46
0094 ; {
0094 .dbline 47
0094 ; NKEY_n++;
0094 80910200 lds R24,L6
0098 8F5F subi R24,255 ; addi 1
009A 80930200 sts L6,R24
009E .dbline 48
009E ; if(NKEY_n==4)
009E 8430 cpi R24,4
00A0 09F0 breq X6
00A2 80C0 rjmp L22
00A4 X6:
00A4 .dbline 49
00A4 ; {
00A4 .dbline 51
00A4 ;
00A4 ; NKEY_n=0; z=1;
00A4 2224 clr R2
00A6 20920200 sts L6,R2
00AA .dbline 51
00AA 21E0 ldi R18,1
00AC .dbline 52
00AC ; for(a=0;a!=14;a++)
00AC 4427 clr R20
00AE 09C0 rjmp L28
00B0 L25:
00B0 .dbline 53
00B0 80E0 ldi R24,<_KKEY_n
00B2 90E0 ldi R25,>_KKEY_n
00B4 E42F mov R30,R20
00B6 FF27 clr R31
00B8 E80F add R30,R24
00BA F91F adc R31,R25
00BC 2224 clr R2
00BE 2082 std z+0,R2
00C0 L26:
00C0 .dbline 52
00C0 4395 inc R20
00C2 L28:
00C2 .dbline 52
00C2 4E30 cpi R20,14
00C4 A9F7 brne L25
00C6 .dbline 54
00C6 ; KKEY_n[a]=0;
00C6 ; KEYIN=0; //返回空按钮键值
00C6 0027 clr R16
00C8 .dbline 55
00C8 ; }
00C8 .dbline 56
00C8 ; }else //A>20
00C8 6DC0 rjmp L22
00CA L21:
00CA .dbline 57
00CA ; {
00CA .dbline 58
00CA ; NKEY_n=0;
00CA 2224 clr R2
00CC 20920200 sts L6,R2
00D0 .dbline 59
00D0 ; switch(a)
00D0 642F mov R22,R20
00D2 7727 clr R23
00D4 6832 cpi R22,40
00D6 E0E0 ldi R30,0
00D8 7E07 cpc R23,R30
00DA 69F1 breq L38
00DC 6932 cpi R22,41
00DE E0E0 ldi R30,0
00E0 7E07 cpc R23,R30
00E2 19F1 breq L36
00E4 89E2 ldi R24,41
00E6 90E0 ldi R25,0
00E8 8617 cp R24,R22
00EA 9707 cpc R25,R23
00EC 4CF0 brlt L44
00EE L43:
00EE 6E31 cpi R22,30
00F0 E0E0 ldi R30,0
00F2 7E07 cpc R23,R30
00F4 A1F0 breq L34
00F6 6F31 cpi R22,31
00F8 E0E0 ldi R30,0
00FA 7E07 cpc R23,R30
00FC 51F0 breq L32
00FE 2CC0 rjmp L29
0100 L44:
0100 6233 cpi R22,50
0102 E0E0 ldi R30,0
0104 7E07 cpc R23,R30
0106 19F1 breq L41
0108 6333 cpi R22,51
010A E0E0 ldi R30,0
010C 7E07 cpc R23,R30
010E C9F0 breq L39
0110 23C0 rjmp L29
0112 X2:
0112 .dbline 60
0112 ; {
0112 L32:
0112 .dbline 62
0112 ;
0112 ; case 31:KKEY_n[3]++;break; //UP 4
0112 80910300 lds R24,_KKEY_n+3
0116 8F5F subi R24,255 ; addi 1
0118 80930300 sts _KKEY_n+3,R24
011C .dbline 62
011C 1DC0 rjmp L30
011E L34:
011E .dbline 63
011E ; case 30:KKEY_n[8]++;break; //KS3 9
011E 80910800 lds R24,_KKEY_n+8
0122 8F5F subi R24,255 ; addi 1
0124 80930800 sts _KKEY_n+8,R24
0128 .dbline 63
0128 17C0 rjmp L30
012A L36:
012A .dbline 65
012A ;
012A ; case 41:KKEY_n[1]++;break; // ADD 2
012A 80910100 lds R24,_KKEY_n+1
012E 8F5F subi R24,255 ; addi 1
0130 80930100 sts _KKEY_n+1,R24
0134 .dbline 65
0134 11C0 rjmp L30
0136 L38:
0136 .dbline 66
0136 ; case 40:KKEY_n[0]++;break; //BEGIN 1
0136 80910000 lds R24,_KKEY_n
013A 8F5F subi R24,255 ; addi 1
013C 80930000 sts _KKEY_n,R24
0140 .dbline 66
0140 0BC0 rjmp L30
0142 L39:
0142 .dbline 68
0142 ;
0142 ; case 51:KKEY_n[12]++;break; // X6 13
0142 80910C00 lds R24,_KKEY_n+12
0146 8F5F subi R24,255 ; addi 1
0148 80930C00 sts _KKEY_n+12,R24
014C .dbline 68
014C 05C0 rjmp L30
014E L41:
014E .dbline 69
014E ; case 50:KKEY_n[6]++;break; // MUSIC
014E 80910600 lds R24,_KKEY_n+6
0152 8F5F subi R24,255 ; addi 1
0154 80930600 sts _KKEY_n+6,R24
0158 .dbline 69
0158 L29:
0158 L30:
0158 .dbline 72
0158 ;
0158 ; }
0158 ; for(a=0;a!=14;a++)
0158 4427 clr R20
015A 1EC0 rjmp L48
015C L45:
015C .dbline 73
015C ; {
015C .dbline 74
015C ; if(KKEY_n[a]==4)
015C 80E0 ldi R24,<_KKEY_n
015E 90E0 ldi R25,>_KKEY_n
0160 E42F mov R30,R20
0162 FF27 clr R31
0164 E80F add R30,R24
0166 F91F adc R31,R25
0168 8081 ldd R24,z+0
016A 8430 cpi R24,4
016C A1F4 brne L49
016E .dbline 75
016E ; {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -