📄 keyled.lis
字号:
0144 L36:
0144 .dbline 63
0144 ; {
0144 .dbline 64
0144 ; PORTA=seg_table[time[i]];
0144 80E0 ldi R24,<_time
0146 90E0 ldi R25,>_time
0148 E42F mov R30,R20
014A FF27 clr R31
014C E80F add R30,R24
014E F91F adc R31,R25
0150 E081 ldd R30,z+0
0152 FF27 clr R31
0154 80E0 ldi R24,<_seg_table
0156 90E0 ldi R25,>_seg_table
0158 E80F add R30,R24
015A F91F adc R31,R25
015C 2690 elpm R2,Z
015E 2BBA out 0x1b,R2
0160 .dbline 65
0160 ; PORTC=~(1<<(i+4));
0160 142F mov R17,R20
0162 1C5F subi R17,252 ; addi 4
0164 01E0 ldi R16,1
0166 0E940000 xcall lsl8
016A 202E mov R2,R16
016C 2094 com R2
016E 25BA out 0x15,R2
0170 .dbline 66
0170 ; delay_1ms();
0170 47DF xcall _delay_1ms
0172 .dbline 67
0172 ; PORTC|=0xf0;
0172 85B3 in R24,0x15
0174 806F ori R24,240
0176 85BB out 0x15,R24
0178 .dbline 68
0178 ; }
0178 L37:
0178 .dbline 62
0178 4395 inc R20
017A L39:
017A .dbline 62
017A 4430 cpi R20,4
017C 18F3 brlo L36
017E X11:
017E .dbline 69
017E ; }
017E .dbline 70
017E ; }
017E 1FC0 xjmp L35
0180 L34:
0180 .dbline 72
0180 ; else //只显示秒
0180 ; for(i=0;i<2;i++)
0180 4427 clr R20
0182 1BC0 xjmp L43
0184 L40:
0184 .dbline 73
0184 ; {
0184 .dbline 74
0184 ; PORTA=seg_table[time[i]];
0184 80E0 ldi R24,<_time
0186 90E0 ldi R25,>_time
0188 E42F mov R30,R20
018A FF27 clr R31
018C E80F add R30,R24
018E F91F adc R31,R25
0190 E081 ldd R30,z+0
0192 FF27 clr R31
0194 80E0 ldi R24,<_seg_table
0196 90E0 ldi R25,>_seg_table
0198 E80F add R30,R24
019A F91F adc R31,R25
019C 2690 elpm R2,Z
019E 2BBA out 0x1b,R2
01A0 .dbline 75
01A0 ; PORTC=~(1<<(i+4));
01A0 142F mov R17,R20
01A2 1C5F subi R17,252 ; addi 4
01A4 01E0 ldi R16,1
01A6 0E940000 xcall lsl8
01AA 202E mov R2,R16
01AC 2094 com R2
01AE 25BA out 0x15,R2
01B0 .dbline 76
01B0 ; delay_1ms();
01B0 27DF xcall _delay_1ms
01B2 .dbline 77
01B2 ; PORTC|=0x30;
01B2 85B3 in R24,0x15
01B4 8063 ori R24,48
01B6 85BB out 0x15,R24
01B8 .dbline 78
01B8 ; }
01B8 L41:
01B8 .dbline 72
01B8 4395 inc R20
01BA L43:
01BA .dbline 72
01BA 4230 cpi R20,2
01BC 18F3 brlo L40
01BE X12:
01BE L35:
01BE .dbline 79
01BE ; }
01BE L32:
01BE L21:
01BE L15:
01BE .dbline 80
01BE ; }
01BE L12:
01BE .dbline 83
01BE ; //}
01BE ; //if(clock_start==0x00) //跑表显示,当跑表已经启动时
01BE ; if(work_state==1)
01BE 80910A00 lds R24,_work_state
01C2 8130 cpi R24,1
01C4 F9F4 brne L44
01C6 X13:
01C6 .dbline 85
01C6 ; //{for(j=0;j<5;j++)
01C6 ; {
01C6 .dbline 86
01C6 ; for(k=0;k<4;k++)
01C6 4427 clr R20
01C8 1BC0 xjmp L49
01CA L46:
01CA .dbline 87
01CA ; {
01CA .dbline 88
01CA ; PORTA=seg_table[clock[k]];
01CA 80E0 ldi R24,<_clock
01CC 90E0 ldi R25,>_clock
01CE E42F mov R30,R20
01D0 FF27 clr R31
01D2 E80F add R30,R24
01D4 F91F adc R31,R25
01D6 E081 ldd R30,z+0
01D8 FF27 clr R31
01DA 80E0 ldi R24,<_seg_table
01DC 90E0 ldi R25,>_seg_table
01DE E80F add R30,R24
01E0 F91F adc R31,R25
01E2 2690 elpm R2,Z
01E4 2BBA out 0x1b,R2
01E6 .dbline 89
01E6 ; PORTC=~(1<<(k+4));
01E6 142F mov R17,R20
01E8 1C5F subi R17,252 ; addi 4
01EA 01E0 ldi R16,1
01EC 0E940000 xcall lsl8
01F0 202E mov R2,R16
01F2 2094 com R2
01F4 25BA out 0x15,R2
01F6 .dbline 90
01F6 ; delay_1ms();
01F6 04DF xcall _delay_1ms
01F8 .dbline 91
01F8 ; PORTC|=0xf0;
01F8 85B3 in R24,0x15
01FA 806F ori R24,240
01FC 85BB out 0x15,R24
01FE .dbline 92
01FE ; }
01FE L47:
01FE .dbline 86
01FE 4395 inc R20
0200 L49:
0200 .dbline 86
0200 4430 cpi R20,4
0202 18F3 brlo L46
0204 X14:
0204 .dbline 93
0204 ; }
0204 L44:
0204 .dbline -2
0204 L11:
0204 .dbline 0 ; func end
0204 4991 ld R20,y+
0206 0895 ret
0208 .dbsym l j 1 c
0208 .dbsym r i 20 c
0208 .dbsym r k 20 c
0208 .dbend
0208 .dbfunc e timer0_com_isr _timer0_com_isr fV
.even
0208 _timer0_com_isr::
0208 0A92 st -y,R0
020A 1A92 st -y,R1
020C 2A92 st -y,R2
020E 3A92 st -y,R3
0210 4A92 st -y,R4
0212 5A92 st -y,R5
0214 6A92 st -y,R6
0216 7A92 st -y,R7
0218 8A92 st -y,R8
021A 9A92 st -y,R9
021C 0A93 st -y,R16
021E 1A93 st -y,R17
0220 2A93 st -y,R18
0222 3A93 st -y,R19
0224 8A93 st -y,R24
0226 9A93 st -y,R25
0228 AA93 st -y,R26
022A BA93 st -y,R27
022C EA93 st -y,R30
022E FA93 st -y,R31
0230 0FB6 in R0,0x3f
0232 0A92 st -y,R0
0234 .dbline -1
0234 .dbline 97
0234 ; //}
0234 ; }
0234 ; void timer0_com_isr() /* 2 ms*/
0234 ; {
0234 .dbline 98
0234 ; TIFR=0xff;
0234 8FEF ldi R24,255
0236 86BF out 0x36,R24
0238 .dbline 100
0238 ; // timer2++; //10 ms
0238 ; timer200++; //1 s,因为没有暂停的说法,所以一直加
0238 80910B00 lds R24,_timer200
023C 90910C00 lds R25,_timer200+1
0240 0196 adiw R24,1
0242 90930C00 sts _timer200+1,R25
0246 80930B00 sts _timer200,R24
024A .dbline 102
024A ; //TCNT0=0x05;
024A ; TCNT0=0xd7;
024A 87ED ldi R24,215
024C 82BF out 0x32,R24
024E .dbline 103
024E ; if(timer200==200) //计时 1s
024E 80910B00 lds R24,_timer200
0252 90910C00 lds R25,_timer200+1
0256 883C cpi R24,200
0258 E0E0 ldi R30,0
025A 9E07 cpc R25,R30
025C 89F5 brne L51
025E X18:
025E .dbline 104
025E ; {
025E .dbline 105
025E ; timer200=0;
025E 2224 clr R2
0260 3324 clr R3
0262 30920C00 sts _timer200+1,R3
0266 20920B00 sts _timer200,R2
026A .dbline 106
026A ; time[0]++;
026A 80910400 lds R24,_time
026E 8F5F subi R24,255 ; addi 1
0270 80930400 sts _time,R24
0274 .dbline 107
0274 ; if(time[0]==10) // second 个位
0274 8A30 cpi R24,10
0276 21F5 brne L53
0278 X19:
0278 .dbline 108
0278 ; {
0278 .dbline 109
0278 ; time[0]=0;
0278 20920400 sts _time,R2
027C .dbline 110
027C ; time[1]++;
027C 80910500 lds R24,_time+1
0280 8F5F subi R24,255 ; addi 1
0282 80930500 sts _time+1,R24
0286 .dbline 111
0286 ; if(time[1]==6) //second 十位
0286 8630 cpi R24,6
0288 D9F4 brne L56
028A X20:
028A .dbline 112
028A ; {
028A .dbline 113
028A ; time[1]=0;
028A 20920500 sts _time+1,R2
028E .dbline 114
028E ; time[2]++;
028E 80910600 lds R24,_time+2
0292 8F5F subi R24,255 ; addi 1
0294 80930600 sts _time+2,R24
0298 .dbline 115
0298 ; if(time[2]==10) // 分个位
0298 8A30 cpi R24,10
029A 91F4 brne L61
029C X21:
029C .dbline 116
029C ; {
029C .dbline 117
029C ; time[2]=0;
029C 20920600 sts _time+2,R2
02A0 .dbline 118
02A0 ; time[3]++;
02A0 80910700 lds R24,_time+3
02A4 8F5F subi R24,255 ; addi 1
02A6 80930700 sts _time+3,R24
02AA .dbline 119
02AA ; if(time[3]==6)
02AA 8630 cpi R24,6
02AC 11F4 brne L66
02AE X22:
02AE .dbline 120
02AE ; time[3]=0;
02AE 20920700 sts _time+3,R2
02B2 L66:
02B2 .dbline 121
02B2 ; time[2]=0;
02B2 2224 clr R2
02B4 20920600 sts _time+2,R2
02B8 .dbline 122
02B8 ; time[1]=0;
02B8 20920500 sts _time+1,R2
02BC .dbline 123
02BC ; time[0]=0;
02BC 20920400 sts _time,R2
02C0 .dbline 124
02C0 ; } //time[2]
02C0 L61:
02C0 .dbline 125
02C0 ; } //time[1]
02C0 L56:
02C0 .dbline 126
02C0 ; } //time[0]
02C0 L53:
02C0 .dbline 128
02C0 ;
02C0 ; } // 1s
02C0 L51:
02C0 .dbline 130
02C0 ;
02C0 ; if(work_state==0x01&&clock_start==0) //跑表
02C0 80910A00 lds R24,_work_state
02C4 8130 cpi R24,1
02C6 C1F5 brne L72
02C8 X23:
02C8 20900800 lds R2,_clock_start
02CC 2220 tst R2
02CE A1F5 brne L72
02D0 X24:
02D0 .dbline 131
02D0 ; {
02D0 .dbline 132
02D0 ; timer2++;
02D0 80910D00 lds R24,_timer2
02D4 8F5F subi R24,255 ; addi 1
02D6 80930D00 sts _timer2,R24
02DA .dbline 133
02DA ; if(timer2==0x02)
02DA 8230 cpi R24,2
02DC 69F5 brne L74
02DE X25:
02DE .dbline 134
02DE ; {timer2=0;
02DE .dbline 134
02DE 2224 clr R2
02E0 20920D00 sts _timer2,R2
02E4 .dbline 135
02E4 ; clock[0]++;
02E4 80910000 lds R24,_clock
02E8 8F5F subi R24,255 ; addi 1
02EA 80930000 sts _clock,R24
02EE .dbline 136
02EE ; if(clock[0]==10)
02EE 8A30 cpi R24,10
02F0 19F5 brne L76
02F2 X26:
02F2 .dbline 137
02F2 ; {
02F2 .dbline 138
02F2 ; clock[0]=0;
02F2 20920000 sts _clock,R2
02F6 .dbline 139
02F6 ; clock[1]++;
02F6 80910100 lds R24,_clock+1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -