📄 drive.lis
字号:
0242 E0E0 ldi R30,0
0244 9E07 cpc R25,R30
0246 A1F0 breq L21
0248 8230 cpi R24,2
024A E0E0 ldi R30,0
024C 9E07 cpc R25,R30
024E 99F0 breq L22
0250 8330 cpi R24,3
0252 E0E0 ldi R30,0
0254 9E07 cpc R25,R30
0256 91F0 breq L23
0258 8430 cpi R24,4
025A E0E0 ldi R30,0
025C 9E07 cpc R25,R30
025E 89F0 breq L24
0260 8530 cpi R24,5
0262 E0E0 ldi R30,0
0264 9E07 cpc R25,R30
0266 81F0 breq L25
0268 12C0 xjmp L17
026A X1:
026A .dbline 199
026A ; {
026A L20:
026A .dbline 200
026A ; case 0: PORTC=0x10; break;
026A 80E1 ldi R24,16
026C 88B9 out 0x8,R24
026E .dbline 200
026E 11C0 xjmp L18
0270 L21:
0270 .dbline 201
0270 ; case 1: PORTC=0x90; break;
0270 80E9 ldi R24,144
0272 88B9 out 0x8,R24
0274 .dbline 201
0274 0EC0 xjmp L18
0276 L22:
0276 .dbline 202
0276 ; case 2: PORTC=0x50; break;
0276 80E5 ldi R24,80
0278 88B9 out 0x8,R24
027A .dbline 202
027A 0BC0 xjmp L18
027C L23:
027C .dbline 203
027C ; case 3: PORTC=0xd0; break;
027C 80ED ldi R24,208
027E 88B9 out 0x8,R24
0280 .dbline 203
0280 08C0 xjmp L18
0282 L24:
0282 .dbline 204
0282 ; case 4: PORTC=0x30; break;
0282 80E3 ldi R24,48
0284 88B9 out 0x8,R24
0286 .dbline 204
0286 05C0 xjmp L18
0288 L25:
0288 .dbline 205
0288 ; case 5: PORTC=0xb0; break;
0288 80EB ldi R24,176
028A 88B9 out 0x8,R24
028C .dbline 205
028C 02C0 xjmp L18
028E L17:
028E .dbline 206
028E ; default:RESET;
028E 0C940000 jmp 0x000
0292 .dbline 207
0292 ; }
0292 L18:
0292 .dbline 208
0292 ; asm("nop");
0292 0000 nop
0294 .dbline 209
0294 ; asm("nop");
0294 0000 nop
0296 .dbline 210
0296 ; temp = i%8;
0296 18E0 ldi R17,8
0298 042F mov R16,R20
029A 0E940000 xcall mod8u
029E 602F mov R22,R16
02A0 .dbline 211
02A0 ; if(temp<6)
02A0 0630 cpi R16,6
02A2 50F4 brsh L26
02A4 .dbline 212
02A4 ; {
02A4 .dbline 213
02A4 ; tempdata = 1<<(temp+2);
02A4 162F mov R17,R22
02A6 1E5F subi R17,254 ; addi 2
02A8 01E0 ldi R16,1
02AA 0E940000 xcall lsl8
02AE 402F mov R20,R16
02B0 .dbline 214
02B0 ; PORTE |= tempdata;
02B0 2EB0 in R2,0xe
02B2 202A or R2,R16
02B4 2EB8 out 0xe,R2
02B6 .dbline 215
02B6 ; }
02B6 09C0 xjmp L27
02B8 L26:
02B8 .dbline 217
02B8 ; else
02B8 ; {
02B8 .dbline 218
02B8 ; tempdata = 1<< (temp-3);
02B8 162F mov R17,R22
02BA 1350 subi R17,3
02BC 01E0 ldi R16,1
02BE 0E940000 xcall lsl8
02C2 402F mov R20,R16
02C4 .dbline 219
02C4 ; PORTG |= tempdata;
02C4 24B2 in R2,0x14
02C6 202A or R2,R16
02C8 24BA out 0x14,R2
02CA .dbline 220
02CA ; }
02CA L27:
02CA .dbline 222
02CA ;
02CA ; PORTC&=0xef;
02CA 88B1 in R24,0x8
02CC 8F7E andi R24,239
02CE 88B9 out 0x8,R24
02D0 .dbline -2
02D0 L16:
02D0 0E940000 xcall pop_gset3
02D4 .dbline 0 ; func end
02D4 0895 ret
02D6 .dbsym r tempdata 20 c
02D6 .dbsym r temp 22 c
02D6 .dbsym r i 20 c
02D6 .dbend
02D6 .dbfunc e led_on _led_on fV
02D6 ; temp2 -> R20,R21
02D6 ; temp1 -> R22,R23
02D6 ; pas_flag -> R10,R11
02D6 ; tt -> y+10
02D6 ; dd -> R12
02D6 ; d -> R18
02D6 ; i -> R16
.even
02D6 _led_on::
02D6 0E940000 xcall push_gset4
02DA C884 ldd R12,y+8
02DC .dbline -1
02DC .dbline 228
02DC ;
02DC ; }
02DC ;
02DC ;
02DC ; void led_on(unsigned char i,unsigned char d,unsigned char dd,unsigned char tt) //LED亮函数
02DC ; {
02DC .dbline 230
02DC ; unsigned temp1,temp2,pas_flag;
02DC ; temp1= 0xfc;
02DC 6CEF ldi R22,252
02DE 70E0 ldi R23,0
02E0 .dbline 231
02E0 ; temp2= 0x18;
02E0 48E1 ldi R20,24
02E2 50E0 ldi R21,0
02E4 .dbline 232
02E4 ; PORTD&=0x7f;
02E4 8BB1 in R24,0xb
02E6 8F77 andi R24,127
02E8 8BB9 out 0xb,R24
02EA .dbline 233
02EA ; WDR();
02EA A895 wdr
02EC .dbline 234
02EC ; if(!tt)
02EC 0A84 ldd R0,y+10
02EE 0020 tst R0
02F0 09F0 breq X4
02F2 3CC0 xjmp L29
02F4 X4:
02F4 .dbline 235
02F4 ; {
02F4 .dbline 236
02F4 ; WDR();
02F4 A895 wdr
02F6 .dbline 237
02F6 ; pas_flag=1;
02F6 81E0 ldi R24,1
02F8 90E0 ldi R25,0
02FA 5C01 movw R10,R24
02FC .dbline 238
02FC ; if(d&0x01)
02FC 20FF sbrs R18,0
02FE 02C0 rjmp L31
0300 .dbline 239
0300 ; temp1 &= 0xf8;
0300 687F andi R22,248
0302 7070 andi R23,0
0304 L31:
0304 .dbline 240
0304 ; pas_flag=pas_flag<<1;
0304 AA0C lsl R10
0306 BB1C rol R11
0308 .dbline 241
0308 ; if(d&0x02)
0308 21FF sbrs R18,1
030A 02C0 rjmp L33
030C .dbline 242
030C ; temp1 &= 0xf4;
030C 647F andi R22,244
030E 7070 andi R23,0
0310 L33:
0310 .dbline 243
0310 ; pas_flag=pas_flag<<1;
0310 AA0C lsl R10
0312 BB1C rol R11
0314 .dbline 244
0314 ; if(d&0x04)
0314 22FF sbrs R18,2
0316 02C0 rjmp L35
0318 .dbline 245
0318 ; temp1 &= 0xec;
0318 6C7E andi R22,236
031A 7070 andi R23,0
031C L35:
031C .dbline 246
031C ; pas_flag=pas_flag<<1;
031C AA0C lsl R10
031E BB1C rol R11
0320 .dbline 247
0320 ; if(d&0x08)
0320 23FF sbrs R18,3
0322 02C0 rjmp L37
0324 .dbline 248
0324 ; temp1 &= 0xdc;
0324 6C7D andi R22,220
0326 7070 andi R23,0
0328 L37:
0328 .dbline 249
0328 ; pas_flag=pas_flag<<1;
0328 AA0C lsl R10
032A BB1C rol R11
032C .dbline 250
032C ; if(d&0x10)
032C 24FF sbrs R18,4
032E 02C0 rjmp L39
0330 .dbline 251
0330 ; temp1 &= 0xbc;
0330 6C7B andi R22,188
0332 7070 andi R23,0
0334 L39:
0334 .dbline 252
0334 ; if(d&0x20)
0334 25FF sbrs R18,5
0336 02C0 rjmp L41
0338 .dbline 253
0338 ; temp1 &= 0x7c;
0338 6C77 andi R22,124
033A 7070 andi R23,0
033C L41:
033C .dbline 254
033C ; pas_flag=pas_flag<<1;
033C AA0C lsl R10
033E BB1C rol R11
0340 .dbline 255
0340 ; WDR();
0340 A895 wdr
0342 .dbline 256
0342 ; if(d&0x40)
0342 26FF sbrs R18,6
0344 02C0 rjmp L43
0346 .dbline 257
0346 ; temp2 &= 0x10;
0346 4071 andi R20,16
0348 5070 andi R21,0
034A L43:
034A .dbline 258
034A ; pas_flag=pas_flag<<1;
034A AA0C lsl R10
034C BB1C rol R11
034E .dbline 259
034E ; if(d&0x80)
034E 27FF sbrs R18,7
0350 02C0 rjmp L45
0352 .dbline 260
0352 ; temp2 &= 0x08;
0352 4870 andi R20,8
0354 5070 andi R21,0
0356 L45:
0356 .dbline 261
0356 ; asm("nop");
0356 0000 nop
0358 .dbline 262
0358 ; asm("nop");
0358 0000 nop
035A .dbline 263
035A ; if(pas_flag!=0x40)
035A C501 movw R24,R10
035C 8034 cpi R24,64
035E E0E0 ldi R30,0
0360 9E07 cpc R25,R30
0362 11F0 breq L47
0364 .dbline 264
0364 ; RESET;
0364 0C940000 jmp 0x000
0368 L47:
0368 .dbline 265
0368 ; WDR();
0368 A895 wdr
036A .dbline 266
036A ; }
036A 3EC0 xjmp L30
036C L29:
036C .dbline 268
036C ; else
036C ; {
036C .dbline 269
036C ; WDR();
036C A895 wdr
036E .dbline 270
036E ; PORTD&=0x7f;
036E 8BB1 in R24,0xb
0370 8F77 andi R24,127
0372 8BB9 out 0xb,R24
0374 .dbline 271
0374 ; pas_flag=1;
0374 81E0 ldi R24,1
0376 90E0 ldi R25,0
0378 5C01 movw R10,R24
037A .dbline 272
037A ; if(dd&0x01)
037A C0FE sbrs R12,0
037C 02C0 rjmp L49
037E .dbline 273
037E ; temp1 &= 0xf8;
037E 687F andi R22,248
0380 7070 andi R23,0
0382 L49:
0382 .dbline 274
0382 ; pas_flag=pas_flag<<1;
0382 AA0C lsl R10
0384 BB1C rol R11
0386 .dbline 275
0386 ; if(dd&0x02)
0386 C1FE sbrs R12,1
0388 02C0 rjmp L51
038A .dbline 276
038A ; temp1 &= 0xf4;
038A 647F andi R22,244
038C 7070 andi R23,0
038E L51:
038E .dbline 277
038E ; pas_flag=pas_flag<<1;
038E AA0C lsl R10
0390 BB1C rol R11
0392 .dbline 278
0392 ; if(dd&0x04)
0392 C2FE sbrs R12,2
0394 02C0 rjmp L53
0396 .dbline 279
0396 ; temp1 &= 0xec;
0396 6C7E andi R22,236
0398 7070 andi R23,0
039A L53:
039A .dbline 280
039A ; if(dd&0x08)
039A C3FE sbrs R12,3
039C 02C0 rjmp L55
039E .dbline 281
039E ; temp1 &= 0xdc;
039E 6C7D andi R22,220
03A0 7070 andi R23,0
03A2 L55:
03A2 .dbline 282
03A2 ; pas_flag=pas_flag<<1;
03A2 AA0C lsl R10
03A4 BB1C rol R11
03A6 .dbline 283
03A6 ; if(dd&0x10)
03A6 C4FE sbrs R12,4
03A8 02C0 rjmp L57
03AA .dbline 284
03AA ; temp1 &= 0xbc;
03AA 6C7B andi R22,188
03AC 7070 andi R23,0
03AE L57:
03AE .dbline 285
03AE ; pas_flag=pas_flag<<1;
03AE AA0C lsl R10
03B0 BB1C rol R11
03B2 .dbline 286
03B2 ; if(dd&0x20)
03B2 C5FE sbrs R12,5
03B4 02C0 rjmp L59
03B6 .dbline 287
03B6 ; temp1 &= 0x7c;
03B6 6C77 andi R22,124
03B8 7070 andi R23,0
03BA L59:
03BA .dbline 288
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -