📄 m16pwm-led.lis
字号:
038A ; ms_delay(delay);
038A 042F mov R16,R20
038C 1127 clr R17
038E 03D0 xcall _ms_delay
0390 .dbline -2
0390 L43:
0390 0E940000 xcall pop_gset3
0394 .dbline 0 ; func end
0394 0895 ret
0396 .dbsym r tmp1 22 c
0396 .dbsym r tmp0 10 c
0396 .dbsym r delay 20 c
0396 .dbend
0396 .dbfunc e ms_delay _ms_delay fV
0396 ; d1 -> R20,R21
0396 ; d2 -> R22,R23
0396 ; delay -> R16,R17
.even
0396 _ms_delay::
0396 0E940000 xcall push_gset2
039A .dbline -1
039A .dbline 249
039A ;
039A ;
039A ; }
039A ; void ms_delay(uint delay)
039A ; {
039A .dbline 251
039A ; int d1,d2;
039A ; for(d1=0;d1<delay;d1++)
039A 4427 clr R20
039C 5527 clr R21
039E 0AC0 xjmp L61
03A0 L58:
03A0 .dbline 252
03A0 ; {
03A0 .dbline 253
03A0 6627 clr R22
03A2 7727 clr R23
03A4 L62:
03A4 .dbline 253
03A4 L63:
03A4 .dbline 253
03A4 6F5F subi R22,255 ; offset = 1
03A6 7F4F sbci R23,255
03A8 .dbline 253
03A8 683E cpi R22,232
03AA E3E0 ldi R30,3
03AC 7E07 cpc R23,R30
03AE D4F3 brlt L62
03B0 .dbline 254
03B0 L59:
03B0 .dbline 251
03B0 4F5F subi R20,255 ; offset = 1
03B2 5F4F sbci R21,255
03B4 L61:
03B4 .dbline 251
03B4 4017 cp R20,R16
03B6 5107 cpc R21,R17
03B8 98F3 brlo L58
03BA .dbline -2
03BA L57:
03BA 0E940000 xcall pop_gset2
03BE .dbline 0 ; func end
03BE 0895 ret
03C0 .dbsym r d1 20 I
03C0 .dbsym r d2 22 I
03C0 .dbsym r delay 16 i
03C0 .dbend
03C0 .dbfunc e init_devices _init_devices fV
.even
03C0 _init_devices::
03C0 .dbline -1
03C0 .dbline 258
03C0 ; for(d2=0;d2<1000;d2++);
03C0 ; }
03C0 ; }
03C0 ; //call this routine to initialise all peripherals
03C0 ; void init_devices(void)
03C0 ; {
03C0 .dbline 260
03C0 ; //stop errant interrupts until set up
03C0 ; CLI(); //disable all interrupts
03C0 F894 cli
03C2 .dbline 261
03C2 ; port_init();
03C2 1EDE xcall _port_init
03C4 .dbline 262
03C4 ; uart0_init();
03C4 44DE xcall _uart0_init
03C6 .dbline 263
03C6 ; timer1_init();
03C6 2DDE xcall _timer1_init
03C8 .dbline 264
03C8 ; adc_init();
03C8 F6DE xcall _adc_init
03CA .dbline 265
03CA ; MCUCR = 0x02;
03CA 82E0 ldi R24,2
03CC 85BF out 0x35,R24
03CE .dbline 266
03CE ; GICR = 0x40;
03CE 80E4 ldi R24,64
03D0 8BBF out 0x3b,R24
03D2 .dbline 267
03D2 ; TIMSK = 0x04; //timer interrupt sources
03D2 84E0 ldi R24,4
03D4 89BF out 0x39,R24
03D6 .dbline 269
03D6 ;
03D6 ; SEI(); //re-enable interrupts
03D6 7894 sei
03D8 .dbline -2
03D8 L66:
03D8 .dbline 0 ; func end
03D8 0895 ret
03DA .dbend
03DA .dbfunc e main _main fV
03DA ; i -> <dead>
03DA ; leddptt -> R12
03DA ; ttmp -> R12
03DA ; key -> R22,R23
03DA ; led -> R10,R11
03DA ; adc -> R20,R21
.even
03DA _main::
03DA .dbline -1
03DA .dbline 275
03DA ; //all peripherals are now initialised
03DA ; }
03DA ;
03DA ; ////////////////////////////////////////////////////////////////////////////////
03DA ; void main()
03DA ; {
03DA .dbline 276
03DA ; int i,adc=0,led=0,key=0;
03DA 4427 clr R20
03DC 5527 clr R21
03DE .dbline 276
03DE AA24 clr R10
03E0 BB24 clr R11
03E2 .dbline 276
03E2 6627 clr R22
03E4 7727 clr R23
03E6 .dbline 277
03E6 ; uchar ttmp,leddptt=0;
03E6 CC24 clr R12
03E8 .dbline 278
03E8 ; init_devices();
03E8 EBDF xcall _init_devices
03EA .dbline 279
03EA ; temp_data=0x13;
03EA 83E1 ldi R24,19
03EC 80930E00 sts _temp_data,R24
03F0 4FC0 xjmp L69
03F2 L68:
03F2 .dbline 281
03F2 ; while(1)
03F2 ; {
03F2 .dbline 287
03F2 ;
03F2 ; //display second flag
03F2 ;
03F2 ;
03F2 ;
03F2 ; if(++led>240)
03F2 C501 movw R24,R10
03F4 0196 adiw R24,1
03F6 5C01 movw R10,R24
03F8 80EF ldi R24,240
03FA 90E0 ldi R25,0
03FC 8A15 cp R24,R10
03FE 9B05 cpc R25,R11
0400 94F4 brge L71
0402 .dbline 288
0402 ; {
0402 .dbline 289
0402 ; PORTD ^= (LRledReg<<3);//LR-LED
0402 20901800 lds R2,_LRledReg
0406 220C lsl R2
0408 220C lsl R2
040A 220C lsl R2
040C 32B2 in R3,0x12
040E 3224 eor R3,R2
0410 32BA out 0x12,R3
0412 .dbline 290
0412 ; led=0;
0412 AA24 clr R10
0414 BB24 clr R11
0416 .dbline 291
0416 ; M8Mode ^= (LRledReg&0x03);
0416 80911800 lds R24,_LRledReg
041A 8370 andi R24,3
041C 20900300 lds R2,_M8Mode
0420 2826 eor R2,R24
0422 20920300 sts _M8Mode,R2
0426 .dbline 292
0426 ; }
0426 L71:
0426 .dbline 293
0426 ; if(++adc>100)
0426 4F5F subi R20,255 ; offset = 1
0428 5F4F sbci R21,255
042A 84E6 ldi R24,100
042C 90E0 ldi R25,0
042E 8417 cp R24,R20
0430 9507 cpc R25,R21
0432 24F4 brge L73
0434 .dbline 294
0434 ; {
0434 .dbline 295
0434 ; tx_pack();
0434 7DDE xcall _tx_pack
0436 .dbline 296
0436 ; ADCSRA |=(1<<ADSC); //启动AD转换
0436 369A sbi 0x6,6
0438 .dbline 297
0438 ; adc=0;
0438 4427 clr R20
043A 5527 clr R21
043C .dbline 298
043C ; }
043C L73:
043C .dbline 299
043C ; if(++key>200)
043C CB01 movw R24,R22
043E 0196 adiw R24,1
0440 BC01 movw R22,R24
0442 88EC ldi R24,200
0444 90E0 ldi R25,0
0446 8617 cp R24,R22
0448 9707 cpc R25,R23
044A 04F5 brge L75
044C .dbline 300
044C ; {
044C .dbline 301
044C ; key=0;
044C 6627 clr R22
044E 7727 clr R23
0450 .dbline 302
0450 ; ttmp = PINC&0x03;
0450 83B3 in R24,0x13
0452 8370 andi R24,3
0454 C82E mov R12,R24
0456 .dbline 303
0456 ; if(ttmp==0x03)
0456 8330 cpi R24,3
0458 49F4 brne L77
045A .dbline 304
045A ; {
045A .dbline 305
045A ; PORTD |=0x18;//关LR-LED
045A 82B3 in R24,0x12
045C 8861 ori R24,24
045E 82BB out 0x12,R24
0460 .dbline 306
0460 ; M8Mode=0;
0460 2224 clr R2
0462 20920300 sts _M8Mode,R2
0466 .dbline 307
0466 ; LRledReg=0;
0466 20921800 sts _LRledReg,R2
046A .dbline 308
046A ; }
046A 05C0 xjmp L78
046C L77:
046C .dbline 309
046C ; else LRledReg = (~(ttmp))&0x03;
046C 8C2D mov R24,R12
046E 8095 com R24
0470 8370 andi R24,3
0472 80931800 sts _LRledReg,R24
0476 L78:
0476 .dbline 310
0476 ; LedDp=LedDp<<1;
0476 20901600 lds R2,_LedDp
047A 220C lsl R2
047C 20921600 sts _LedDp,R2
0480 .dbline 311
0480 ; if(LedDp>0x08)LedDp=0x01;
0480 88E0 ldi R24,8
0482 8215 cp R24,R2
0484 18F4 brsh L79
0486 .dbline 311
0486 81E0 ldi R24,1
0488 80931600 sts _LedDp,R24
048C L79:
048C .dbline 313
048C ;
048C ; }
048C L75:
048C .dbline 314
048C 01E0 ldi R16,1
048E 01DF xcall _led_display
0490 .dbline 316
0490 L69:
0490 .dbline 280
0490 B0CF xjmp L68
0492 X0:
0492 .dbline -2
0492 L67:
0492 .dbline 0 ; func end
0492 0895 ret
0494 .dbsym l i 1 I
0494 .dbsym r leddptt 12 c
0494 .dbsym r ttmp 12 c
0494 .dbsym r key 22 I
0494 .dbsym r led 10 I
0494 .dbsym r adc 20 I
0494 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\EBIKE\eb_pro\M16PWM_led\m16pwm-led.c
0000 _UartBuf::
0000 .blkb 10
000A .dbsym e UartBuf _UartBuf A[10:10]c
000A _second_flag::
000A .blkb 1
000B .dbsym e second_flag _second_flag c
000B _second_data::
000B .blkb 1
000C .dbsym e second_data _second_data c
000C _minut_data::
000C .blkb 1
000D .dbsym e minut_data _minut_data c
000D _hour_data::
000D .blkb 1
000E .dbsym e hour_data _hour_data c
000E _temp_data::
000E .blkb 1
000F .dbsym e temp_data _temp_data c
000F _k::
000F .blkb 2
0011 .dbsym e k _k I
0011 _kk::
0011 .blkb 1
0012 .dbsym e kk _kk c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -