📄 keyled.lis
字号:
02FA 8F5F subi R24,255 ; addi 1
02FC 80930100 sts _clock+1,R24
0300 .dbline 140
0300 ; if(clock[1]==10)
0300 8A30 cpi R24,10
0302 D1F4 brne L79
0304 X27:
0304 .dbline 141
0304 ; {
0304 .dbline 142
0304 ; clock[1]=0;
0304 20920100 sts _clock+1,R2
0308 .dbline 143
0308 ; clock[2]++;
0308 80910200 lds R24,_clock+2
030C 8F5F subi R24,255 ; addi 1
030E 80930200 sts _clock+2,R24
0312 .dbline 144
0312 ; if(clock[2]==10)
0312 8A30 cpi R24,10
0314 89F4 brne L84
0316 X28:
0316 .dbline 145
0316 ; {
0316 .dbline 146
0316 ; clock[2]=0;
0316 20920200 sts _clock+2,R2
031A .dbline 147
031A ; clock[3]++;
031A 80910300 lds R24,_clock+3
031E 8F5F subi R24,255 ; addi 1
0320 80930300 sts _clock+3,R24
0324 .dbline 148
0324 ; if(clock[3]==10)
0324 8A30 cpi R24,10
0326 41F4 brne L89
0328 X29:
0328 .dbline 149
0328 ; {
0328 .dbline 150
0328 ; clock[3]=0;
0328 20920300 sts _clock+3,R2
032C .dbline 151
032C ; clock[0]=0;
032C 20920000 sts _clock,R2
0330 .dbline 152
0330 ; clock[1]=0;
0330 20920100 sts _clock+1,R2
0334 .dbline 153
0334 ; clock[2]=0;
0334 20920200 sts _clock+2,R2
0338 .dbline 154
0338 ; }
0338 L89:
0338 .dbline 155
0338 ; }
0338 L84:
0338 .dbline 156
0338 ; }
0338 L79:
0338 .dbline 157
0338 ; }
0338 L76:
0338 .dbline 158
0338 ; }
0338 L74:
0338 .dbline 159
0338 ; }
0338 L72:
0338 .dbline 161
0338 ;
0338 ; display();
0338 7ADE xcall _display
033A .dbline -2
033A L50:
033A .dbline 0 ; func end
033A 0990 ld R0,y+
033C 0FBE out 0x3f,R0
033E F991 ld R31,y+
0340 E991 ld R30,y+
0342 B991 ld R27,y+
0344 A991 ld R26,y+
0346 9991 ld R25,y+
0348 8991 ld R24,y+
034A 3991 ld R19,y+
034C 2991 ld R18,y+
034E 1991 ld R17,y+
0350 0991 ld R16,y+
0352 9990 ld R9,y+
0354 8990 ld R8,y+
0356 7990 ld R7,y+
0358 6990 ld R6,y+
035A 5990 ld R5,y+
035C 4990 ld R4,y+
035E 3990 ld R3,y+
0360 2990 ld R2,y+
0362 1990 ld R1,y+
0364 0990 ld R0,y+
0366 1895 reti
0368 .dbend
0368 .dbfunc e wait _wait fV
.even
0368 _wait::
0368 .dbline -1
0368 .dbline 165
0368 ; } //timer0_com_isr
0368 ;
0368 ; void wait()
0368 ; {
0368 07C0 xjmp L97
036A L96:
036A .dbline 167
036A ; while((PINB&0xf0)!=0xf0)
036A ; {
036A .dbline 168
036A ; delay(20);
036A 04E1 ldi R16,20
036C 10E0 ldi R17,0
036E 51DE xcall _delay
0370 L99:
0370 .dbline 170
0370 ; while((PINB&0xf0)!=0xf0)
0370 ; ;
0370 L100:
0370 .dbline 169
0370 86B3 in R24,0x16
0372 807F andi R24,240
0374 803F cpi R24,240
0376 E1F7 brne L99
0378 X30:
0378 .dbline 171
0378 ; }
0378 L97:
0378 .dbline 166
0378 86B3 in R24,0x16
037A 807F andi R24,240
037C 803F cpi R24,240
037E A9F7 brne L96
0380 X31:
0380 .dbline -2
0380 L95:
0380 .dbline 0 ; func end
0380 0895 ret
0382 .dbend
0382 .dbfunc e main _main fV
0382 ; i -> R20
.even
0382 _main::
0382 .dbline -1
0382 .dbline 174
0382 ; }
0382 ; void main()
0382 ; {
0382 .dbline 176
0382 ; unsigned char i;
0382 ; timer2=0;
0382 2224 clr R2
0384 20920D00 sts _timer2,R2
0388 .dbline 177
0388 ; timer200=0;
0388 3324 clr R3
038A 30920C00 sts _timer200+1,R3
038E 20920B00 sts _timer200,R2
0392 .dbline 178
0392 ; work_state=0;
0392 20920A00 sts _work_state,R2
0396 .dbline 179
0396 ; time_change=0x00;
0396 20920900 sts _time_change,R2
039A .dbline 180
039A ; clock_start=1; //停止跑表
039A 81E0 ldi R24,1
039C 80930800 sts _clock_start,R24
03A0 .dbline 182
03A0 ; /* 定时器0 定时 5 ms,general mode ,溢出 interrupt */
03A0 ; TCCR0=0x07; //general mode
03A0 87E0 ldi R24,7
03A2 83BF out 0x33,R24
03A4 .dbline 184
03A4 ; //TCNT0=0x05;
03A4 ; TCNT0=0xd7;
03A4 87ED ldi R24,215
03A6 82BF out 0x32,R24
03A8 .dbline 185
03A8 ; TIMSK=0x01;
03A8 81E0 ldi R24,1
03AA 87BF out 0x37,R24
03AC .dbline 187
03AC ;
03AC ; DDRB=0x0f; //set PB7~PB4 PULL-UP resistor
03AC 8FE0 ldi R24,15
03AE 87BB out 0x17,R24
03B0 .dbline 188
03B0 ; PORTB=0xfe;
03B0 8EEF ldi R24,254
03B2 88BB out 0x18,R24
03B4 .dbline 189
03B4 ; for(i=0;i<4;i++)
03B4 4427 clr R20
03B6 10C0 xjmp L106
03B8 L103:
03B8 .dbline 190
03B8 ; {
03B8 .dbline 191
03B8 ; time[i]=0;
03B8 80E0 ldi R24,<_time
03BA 90E0 ldi R25,>_time
03BC E42F mov R30,R20
03BE FF27 clr R31
03C0 E80F add R30,R24
03C2 F91F adc R31,R25
03C4 2224 clr R2
03C6 2082 std z+0,R2
03C8 .dbline 192
03C8 ; clock[i]=0;
03C8 80E0 ldi R24,<_clock
03CA 90E0 ldi R25,>_clock
03CC E42F mov R30,R20
03CE FF27 clr R31
03D0 E80F add R30,R24
03D2 F91F adc R31,R25
03D4 2082 std z+0,R2
03D6 .dbline 193
03D6 ; }
03D6 L104:
03D6 .dbline 189
03D6 4395 inc R20
03D8 L106:
03D8 .dbline 189
03D8 4430 cpi R20,4
03DA 70F3 brlo L103
03DC X32:
03DC .dbline 194
03DC ; SEI();
03DC 7894 sei
03DE F7C0 xjmp L108
03E0 L110:
03E0 .dbline 199
03E0 ; while(1)
03E0 ; {
03E0 ;
03E0 ; while((PINB&0xf0)==0xf0)
03E0 ; {
03E0 .dbline 200
03E0 ; delay(20);
03E0 04E1 ldi R16,20
03E2 10E0 ldi R17,0
03E4 16DE xcall _delay
03E6 L113:
03E6 .dbline 202
03E6 ; while((PINB&0xf0)==0xf0)
03E6 ; ;
03E6 L114:
03E6 .dbline 201
03E6 86B3 in R24,0x16
03E8 807F andi R24,240
03EA 803F cpi R24,240
03EC E1F3 breq L113
03EE X33:
03EE .dbline 203
03EE ; }
03EE L111:
03EE .dbline 198
03EE 86B3 in R24,0x16
03F0 807F andi R24,240
03F2 803F cpi R24,240
03F4 A9F3 breq L110
03F6 X34:
03F6 .dbline 204
03F6 ; temp=PINB&0xf0;
03F6 86B3 in R24,0x16
03F8 807F andi R24,240
03FA 80930E00 sts _temp,R24
03FE .dbline 205
03FE ; switch(temp)
03FE 682F mov R22,R24
0400 7727 clr R23
0402 603B cpi R22,176
0404 E0E0 ldi R30,0
0406 7E07 cpc R23,R30
0408 09F4 brne X66
040A 6AC0 xjmp L143
040C X66:
040C X35:
040C 80EB ldi R24,176
040E 90E0 ldi R25,0
0410 8617 cp R24,R22
0412 9707 cpc R25,R23
0414 34F0 brlt L194
0416 X36:
0416 L193:
0416 6037 cpi R22,112
0418 E0E0 ldi R30,0
041A 7E07 cpc R23,R30
041C 09F4 brne X67
041E A1C0 xjmp L169
0420 X67:
0420 X37:
0420 D6C0 xjmp L117
0422 L194:
0422 603D cpi R22,208
0424 E0E0 ldi R30,0
0426 7E07 cpc R23,R30
0428 49F1 breq L126
042A X38:
042A 603D cpi R22,208
042C E0E0 ldi R30,0
042E 7E07 cpc R23,R30
0430 0CF4 brge X68
0432 CDC0 xjmp L117
0434 X68:
0434 X39:
0434 L195:
0434 603E cpi R22,224
0436 E0E0 ldi R30,0
0438 7E07 cpc R23,R30
043A 09F0 breq L119
043C X40:
043C C8C0 xjmp L117
043E L119:
043E .dbline 208
043E ; {
043E ; case 0xe0: //key 0
043E ; if(work_state==0)
043E 20900A00 lds R2,_work_state
0442 2220 tst R2
0444 99F4 brne L120
0446 X41:
0446 .dbline 209
0446 ; {
0446 .dbline 210
0446 ; work_state=1; //跑表模式
0446 81E0 ldi R24,1
0448 80930A00 sts _work_state,R24
044C .dbline 211
044C ; clock_start=1; //跑表启动
044C 80930800 sts _clock_start,R24
0450 .dbline 212
0450 ; for(i=0;i<4;i++)
0450 4427 clr R20
0452 09C0 xjmp L125
0454 L122:
0454 .dbline 213
0454 ; clock[i]=0;
0454 80E0 ldi R24,<_clock
0456 90E0 ldi R25,>_clock
0458 E42F mov R30,R20
045A FF27 clr R31
045C E80F add R30,R24
045E F91F adc R31,R25
0460 2224 clr R2
0462 2082 std z+0,R2
0464 L123:
0464 .dbline 212
0464 4395 inc R20
0466 L125:
0466 .dbline 212
0466 4430 cpi R20,4
0468 A8F3 brlo L122
046A X42:
046A .dbline 214
046A ; }
046A 03C0 xjmp L121
046C L120:
046C .dbline 216
046C ; else
046C ; work_state=0x00;
046C 2224 clr R2
046E 20920A00 sts _work_state,R2
0472 L121:
0472 .dbline 217
0472 ; clock_start=0;
0472 2224 clr R2
0474 20920800 sts _clock_start,R2
0478 .dbline 218
0478 ; wait();
0478 77DF xcall _wait
047A .dbline 219
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -