📄 main.lis
字号:
.module main.c
.area data(ram, con, rel)
0000 _ticnt::
0000 .blkb 2
.area idata
0000 0000 .word 0
.area data(ram, con, rel)
0002 .dbfile E:\NumberDisplay\cfile\main.c
0002 .dbsym e ticnt _ticnt i
0002 _keytime::
0002 .blkb 2
.area idata
0002 0000 .word 0
.area data(ram, con, rel)
0004 .dbfile E:\NumberDisplay\cfile\main.c
0004 .dbsym e keytime _keytime i
.area vector(rom, abs)
.org 2
0002 00C0 rjmp _Key_Init
.area data(ram, con, rel)
0004 .dbfile E:\NumberDisplay\cfile\main.c
.area text(rom, con, rel)
0000 .dbfile E:\NumberDisplay\cfile\main.c
0000 .dbfunc e Key_Init _Key_Init fV
0000 ; j -> R10
0000 ; x -> R10
.even
0000 _Key_Init::
0000 0A92 st -y,R0
0002 1A92 st -y,R1
0004 2A92 st -y,R2
0006 3A92 st -y,R3
0008 4A92 st -y,R4
000A 5A92 st -y,R5
000C 6A92 st -y,R6
000E 7A92 st -y,R7
0010 8A92 st -y,R8
0012 9A92 st -y,R9
0014 0A93 st -y,R16
0016 1A93 st -y,R17
0018 2A93 st -y,R18
001A 8A93 st -y,R24
001C 9A93 st -y,R25
001E EA93 st -y,R30
0020 FA93 st -y,R31
0022 0FB6 in R0,0x3f
0024 0A92 st -y,R0
0026 00D0 rcall push_gset3
0028 .dbline -1
0028 .dbline 16
0028 ; #define MAIN_C
0028 ; #include "main.h"
0028 ; #define ds 0
0028 ; #define cp 1
0028 ; #define sh_cp 2
0028 ; long Contdata,timeset[3];
0028 ; unsigned int ti[3],ticnt =0;
0028 ; unsigned int keytime=0;
0028 ; unsigned char kt[3],keybit;
0028 ; extern long tempcnt;
0028 ; extern unsigned char trdata_x[ ];
0028 ; extern unsigned char inmtemp;
0028 ; //--------------------------------------------------------------------
0028 ; #pragma interrupt_handler Key_Init:2
0028 ; void Key_Init(void)
0028 ; {
0028 .dbline 18
0028 ; unsigned char j,x;
0028 ; j=ACSR&0X20;
0028 80B7 in R24,0x30
002A 8072 andi R24,32
002C A82E mov R10,R24
002E .dbline 19
002E 20900000 lds R2,_inmtemp
0032 2220 tst R2
0034 31F0 breq L2
0036 .dbline 19
0036 .dbline 19
0036 8823 tst R24
0038 19F4 brne L4
003A .dbline 19
003A 80E2 ldi R24,32
003C A82E mov R10,R24
003E 01C0 rjmp L5
0040 L4:
0040 .dbline 19
0040 AA24 clr R10
0042 L5:
0042 .dbline 19
0042 ; if( inmtemp!=0) { if(j==0) j=0x20; else j=0; }
0042 L2:
0042 .dbline 20
0042 ; if (j==0) { Contdata++;}
0042 AA20 tst R10
0044 C9F4 brne L6
0046 .dbline 20
0046 .dbline 20
0046 41E0 ldi R20,1
0048 50E0 ldi R21,0
004A 60E0 ldi R22,0
004C 70E0 ldi R23,0
004E 40901800 lds R4,_Contdata+2
0052 50901900 lds R5,_Contdata+2+1
0056 20901600 lds R2,_Contdata
005A 30901700 lds R3,_Contdata+1
005E 240E add R2,R20
0060 351E adc R3,R21
0062 461E adc R4,R22
0064 571E adc R5,R23
0066 30921700 sts _Contdata+1,R3
006A 20921600 sts _Contdata,R2
006E 50921900 sts _Contdata+2+1,R5
0072 40921800 sts _Contdata+2,R4
0076 .dbline 20
0076 18C0 rjmp L7
0078 L6:
0078 .dbline 21
0078 ; else { Contdata--;}
0078 .dbline 21
0078 41E0 ldi R20,1
007A 50E0 ldi R21,0
007C 60E0 ldi R22,0
007E 70E0 ldi R23,0
0080 40901800 lds R4,_Contdata+2
0084 50901900 lds R5,_Contdata+2+1
0088 20901600 lds R2,_Contdata
008C 30901700 lds R3,_Contdata+1
0090 241A sub R2,R20
0092 350A sbc R3,R21
0094 460A sbc R4,R22
0096 570A sbc R5,R23
0098 30921700 sts _Contdata+1,R3
009C 20921600 sts _Contdata,R2
00A0 50921900 sts _Contdata+2+1,R5
00A4 40921800 sts _Contdata+2,R4
00A8 .dbline 21
00A8 L7:
00A8 .dbline 22
00A8 ; for (x=0; x<3;x++)
00A8 AA24 clr R10
00AA 48C0 rjmp L11
00AC L8:
00AC .dbline 23
00AC ; {
00AC .dbline 24
00AC ; if(tempcnt>=timeset[x])
00AC 84E0 ldi R24,4
00AE 8A9D mul R24,R10
00B0 F001 movw R30,R0
00B2 80E0 ldi R24,<_timeset
00B4 90E0 ldi R25,>_timeset
00B6 E80F add R30,R24
00B8 F91F adc R31,R25
00BA 2080 ldd R2,z+0
00BC 3180 ldd R3,z+1
00BE 4280 ldd R4,z+2
00C0 5380 ldd R5,z+3
00C2 80900200 lds R8,_tempcnt+2
00C6 90900300 lds R9,_tempcnt+2+1
00CA 60900000 lds R6,_tempcnt
00CE 70900100 lds R7,_tempcnt+1
00D2 6214 cp R6,R2
00D4 7304 cpc R7,R3
00D6 8404 cpc R8,R4
00D8 9504 cpc R9,R5
00DA 0CF4 brge X0
00DC 2EC0 rjmp L12
00DE X0:
00DE .dbline 25
00DE ; {
00DE .dbline 26
00DE ; if(kt[x]==0)
00DE 80E0 ldi R24,<_kt
00E0 90E0 ldi R25,>_kt
00E2 EA2D mov R30,R10
00E4 FF27 clr R31
00E6 E80F add R30,R24
00E8 F91F adc R31,R25
00EA 2080 ldd R2,z+0
00EC 2220 tst R2
00EE 29F5 brne L14
00F0 .dbline 27
00F0 ; {
00F0 .dbline 28
00F0 ; if(trdata_x[x]!=0) {PORTC|=BIT(x+3);}
00F0 80E0 ldi R24,<_trdata_x
00F2 90E0 ldi R25,>_trdata_x
00F4 EA2D mov R30,R10
00F6 FF27 clr R31
00F8 E80F add R30,R24
00FA F91F adc R31,R25
00FC 2080 ldd R2,z+0
00FE 2220 tst R2
0100 39F0 breq L16
0102 .dbline 28
0102 .dbline 28
0102 1A2D mov R17,R10
0104 1D5F subi R17,253 ; addi 3
0106 01E0 ldi R16,1
0108 00D0 rcall lsl8
010A 28B0 in R2,0x8
010C 202A or R2,R16
010E 28B8 out 0x8,R2
0110 .dbline 28
0110 L16:
0110 .dbline 29
0110 ; ti[x]=ticnt;
0110 82E0 ldi R24,2
0112 8A9D mul R24,R10
0114 F001 movw R30,R0
0116 80E0 ldi R24,<_ti
0118 90E0 ldi R25,>_ti
011A E80F add R30,R24
011C F91F adc R31,R25
011E 20900000 lds R2,_ticnt
0122 30900100 lds R3,_ticnt+1
0126 3182 std z+1,R3
0128 2082 std z+0,R2
012A .dbline 30
012A ; kt[x]=1;
012A 80E0 ldi R24,<_kt
012C 90E0 ldi R25,>_kt
012E EA2D mov R30,R10
0130 FF27 clr R31
0132 E80F add R30,R24
0134 F91F adc R31,R25
0136 81E0 ldi R24,1
0138 8083 std z+0,R24
013A .dbline 31
013A ; }
013A L14:
013A .dbline 32
013A ; }
013A L12:
013A .dbline 33
013A L9:
013A .dbline 22
013A A394 inc R10
013C L11:
013C .dbline 22
013C 8A2D mov R24,R10
013E 8330 cpi R24,3
0140 08F4 brsh X1
0142 B4CF rjmp L8
0144 X1:
0144 .dbline -2
0144 L1:
0144 00D0 rcall pop_gset3
0146 0990 ld R0,y+
0148 0FBE out 0x3f,R0
014A F991 ld R31,y+
014C E991 ld R30,y+
014E 9991 ld R25,y+
0150 8991 ld R24,y+
0152 2991 ld R18,y+
0154 1991 ld R17,y+
0156 0991 ld R16,y+
0158 9990 ld R9,y+
015A 8990 ld R8,y+
015C 7990 ld R7,y+
015E 6990 ld R6,y+
0160 5990 ld R5,y+
0162 4990 ld R4,y+
0164 3990 ld R3,y+
0166 2990 ld R2,y+
0168 1990 ld R1,y+
016A 0990 ld R0,y+
016C .dbline 0 ; func end
016C 1895 reti
016E .dbsym r j 10 c
016E .dbsym r x 10 c
016E .dbend
.area vector(rom, abs)
.org 4
0004 B7C0 rjmp _bakcnt
.area text(rom, con, rel)
016E .dbfile E:\NumberDisplay\cfile\main.c
016E .dbfunc e bakcnt _bakcnt fV
.even
016E _bakcnt::
016E 00D0 rcall push_lset
0170 .dbline -1
0170 .dbline 38
0170 ; }
0170 ; }
0170 ; //--------------------------------------------------------------------
0170 ; #pragma interrupt_handler bakcnt:3
0170 ; void bakcnt(void)
0170 ; {
0170 .dbline 39
0170 ; CLI( );
0170 F894 cli
0172 .dbline 40
0172 ; powersave();
0172 A2D0 rcall _powersave
0174 .dbline -2
0174 L18:
0174 00D0 rcall pop_lset
0176 .dbline 0 ; func end
0176 1895 reti
0178 .dbend
.area vector(rom, abs)
.org 26
001A BCC0 rjmp _timer1_ovf_isr
.area text(rom, con, rel)
0178 .dbfile E:\NumberDisplay\cfile\main.c
0178 .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
.even
0178 _timer1_ovf_isr::
0178 2A92 st -y,R2
017A 3A92 st -y,R3
017C 8A93 st -y,R24
017E 9A93 st -y,R25
0180 EA93 st -y,R30
0182 2FB6 in R2,0x3f
0184 2A92 st -y,R2
0186 .dbline -1
0186 .dbline 45
0186 ; }
0186 ; //---------------------------------------------------------------------
0186 ; #pragma interrupt_handler timer1_ovf_isr:14
0186 ; void timer1_ovf_isr(void)
0186 ; {
0186 .dbline 46
0186 ; TCNT1H = 0xFD; //reload counter high value
0186 8DEF ldi R24,253
0188 80938500 sts 133,R24
018C .dbline 47
018C ; TCNT1L = 0x8F; //reload counter low value
018C 8FE8 ldi R24,143
018E 80938400 sts 132,R24
0192 .dbline 48
0192 ; if(ticnt<60000) {ticnt++; keytime++;}
0192 80910000 lds R24,_ticnt
0196 90910100 lds R25,_ticnt+1
019A 8036 cpi R24,96
019C EAEE ldi R30,234
019E 9E07 cpc R25,R30
01A0 78F4 brsh L20
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -