⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 m8pwm.lis

📁 电动车控制器
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 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 + -