📄 wash.lis
字号:
01A6 0AE0 ldi R16,10
01A8 10E0 ldi R17,0
01AA 68D1 xcall _Beep
01AC .dbline 105
01AC ; Light(0);
01AC 0027 clr R16
01AE 1127 clr R17
01B0 77D1 xcall _Light
01B2 .dbline 106
01B2 ; }
01B2 .dbline 107
01B2 ; break;
01B2 L12:
01B2 L13:
01B2 .dbline 109
01B2 ; }
01B2 ; }
01B2 L10:
01B2 .dbline 110
01B2 ; }
01B2 L8:
01B2 .dbline 111
01B2 ; x=KP;
01B2 60910600 lds R22,_KP
01B6 70910700 lds R23,_KP+1
01BA .dbline 112
01BA ; if (x != 0){
01BA 6030 cpi R22,0
01BC 6707 cpc R22,R23
01BE 09F4 brne X13
01C0 A0C0 xjmp L21
01C2 X13:
01C2 X5:
01C2 .dbline 112
01C2 .dbline 113
01C2 ; KP=0;
01C2 2224 clr R2
01C4 3324 clr R3
01C6 30920700 sts _KP+1,R3
01CA 20920600 sts _KP,R2
01CE .dbline 114
01CE ; if (x & 0x8c)
01CE CB01 movw R24,R22
01D0 8C78 andi R24,140
01D2 9070 andi R25,0
01D4 8030 cpi R24,0
01D6 8907 cpc R24,R25
01D8 31F0 breq L23
01DA X6:
01DA .dbline 115
01DA ; Beep(2,1);
01DA 21E0 ldi R18,1
01DC 30E0 ldi R19,0
01DE 02E0 ldi R16,2
01E0 10E0 ldi R17,0
01E2 4CD1 xcall _Beep
01E4 05C0 xjmp L24
01E6 L23:
01E6 .dbline 117
01E6 ; else
01E6 ; Beep(1,1);
01E6 21E0 ldi R18,1
01E8 30E0 ldi R19,0
01EA 01E0 ldi R16,1
01EC 10E0 ldi R17,0
01EE 46D1 xcall _Beep
01F0 L24:
01F0 .dbline 118
01F0 ; if (x&8)
01F0 63FF sbrs R22,3
01F2 04C0 rjmp L25
01F4 .dbline 119
01F4 80911400 lds R24,_switchway
01F8 8078 andi R24,128
01FA 82BB out 0x12,R24
01FC L25:
01FC .dbline 119
01FC ; DecOn;
01FC .dbline 120
01FC ; if (x&4)
01FC 62FF sbrs R22,2
01FE 04C0 rjmp L27
0200 .dbline 121
0200 80911400 lds R24,_switchway
0204 8170 andi R24,1
0206 82BB out 0x12,R24
0208 L27:
0208 .dbline 121
0208 ; AddOn;
0208 .dbline 122
0208 ; if (x&2) {
0208 61FF sbrs R22,1
020A 0BC0 rjmp L29
020C .dbline 122
020C .dbline 123
020C ; loop_cs=0;
020C 2224 clr R2
020E 3324 clr R3
0210 30921300 sts _loop_cs+1,R3
0214 20921200 sts _loop_cs,R2
0218 .dbline 124
0218 ; AddOff; DecOff;
0218 22BA out 0x12,R2
021A .dbline 124
021A .dbline 124
021A 22BA out 0x12,R2
021C .dbline 124
021C .dbline 125
021C ; Light(1);
021C 01E0 ldi R16,1
021E 10E0 ldi R17,0
0220 3FD1 xcall _Light
0222 .dbline 126
0222 ; } //stop
0222 L29:
0222 .dbline 127
0222 ; if (x&1) {
0222 60FF sbrs R22,0
0224 69C0 rjmp L31
0226 .dbline 127
0226 .dbline 128
0226 ; if (loop_cs0==0) {
0226 20901000 lds R2,_loop_cs0
022A 30901100 lds R3,_loop_cs0+1
022E 2220 tst R2
0230 09F0 breq X14
0232 43C0 xjmp L33
0234 X14:
0234 3320 tst R3
0236 09F0 breq X15
0238 40C0 xjmp L33
023A X15:
023A X7:
023A .dbline 128
023A .dbline 129
023A ; if (loop_cs==0) { //start
023A 20901200 lds R2,_loop_cs
023E 30901300 lds R3,_loop_cs+1
0242 2220 tst R2
0244 C1F4 brne L35
0246 3320 tst R3
0248 B1F4 brne L35
024A X8:
024A .dbline 129
024A .dbline 130
024A ; loop_cs = ReadPara(2)<<2;
024A 02E0 ldi R16,2
024C 10E0 ldi R17,0
024E 36D1 xcall _ReadPara
0250 1801 movw R2,R16
0252 220C lsl R2
0254 331C rol R3
0256 220C lsl R2
0258 331C rol R3
025A 30921300 sts _loop_cs+1,R3
025E 20921200 sts _loop_cs,R2
0262 .dbline 131
0262 ; loop_cs0=0;
0262 2224 clr R2
0264 3324 clr R3
0266 30921100 sts _loop_cs0+1,R3
026A 20921000 sts _loop_cs0,R2
026E .dbline 132
026E ; Light(2);
026E 02E0 ldi R16,2
0270 10E0 ldi R17,0
0272 16D1 xcall _Light
0274 .dbline 133
0274 3BC0 xjmp L34
0276 L35:
0276 .dbline 133
0276 ; } else {
0276 .dbline 134
0276 ; loop_cs0=loop_cs; loop_cs=0; //Pause
0276 20901200 lds R2,_loop_cs
027A 30901300 lds R3,_loop_cs+1
027E 30921100 sts _loop_cs0+1,R3
0282 20921000 sts _loop_cs0,R2
0286 .dbline 134
0286 2224 clr R2
0288 3324 clr R3
028A 30921300 sts _loop_cs+1,R3
028E 20921200 sts _loop_cs,R2
0292 .dbline 135
0292 ; TimeCount0=TimeCount; TimeCount=0;
0292 20900E00 lds R2,_TimeCount
0296 30900F00 lds R3,_TimeCount+1
029A 30920D00 sts _TimeCount0+1,R3
029E 20920C00 sts _TimeCount0,R2
02A2 .dbline 135
02A2 2224 clr R2
02A4 3324 clr R3
02A6 30920F00 sts _TimeCount+1,R3
02AA 20920E00 sts _TimeCount,R2
02AE .dbline 136
02AE ; AddOff; DecOff;
02AE 22BA out 0x12,R2
02B0 .dbline 136
02B0 .dbline 136
02B0 22BA out 0x12,R2
02B2 .dbline 136
02B2 .dbline 137
02B2 ; Light(3);
02B2 03E0 ldi R16,3
02B4 10E0 ldi R17,0
02B6 F4D0 xcall _Light
02B8 .dbline 138
02B8 ; }
02B8 .dbline 139
02B8 19C0 xjmp L34
02BA L33:
02BA .dbline 139
02BA ; } else {
02BA .dbline 140
02BA ; loop_cs=loop_cs0; loop_cs0=0; //resume
02BA 20901000 lds R2,_loop_cs0
02BE 30901100 lds R3,_loop_cs0+1
02C2 30921300 sts _loop_cs+1,R3
02C6 20921200 sts _loop_cs,R2
02CA .dbline 140
02CA 2224 clr R2
02CC 3324 clr R3
02CE 30921100 sts _loop_cs0+1,R3
02D2 20921000 sts _loop_cs0,R2
02D6 .dbline 141
02D6 ; TimeCount=TimeCount0;
02D6 20900C00 lds R2,_TimeCount0
02DA 30900D00 lds R3,_TimeCount0+1
02DE 30920F00 sts _TimeCount+1,R3
02E2 20920E00 sts _TimeCount,R2
02E6 .dbline 142
02E6 ; Light(2);
02E6 02E0 ldi R16,2
02E8 10E0 ldi R17,0
02EA DAD0 xcall _Light
02EC .dbline 143
02EC ; }
02EC L34:
02EC .dbline 144
02EC ; KP=0;
02EC 2224 clr R2
02EE 3324 clr R3
02F0 30920700 sts _KP+1,R3
02F4 20920600 sts _KP,R2
02F8 .dbline 145
02F8 ; }
02F8 L31:
02F8 .dbline 146
02F8 ; if (x&0x80) {
02F8 67FF sbrs R22,7
02FA 03C0 rjmp L37
02FC .dbline 146
02FC .dbline 147
02FC ; AddOff; DecOff;
02FC 2224 clr R2
02FE 22BA out 0x12,R2
0300 .dbline 147
0300 .dbline 147
0300 22BA out 0x12,R2
0302 .dbline 147
0302 .dbline 148
0302 ; }
0302 L37:
0302 .dbline 149
0302 ; }
0302 L21:
0302 .dbline 150
0302 L6:
0302 .dbline 82
0302 E6CE xjmp L5
0304 X9:
0304 .dbline -2
0304 L4:
0304 .dbline 0 ; func end
0304 0895 ret
0306 .dbsym r x 22 I
0306 .dbend
0306 .dbfunc e timer0_100ms_isr _timer0_100ms_isr fV
0306 ; k_val -> R16,R17
.even
0306 _timer0_100ms_isr::
0306 2A92 st -y,R2
0308 3A92 st -y,R3
030A 0A93 st -y,R16
030C 1A93 st -y,R17
030E 8A93 st -y,R24
0310 9A93 st -y,R25
0312 EA93 st -y,R30
0314 2FB6 in R2,0x3f
0316 2A92 st -y,R2
0318 .dbline -1
0318 .dbline 156
0318 ; }
0318 ; }
0318 ;
0318 ;
0318 ; //Key service, define in include: KBRD (PING & 3);
0318 ; void timer0_100ms_isr(void) //int key(void)
0318 ; {
0318 .dbline 159
0318 ; int k_val;
0318 ;
0318 ; if (TimeCount!=0) TimeCount--;
0318 20900E00 lds R2,_TimeCount
031C 30900F00 lds R3,_TimeCount+1
0320 2220 tst R2
0322 11F4 brne X16
0324 3320 tst R3
0326 49F0 breq L40
0328 X16:
0328 .dbline 159
0328 80910E00 lds R24,_TimeCount
032C 90910F00 lds R25,_TimeCount+1
0330 0197 sbiw R24,1
0332 90930F00 sts _TimeCount+1,R25
0336 80930E00 sts _TimeCount,R24
033A L40:
033A .dbline 160
033A ; k_val = KBRD;
033A 00B1 in R16,0x0
033C 1127 clr R17
033E 0095 com R16
0340 1095 com R17
0342 0370 andi R16,3
0344 1070 andi R17,0
0346 .dbline 160
0346 .dbline 162
0346 ;
0346 ; if (k_val != 0) {
0346 0030 cpi R16,0
0348 0107 cpc R16,R17
034A 09F4 brne X20
034C 41C0 xjmp L42
034E X20:
034E X17:
034E .dbline 162
034E .dbline 164
034E ; //0 1 ... KAX0 ... KMAX1
034E ; if (k_tim < KMAX1) {
034E 80910800 lds R24,_k_tim
0352 90910900 lds R25,_k_tim+1
0356 8A35 cpi R24,90
0358 E0E0 ldi R30,0
035A 9E07 cpc R25,R30
035C 0CF0 brlt X21
035E 52C0 xjmp L43
0360 X21:
0360 .dbline 164
0360 .dbline 165
0360 ; k_tim++;
0360 0196 adiw R24,1
0362 90930900 sts _k_tim+1,R25
0366 80930800 sts _k_tim,R24
036A .dbline 166
036A ; if (k_tim == KMAX1) {
036A 8A35 cpi R24,90
036C E0E0 ldi R30,0
036E 9E07 cpc R25,R30
0370 59F4 brne L46
0372 .dbline 166
0372 .dbline 167
0372 ; KP=0x80;
0372 80E8 ldi R24,128
0374 90E0 ldi R25,0
0376 90930700 sts _KP+1,R25
037A 80930600 sts _KP,R24
037E .dbline 168
037E ; k_tim=KMAX1+1;
037E 8BE5 ldi R24,91
0380 90930900 sts _k_tim+1,R25
0384 80930800 sts _k_tim,R24
0388 .dbline 169
0388 ; }
0388 L46:
0388 .dbline 170
0388 ; if (k_tim == KMAX0) {
0388 80910800 lds R24,_k_tim
038C 90910900 lds R25,_k_tim+1
0390 8431 cpi R24,20
0392 E0E0 ldi R30,0
0394 9E07 cpc R25,R30
0396 79F4 brne L48
0398 .dbline 170
0398 .dbline 171
0398 ; KP=k_val<<2; k0=0;
0398 1801 movw R2,R16
039A 220C lsl R2
039C 331C rol R3
039E 220C lsl R2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -