📄 wash.lis
字号:
03A0 331C rol R3
03A2 30920700 sts _KP+1,R3
03A6 20920600 sts _KP,R2
03AA .dbline 171
03AA 2224 clr R2
03AC 3324 clr R3
03AE 30920B00 sts _k0+1,R3
03B2 20920A00 sts _k0,R2
03B6 .dbline 172
03B6 ; }
03B6 L48:
03B6 .dbline 173
03B6 ; if (k_tim<KMAX0)
03B6 80910800 lds R24,_k_tim
03BA 90910900 lds R25,_k_tim+1
03BE 8431 cpi R24,20
03C0 E0E0 ldi R30,0
03C2 9E07 cpc R25,R30
03C4 FCF4 brge L43
03C6 .dbline 174
03C6 ; k0=k_val;
03C6 10930B00 sts _k0+1,R17
03CA 00930A00 sts _k0,R16
03CE .dbline 175
03CE ; }
03CE .dbline 176
03CE 1AC0 xjmp L43
03D0 L42:
03D0 .dbline 176
03D0 ; } else {
03D0 .dbline 177
03D0 ; if (k_tim<KMAX0)
03D0 80910800 lds R24,_k_tim
03D4 90910900 lds R25,_k_tim+1
03D8 8431 cpi R24,20
03DA E0E0 ldi R30,0
03DC 9E07 cpc R25,R30
03DE 44F4 brge L52
03E0 .dbline 178
03E0 ; KP = k0;
03E0 20900A00 lds R2,_k0
03E4 30900B00 lds R3,_k0+1
03E8 30920700 sts _KP+1,R3
03EC 20920600 sts _KP,R2
03F0 L52:
03F0 .dbline 179
03F0 ; k_tim=0;
03F0 2224 clr R2
03F2 3324 clr R3
03F4 30920900 sts _k_tim+1,R3
03F8 20920800 sts _k_tim,R2
03FC .dbline 180
03FC ; k0=0;
03FC 30920B00 sts _k0+1,R3
0400 20920A00 sts _k0,R2
0404 .dbline 181
0404 ; }
0404 L43:
0404 .dbline 182
0404 ; if (beep_num != 0) {
0404 20900400 lds R2,_beep_num
0408 30900500 lds R3,_beep_num+1
040C 2220 tst R2
040E 11F4 brne X18
0410 3320 tst R3
0412 51F1 breq L54
0414 X18:
0414 .dbline 182
0414 .dbline 183
0414 ; if (beep_delay0!=0) {
0414 20900000 lds R2,_beep_delay0
0418 30900100 lds R3,_beep_delay0+1
041C 2220 tst R2
041E 11F4 brne X19
0420 3320 tst R3
0422 51F0 breq L56
0424 X19:
0424 .dbline 183
0424 .dbline 184
0424 ; beep_delay0--;
0424 80910000 lds R24,_beep_delay0
0428 90910100 lds R25,_beep_delay0+1
042C 0197 sbiw R24,1
042E 90930100 sts _beep_delay0+1,R25
0432 80930000 sts _beep_delay0,R24
0436 .dbline 185
0436 18C0 xjmp L57
0438 L56:
0438 .dbline 185
0438 ; } else {
0438 .dbline 186
0438 ; beep_num--;
0438 80910400 lds R24,_beep_num
043C 90910500 lds R25,_beep_num+1
0440 0197 sbiw R24,1
0442 90930500 sts _beep_num+1,R25
0446 80930400 sts _beep_num,R24
044A .dbline 187
044A ; if (beep_num&1)
044A 80FF sbrs R24,0
044C 02C0 rjmp L58
044E .dbline 188
044E ; PORTB |= 0x80;
044E C79A sbi 0x18,7
0450 03C0 xjmp L59
0452 L58:
0452 .dbline 190
0452 ; else
0452 ; PORTB &=0x7f;
0452 88B3 in R24,0x18
0454 8F77 andi R24,127
0456 88BB out 0x18,R24
0458 L59:
0458 .dbline 191
0458 ; beep_delay0=beep_delay;
0458 20900200 lds R2,_beep_delay
045C 30900300 lds R3,_beep_delay+1
0460 30920100 sts _beep_delay0+1,R3
0464 20920000 sts _beep_delay0,R2
0468 .dbline 192
0468 ; }
0468 L57:
0468 .dbline 193
0468 L54:
0468 .dbline -2
0468 L39:
0468 2990 ld R2,y+
046A 2FBE out 0x3f,R2
046C E991 ld R30,y+
046E 9991 ld R25,y+
0470 8991 ld R24,y+
0472 1991 ld R17,y+
0474 0991 ld R16,y+
0476 3990 ld R3,y+
0478 2990 ld R2,y+
047A .dbline 0 ; func end
047A 1895 reti
047C .dbsym r k_val 16 I
047C .dbend
047C .dbfunc e Beep _Beep fV
047C ; delay -> R18,R19
047C ; num -> R16,R17
.even
047C _Beep::
047C .dbline -1
047C .dbline 198
047C ; }
047C ; }
047C ;
047C ; // Set freq and time, Create wave by TIMER2
047C ; void Beep(int num, int delay)
047C ; {
047C .dbline 199
047C ; beep_num=(num<<1);
047C 1801 movw R2,R16
047E 220C lsl R2
0480 331C rol R3
0482 30920500 sts _beep_num+1,R3
0486 20920400 sts _beep_num,R2
048A .dbline 200
048A ; beep_delay=delay;
048A 30930300 sts _beep_delay+1,R19
048E 20930200 sts _beep_delay,R18
0492 .dbline 201
0492 ; beep_delay0=0;
0492 2224 clr R2
0494 3324 clr R3
0496 30920100 sts _beep_delay0+1,R3
049A 20920000 sts _beep_delay0,R2
049E .dbline -2
049E L60:
049E .dbline 0 ; func end
049E 0895 ret
04A0 .dbsym r delay 18 I
04A0 .dbsym r num 16 I
04A0 .dbend
04A0 .dbfunc e Light _Light fV
04A0 ; mst -> R20,R21
04A0 ; st -> R16,R17
.even
04A0 _Light::
04A0 0E940000 xcall push_gset1
04A4 .dbline -1
04A4 .dbline 208
04A4 ; }
04A4 ;
04A4 ; /////////////////////////////////////////////////////////////
04A4 ; // Light (st)
04A4 ; // st: 1:Ready 2:Runing 3:Pause 0:Over
04A4 ; void Light(int st)
04A4 ; {
04A4 .dbline 210
04A4 ; int mst;
04A4 ; mst=0;
04A4 4427 clr R20
04A6 5527 clr R21
04A8 .dbline 211
04A8 ; if (st&1)
04A8 00FF sbrs R16,0
04AA 01C0 rjmp L62
04AC .dbline 212
04AC ; mst |= 0x08;
04AC 4860 ori R20,8
04AE L62:
04AE .dbline 213
04AE ; if (st&2)
04AE 01FF sbrs R16,1
04B0 01C0 rjmp L64
04B2 .dbline 214
04B2 ; mst |= 0x40;
04B2 4064 ori R20,64
04B4 L64:
04B4 .dbline 215
04B4 ; PORTB = mst;
04B4 48BB out 0x18,R20
04B6 .dbline -2
04B6 L61:
04B6 0E940000 xcall pop_gset1
04BA .dbline 0 ; func end
04BA 0895 ret
04BC .dbsym r mst 20 I
04BC .dbsym r st 16 I
04BC .dbend
04BC .dbfunc e ReadPara _ReadPara fI
04BC ; xp -> R20,R21
04BC ; s -> R22,R23
.even
04BC _ReadPara::
04BC 0E940000 xcall push_gset2
04C0 B801 movw R22,R16
04C2 .dbline -1
04C2 .dbline 223
04C2 ; }
04C2 ;
04C2 ; /////
04C2 ; // InTime:3 WaitTime:2 Cishu:2 BetOnOff:1
04C2 ; //
04C2 ; //
04C2 ; int ReadPara(int s)
04C2 ; {
04C2 .dbline 225
04C2 ; int xp;
04C2 ; xp = ~PINA;
04C2 49B3 in R20,0x19
04C4 5527 clr R21
04C6 4095 com R20
04C8 5095 com R21
04CA .dbline 226
04CA 6030 cpi R22,0
04CC 6707 cpc R22,R23
04CE 69F0 breq L69
04D0 X22:
04D0 6130 cpi R22,1
04D2 E0E0 ldi R30,0
04D4 7E07 cpc R23,R30
04D6 A1F0 breq L70
04D8 6230 cpi R22,2
04DA E0E0 ldi R30,0
04DC 7E07 cpc R23,R30
04DE F9F0 breq L71
04E0 6330 cpi R22,3
04E2 E0E0 ldi R30,0
04E4 7E07 cpc R23,R30
04E6 31F1 breq L72
04E8 2CC0 xjmp L67
04EA X23:
04EA .dbline 226
04EA ; switch (s) {
04EA L69:
04EA .dbline 228
04EA ; case 0: //ADdOn time, x+1
04EA ; xp = ( (xp&0xe0)>>5)+1; break;
04EA 25E0 ldi R18,5
04EC 30E0 ldi R19,0
04EE 8A01 movw R16,R20
04F0 007E andi R16,224
04F2 1070 andi R17,0
04F4 0E940000 xcall asr16
04F8 A801 movw R20,R16
04FA 4F5F subi R20,255 ; offset = 1
04FC 5F4F sbci R21,255
04FE .dbline 228
04FE 21C0 xjmp L68
0500 L70:
0500 .dbline 230
0500 ; case 1: //Wait time 8<<x
0500 ; xp = 8<<((xp&0x18)>>3); break;
0500 9A01 movw R18,R20
0502 2871 andi R18,24
0504 3070 andi R19,0
0506 3595 asr R19
0508 2795 ror R18
050A 3595 asr R19
050C 2795 ror R18
050E 3595 asr R19
0510 2795 ror R18
0512 08E0 ldi R16,8
0514 10E0 ldi R17,0
0516 0E940000 xcall lsl16
051A A801 movw R20,R16
051C .dbline 230
051C 12C0 xjmp L68
051E L71:
051E .dbline 232
051E ; case 2: // CiShu 8<<x
051E ; xp = 8 << ((xp&0x06)>>1); break;
051E 9A01 movw R18,R20
0520 2670 andi R18,6
0522 3070 andi R19,0
0524 3595 asr R19
0526 2795 ror R18
0528 08E0 ldi R16,8
052A 10E0 ldi R17,0
052C 0E940000 xcall lsl16
0530 A801 movw R20,R16
0532 .dbline 232
0532 07C0 xjmp L68
0534 L72:
0534 .dbline 234
0534 ; case 3: // Beteen add and on, x!=0 ? 40 : 4
0534 ; if (xp&1)
0534 40FF sbrs R20,0
0536 03C0 rjmp L73
0538 .dbline 235
0538 ; xp=40;
0538 48E2 ldi R20,40
053A 50E0 ldi R21,0
053C 02C0 xjmp L68
053E L73:
053E .dbline 237
053E ; else
053E ; xp=4;
053E 44E0 ldi R20,4
0540 50E0 ldi R21,0
0542 .dbline 238
0542 ; break;
0542 L67:
0542 L68:
0542 .dbline 240
0542 ; }
0542 ; return(xp);
0542 8A01 movw R16,R20
0544 .dbline -2
0544 L66:
0544 0E940000 xcall pop_gset2
0548 .dbline 0 ; func end
0548 0895 ret
054A .dbsym r xp 20 I
054A .dbsym r s 22 I
054A .dbend
.area bss(ram, con, rel)
0000 .dbfile C:\icc\wash\wash.c
0000 _beep_delay0::
0000 .blkb 2
0002 .dbsym e beep_delay0 _beep_delay0 I
0002 _beep_delay::
0002 .blkb 2
0004 .dbsym e beep_delay _beep_delay I
0004 _beep_num::
0004 .blkb 2
0006 .dbsym e beep_num _beep_num I
0006 _KP::
0006 .blkb 2
0008 .dbsym e KP _KP I
0008 _k_tim::
0008 .blkb 2
000A .dbsym e k_tim _k_tim I
000A _k0::
000A .blkb 2
000C .dbsym e k0 _k0 I
000C _TimeCount0::
000C .blkb 2
000E .dbsym e TimeCount0 _TimeCount0 I
000E _TimeCount::
000E .blkb 2
0010 .dbsym e TimeCount _TimeCount I
0010 _loop_cs0::
0010 .blkb 2
0012 .dbsym e loop_cs0 _loop_cs0 I
0012 _loop_cs::
0012 .blkb 2
0014 .dbsym e loop_cs _loop_cs I
0014 _switchway::
0014 .blkb 1
0015 .dbfile C:\icc\wash/wash.h
0015 .dbsym e switchway _switchway c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -