📄 m8pwm.lis
字号:
043A 60F3 brlo L85
043C .dbline 324
043C ; while(EECR & (1<<EEWE));
043C ; EEAR = (Address+k*EEP_RANG); // 写地址,相隔rang个单元
043C ; EEDR = Data; // 写数据
043C ; EECR |= (1<<EEMWE); // 置位EEMWE同时清零EEWE
043C ; EECR |= (1<<EEWE); // 在4个时钟周期内置位EEWE
043C ; EEAR = 0;
043C ; }
043C ; SREG =tmpeeprom; // 恢复当前设置
043C 4FBF out 0x3f,R20
043E .dbline 325
043E ; SEI(); // 打开中断
043E 7894 sei
0440 .dbline -2
0440 L77:
0440 00D0 rcall pop_gset2
0442 .dbline 0 ; func end
0442 0895 ret
0444 .dbsym r tmpeeprom 20 c
0444 .dbsym r k 22 c
0444 .dbsym r Data 18 c
0444 .dbsym r Address 16 c
0444 .dbend
0444 .dbfunc e Hardware_init _Hardware_init fV
.even
0444 _Hardware_init::
0444 .dbline -1
0444 .dbline 331
0444 .dbline 332
0444 F894 cli
0446 .dbline 333
0446 DCDD rcall _Port_init
0448 .dbline 334
0448 E4DD rcall _uart0_init
044A .dbline 335
044A EEDD rcall _Timer1_init
044C .dbline 336
044C 03DE rcall _Timer2_init
044E .dbline 337
044E 0BDE rcall _adc_init
0450 .dbline 338
0450 8AE0 ldi R24,10
0452 85BF out 0x35,R24
0454 .dbline 339
0454 80EC ldi R24,192
0456 8BBF out 0x3b,R24
0458 .dbline 340
0458 80E1 ldi R24,16
045A 89BF out 0x39,R24
045C .dbline 341
045C 7894 sei
045E .dbline 342
045E 85B3 in R24,0x15
0460 8C7F andi R24,252
0462 85BB out 0x15,R24
0464 .dbline 343
0464 01E0 ldi R16,1
0466 72DF rcall _EepromRead
0468 202E mov R2,R16
046A 02E0 ldi R16,2
046C 2F92 push R2
046E 6EDF rcall _EepromRead
0470 2F90 pop R2
0472 202F mov R18,R16
0474 3327 clr R19
0476 00E0 ldi R16,256
0478 11E0 ldi R17,1
047A 00D0 rcall empy16s
047C 3324 clr R3
047E 200E add R2,R16
0480 311E adc R3,R17
0482 30920600 sts _KiloMeter+1,R3
0486 20920500 sts _KiloMeter,R2
048A .dbline 344
048A 30920800 sts _OldKiloMeter+1,R3
048E 20920700 sts _OldKiloMeter,R2
0492 .dbline 345
0492 C101 movw R24,R2
0494 8F3F cpi R24,255
0496 EFEF ldi R30,255
0498 9E07 cpc R25,R30
049A 31F4 brne L88
049C .dbline 345
049C 2224 clr R2
049E 3324 clr R3
04A0 30920600 sts _KiloMeter+1,R3
04A4 20920500 sts _KiloMeter,R2
04A8 L88:
04A8 .dbline -2
04A8 L87:
04A8 .dbline 0 ; func end
04A8 0895 ret
04AA .dbend
04AA .dbfunc e Delay_ms _Delay_ms fV
04AA ; l -> R20,R21
04AA ; j -> R22,R23
04AA ; m -> R16,R17
.even
04AA _Delay_ms::
04AA 00D0 rcall push_gset2
04AC .dbline -1
04AC .dbline 353
04AC ; }
04AC ; /***************************************************************************
04AC ; 系统初始化
04AC ; ****************************************************************************/
04AC ; void Hardware_init(void)
04AC ; {
04AC ; CLI();
04AC ; Port_init();
04AC ; uart0_init();
04AC ; Timer1_init();
04AC ; Timer2_init();
04AC ; adc_init();
04AC ; MCUCR = (0x01<<ISC01)|(0x01<<ISC11);//INT0、1下降沿触发
04AC ; GICR = (0x01<<INT0)|(0x01<<INT1); //INT0、1使能
04AC ; TIMSK = (0x01<<OCIE1A);
04AC ; SEI();
04AC ; BRAKE_LED_OFF;
04AC ; KiloMeter=EepromRead(1)+EepromRead(2)*0x100;
04AC ; OldKiloMeter=KiloMeter;
04AC ; if(KiloMeter==0xffff)KiloMeter=0;
04AC ; }
04AC ;
04AC ; /***************************************************************************
04AC ; 延时程序
04AC ; ****************************************************************************/
04AC ;
04AC ; void Delay_ms(unsigned int m) //1ms延时
04AC ; {
04AC .dbline 355
04AC ; int l,j;
04AC ; for(l=0;l<m;l++)
04AC 4427 clr R20
04AE 5527 clr R21
04B0 0AC0 rjmp L94
04B2 L91:
04B2 .dbline 356
04B2 ; for(j=0;j<500;j++)
04B2 6627 clr R22
04B4 7727 clr R23
04B6 L95:
04B6 .dbline 357
04B6 .dbline 358
04B6 .dbline 359
04B6 L96:
04B6 .dbline 356
04B6 6F5F subi R22,255 ; offset = 1
04B8 7F4F sbci R23,255
04BA .dbline 356
04BA 643F cpi R22,244
04BC E1E0 ldi R30,1
04BE 7E07 cpc R23,R30
04C0 D4F3 brlt L95
04C2 L92:
04C2 .dbline 355
04C2 4F5F subi R20,255 ; offset = 1
04C4 5F4F sbci R21,255
04C6 L94:
04C6 .dbline 355
04C6 4017 cp R20,R16
04C8 5107 cpc R21,R17
04CA 98F3 brlo L91
04CC .dbline -2
04CC L90:
04CC 00D0 rcall pop_gset2
04CE .dbline 0 ; func end
04CE 0895 ret
04D0 .dbsym r l 20 I
04D0 .dbsym r j 22 I
04D0 .dbsym r m 16 i
04D0 .dbend
04D0 .dbfunc e main _main fV
04D0 ; k -> R20,R21
04D0 ; adc -> R20,R21
04D0 ; edata -> R22
.even
04D0 _main::
04D0 .dbline -1
04D0 .dbline 365
04D0 ; {
04D0 ; ;
04D0 ; }
04D0 ; }
04D0 ; /**************************************************************************
04D0 ; 主函数
04D0 ; **************************************************************************/
04D0 ; void main(void)
04D0 ; {
04D0 .dbline 366
04D0 ; int k=0,adc=0;
04D0 4427 clr R20
04D2 5527 clr R21
04D4 .dbline 366
04D4 .dbline 368
04D4 ; uchar edata;
04D4 ; Hardware_init();
04D4 B7DF rcall _Hardware_init
04D6 2EC0 rjmp L101
04D8 L100:
04D8 .dbline 370
04D8 ; while(1)
04D8 ; {
04D8 .dbline 371
04D8 ; if(KiloMeter!=OldKiloMeter)
04D8 20900700 lds R2,_OldKiloMeter
04DC 30900800 lds R3,_OldKiloMeter+1
04E0 40900500 lds R4,_KiloMeter
04E4 50900600 lds R5,_KiloMeter+1
04E8 4214 cp R4,R2
04EA 5304 cpc R5,R3
04EC A9F0 breq L103
04EE .dbline 372
04EE ; {
04EE .dbline 373
04EE ; edata = KiloMeter&0x00ff;
04EE 642D mov R22,R4
04F0 7070 andi R23,0
04F2 .dbline 374
04F2 ; if(edata) //只改变十位个位
04F2 6623 tst R22
04F4 21F0 breq L105
04F6 .dbline 375
04F6 ; {
04F6 .dbline 376
04F6 ; EepromWrite(1,edata); //30ms
04F6 262F mov R18,R22
04F8 01E0 ldi R16,1
04FA 83DF rcall _EepromWrite
04FC .dbline 377
04FC ; }
04FC 0DC0 rjmp L106
04FE L105:
04FE .dbline 379
04FE ; else
04FE ; { //60ms
04FE .dbline 380
04FE ; EepromWrite(1,edata);
04FE 262F mov R18,R22
0500 01E0 ldi R16,1
0502 7FDF rcall _EepromWrite
0504 .dbline 381
0504 ; edata = (KiloMeter>>8)&0x00ff;
0504 60910500 lds R22,_KiloMeter
0508 70910600 lds R23,_KiloMeter+1
050C 672F mov R22,R23
050E 7727 clr R23
0510 7070 andi R23,0
0512 .dbline 382
0512 ; EepromWrite(2,edata);
0512 262F mov R18,R22
0514 02E0 ldi R16,2
0516 75DF rcall _EepromWrite
0518 .dbline 383
0518 ; }
0518 L106:
0518 .dbline 384
0518 ; }
0518 L103:
0518 .dbline 385
0518 ; if(++adc>1)
0518 4F5F subi R20,255 ; offset = 1
051A 5F4F sbci R21,255
051C 81E0 ldi R24,1
051E 90E0 ldi R25,0
0520 8417 cp R24,R20
0522 9507 cpc R25,R21
0524 1CF4 brge L107
0526 .dbline 386
0526 ; {
0526 .dbline 387
0526 ; ADCSRA |=(1<<ADSC); //启动AD转换
0526 369A sbi 0x6,6
0528 .dbline 388
0528 ; adc=0;
0528 4427 clr R20
052A 5527 clr R21
052C .dbline 389
052C ; }
052C L107:
052C .dbline 390
052C 04E6 ldi R16,100
052E 10E0 ldi R17,0
0530 BCDF rcall _Delay_ms
0532 .dbline 391
0532 EEDE rcall _SpeedControl
0534 .dbline 393
0534 L101:
0534 .dbline 369
0534 D1CF rjmp L100
0536 X3:
0536 .dbline -2
0536 L99:
0536 .dbline 0 ; func end
0536 0895 ret
0538 .dbsym r k 20 I
0538 .dbsym r adc 20 I
0538 .dbsym r edata 22 c
0538 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\EBIKE\eb_pro\M8ProV\M8pwm.c
0000 _UartBuf::
0000 .blkb 10
000A .dbsym e UartBuf _UartBuf A[10:10]c
.area lit(rom, con, rel)
0000 L11:
0000 00000047 .word 0x0,0x4700
0004 L10:
0004 D7A3903F .word 0xa3d7,0x3f90
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -