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

📄 snsles2431.lst

📁 汇编语言开发的BLDC驱动程序。 基于PIC18F1330单片机。
💻 LST
📖 第 1 页 / 共 5 页
字号:
MPASM  5.15                    SNSLES2431.ASM   2-22-2008  14:34:38         PAGE 13


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

00017C                00445 AD_CONV_COMPLETE        
                      00446                           
                      00447                                     ;ADC interrupt
00017C CFC3 F028      00448         movff   ADRESL,CURRENT_UL               ;Sample A = Iu
000180 CFC4 F027      00449         movff   ADRESH,CURRENT_UH
000184 CFC3 F002      00450         movff   ADRESL,SPEED_REFL               ;Sample B = speed ref
000188 CFC4 F001      00451         movff   ADRESH,SPEED_REFH       
00018C 8C03           00452         bsf             FLAGS,CALC_PWM
00018E 9C9E           00453         bcf             PIR1,ADIF                           ;ADIF flag is cleared for next interrupt
000190 0011           00454         RETFIE  FAST            
                      00455 
                      00456 ;******************************************************************
000192                00457 HALL_A_HIGH
                      00458    
000192 92A4           00459         bcf             PIR3,IC1IF
000194 0011           00460     RETFIE      FAST      ;测试
                      00461 
                      00462   
000196 6A3E           00463         clrf    LOCK_ROTOR_COUNT
000198 ECCF F000      00464         call    CHECK_SEQUENCE                  ;UPDATE_SEQUENCE                ;Update the commutation 
                            sequence 
00019C 0011           00465         RETFIE  FAST
                      00466 
                      00467 ;-----------------------------------------
                      00468 ;This routine accelerates the motor speed in two levels.
                      00469 ;In first level, the speed is set to 450RPM, open loop.
                      00470 ;In second level it is acceleated to 800RPM openloop.
                      00471 ;Then the BEMF signals are monitored for 256 cycles and the switching sequence is synched with BEMF sign
                            als.
                      00472 ;-----------------------------------------
00019E                00473 CHECK_SEQUENCE
                      00474    
00019E 8E06           00475         bsf             FLAGS_SRLS,PC_COM
                      00476 
0001A0 A606           00477         btfss   FLAGS_SRLS,OPEN_SPEED_STEP2
0001A2 0012           00478         return
0001A4 B206           00479         btfsc   FLAGS_SRLS,SWITCH_SENSORLESS
0001A6 D006           00480         bra             SENSERLESS_ON
0001A8 3E39           00481         incfsz  COUNT_OPEN_LOOPH,F
0001AA 0012           00482         return
0001AC 8206           00483         bsf             FLAGS_SRLS,SWITCH_SENSORLESS
0001AE 0E3E           00484     movlw       b'00111110'
0001B0 6E60           00485         movwf   DFLTCON                                 ;Digital filters 1:4 on ic1,2,3
0001B2 0012           00486         return
0001B4                00487 SENSERLESS_ON
0001B4 8006           00488         bsf             FLAGS_SRLS,IC_ALOWED
                      00489 
0001B6 92A3           00490         bcf             PIE3,IC1IE              ;Cap1 interrupt
0001B8 0EEA           00491         movlw   0xEA
0001BA 640D           00492         cpfsgt  VELOCITY_READH,W                ;Digital filters are programmed
0001BC D004           00493         bra             LOWER_SPEED_LEVEL1              ;at 3 levels
0001BE 0E39           00494         movlw   b'00111001'
0001C0 6E60           00495         movwf   DFLTCON
MPASM  5.15                    SNSLES2431.ASM   2-22-2008  14:34:38         PAGE 14


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0001C2 8882           00496         bsf             LED2
0001C4 D00A           00497         bra             CONTINUE_SPEED
0001C6                00498 LOWER_SPEED_LEVEL1
0001C6 0EE4           00499         movlw   0xE4
0001C8 640D           00500         cpfsgt  VELOCITY_READH,W
0001CA D004           00501         bra             LOWER_SPEED_LEVEL2
0001CC 0E3D           00502         movlw   b'00111101'
0001CE 6E60           00503         movwf   DFLTCON
0001D0 9882           00504         bcf             LED2
0001D2 D003           00505         bra             CONTINUE_SPEED
0001D4                00506 LOWER_SPEED_LEVEL2
0001D4 0E3E           00507         movlw   b'00111110'
                      00508     
0001D6 6E60           00509         movwf   DFLTCON
0001D8 7882           00510         btg             LED2
0001DA                00511 CONTINUE_SPEED
0001DA C00D FFCF      00512         movff   VELOCITY_READH,TMR1H
0001DE C00E FFCE      00513         movff   VELOCITY_READL,TMR1L
0001E2 809D           00514         bsf     PIE1,TMR1IE
0001E4 7682           00515         btg             LED3
0001E6 0012           00516         return
                      00517 
                      00518 ;-------------------------------------------------------------
                      00519 ;The switching sequence is updated in this routine
0001E8                00520 UPDATE_SEQUENCE
                      00521 ;init table again
0001E8 AA04           00522         btfss   FLAGS1,FWD_REV
0001EA D003           00523         bra             ITS_REVERSE
0001EC EE00 F017      00524         lfsr    0,POSITION_TABLE_FWD
                      00525    
0001F0 D002           00526         bra             PICK_FROM_TABLE
0001F2                00527 ITS_REVERSE
0001F2 EE00 F01F      00528         lfsr    0,POSITION_TABLE_REV
                      00529 ;--
0001F6                00530 PICK_FROM_TABLE
0001F6 5080           00531         movf    PORTA,W
0001F8 1CE8           00532         comf    WREG,W          ;In forward direction, the BEMF ZC is inverted 
0001FA 0B1C           00533         andlw   0x1C            ;IC1/IC2/IC3
0001FC 40E8           00534         rrncf   WREG,W
0001FE 40E8           00535         rrncf   WREG,W
000200 6E3D           00536         movwf   BEMF_ZC
                      00537 ;       movf    PLUSW0,W
000202 6E3C           00538         movwf   OVDCOND_TEMP
000204 0E00           00539     movlw   0x00
000206 623C           00540     cpfseq  OVDCOND_TEMP
000208 D003           00541         bra   TEST
                      00542     ;return
00020A EC6D F000      00543     call  LED_Display
00020E 0012           00544     return
000210                00545 TEST
000210 0E07           00546     movlw   0x07
000212 623C           00547     cpfseq  OVDCOND_TEMP
000214 0012           00548     return
MPASM  5.15                    SNSLES2431.ASM   2-22-2008  14:34:38         PAGE 15


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000216 EC6D F000      00549     call  LED_Display
00021A 0012           00550     return
                      00551     
                      00552 
                      00553 ;-------------------------------------------------------------
                      00554 ;-------------------------------------------------------------
                      00555 
                      00556 ;-------------------------------------------------------------
                      00557 ;-------------------------------------------------------------
                      00558 ;Timer1 overflow interrupt
00021C                00559 TIMER1_INT
00021C 909E           00560         bcf             PIR1,TMR1IF
00021E 0E08           00561     movlw   0x08
000220 6444           00562     cpfsgt  CX4
000222 D003           00563     bra     OPEN_LOOP_ACTIVE
000224 0E09           00564     movlw   0x09
000226 6E44           00565     movwf   CX4
000228 D057           00566     bra     SENSERLESS_T0INT   
00022A                00567 OPEN_LOOP_ACTIVE
00022A 9006           00568         bcf             FLAGS_SRLS,IC_ALOWED    
00022C B606           00569         btfsc   FLAGS_SRLS,OPEN_SPEED_STEP2
00022E D009           00570         bra             OPEN_SPEED_STEP_2
000230 0E69           00571         movlw   LOW_OL_SPEEDH           ;0xD8F0 = 1.92mSec@20MHz/1000RPM
000232 6ECF           00572         movwf   TMR1H
000234 0EC1           00573         movlw   LOW_OL_SPEEDL
000236 6ECE           00574         movwf   TMR1L   
000238 EC61 F003      00575         call    SET_SEQUENCE_COUNT                            
00023C 4A38           00576         infsnz  COUNT_OPEN_LOOPL,F
00023E 8606           00577         bsf             FLAGS_SRLS,OPEN_SPEED_STEP2
000240 0011           00578         retfie  FAST
000242                00579 OPEN_SPEED_STEP_2
000242 0E09           00580     movlw   0x09
000244 6241           00581     cpfseq  CX1
000246 EF34 F001      00582     goto    S1
00024A 2A43           00583     incf    CX3
00024C 0EF0           00584     movlw   0xf0
00024E 6243           00585     cpfseq  CX3
000250 EF32 F001      00586     goto    S2
000254 2A44           00587     incf    CX4
000256 6A43           00588     clrf    CX3
000258 0EF0           00589     movlw   0xf0
00025A 6244           00590     cpfseq  CX4
00025C EF32 F001      00591     goto    S2
000260 0EEF           00592     movlw   0xef
000262 6E44           00593     movwf   CX4
000264 EF5F F001      00594 S2  goto    T3100
000268 2A40           00595 S1  incf    CX
00026A 0EF0           00596     movlw   0xf0
00026C 6240           00597     cpfseq  CX
00026E EF65 F001      00598     goto    T00
000272 EF3B F001      00599     goto    STEP1
000276                00600 STEP1
000276 2A41           00601     incf    CX1
MPASM  5.15                    SNSLES2431.ASM   2-22-2008  14:34:38         PAGE 16


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

000278 6A40           00602     clrf    CX
00027A 0E01           00603     movlw   0x01
00027C 6241           00604     cpfseq  CX1
00027E EF43 F001      00605     goto    Continue
000282 EF59 F001      00606     goto    T800
000286                00607 Continue
000286 C041 F042      00608     movff   CX1,CX2
00028A 0642           00609     decf    CX2
00028C 5042           00610     movf    CX2,W
00028E 0D03           00611     mullw   0x03
000290 5041           00612     movf    CX1,W
000292 24F3           00613     addwf   PRODL,W
000294 EC18 F000      00614     call    CONVERT
                      00615 
000298 6E48           00616     movwf   HIGH_OL_SPEEDH 
00029A C041 F042      00617     movff   CX1,CX2
00029E 0642           00618     decf    CX2
0002A0 5042           00619     movf    CX2,W
0002A2 0D03           00620     mullw   0x03
0002A4 5041           00621     movf    CX1,W
0002A6 24F3           00622     addwf   PRODL,W
0002A8 0F01           00623     addlw   0x01
0002AA EC18 F000      00624     call    CONVERT
0002AE 6E49           00625     movwf   HIGH_OL_SPEEDL
0002B0 D00C           00626     bra    T00 
0002B2                00627 T800
0002B2 0E85           00628     movlw   0x85
0002B4 6E48           00629     movwf   HIGH_OL_SPEEDH   
0002B6 0EED           00630     movlw   0xed
0002B8 6E49           00631     movwf   HIGH_OL_SPEEDL
0002BA EF65 F001      00632     goto    T00  
                      00633 
                      00634 
0002BE                00635 T3100
0002BE 0EE0           00636     movlw   0xe0
0002C0 6E48           00637     movwf   HIGH_OL_SPEEDH   
0002C2 0E7E           00638     movlw   0x7e
0002C4 6E49           00639     movwf   HIGH_OL_SPEEDL
                      00640     ;call       UPDATE_SEQUENCE
0002C6 EF65 F001      00641     goto    T00  
                      00642 
0002CA                00643 T00 
0002CA C048 FFCF      00644         movff   HIGH_OL_SPEEDH,  TMR1H
0002CE C049 FFCE      00645         movff   HIGH_OL_SPEEDL,  TMR1L  
0002D2 EC61 F003      00646         call    SET_SEQUENCE_COUNT
                      00647    
0002D6 0011           00648         retfie  FAST
                      00649 
0002D8                00650 SENSERLESS_T0INT
0002D8 92A3           00651     bcf  PIE3,IC1IE
                      00652   ;  call    UPDATE_SEQUENCE
                      00653    ; movlw   0xe4
                      00654    ; movwf   HIGH_OL_SPEEDH   ;1000RPM

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -