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

📄 x36vznys.asm

📁 三轮电动车有刷控制器程序
💻 ASM
📖 第 1 页 / 共 3 页
字号:
            CALL DEC10MS
            BTFSS PSC
            GOTO CLSC0
            BSF OFF                  ;置复位标志位
            RETURN       
;----------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;----------------------------------------------------------------
;助力检测:TIMER1定时512US,计数成32MS,32MS再计数50次,形成1.6S定时.
;         512US对助力I/O信号进行检测一次,判断是否发声变化.变化记
;         录下脉宽(脉宽是以32MS为单位),由脉宽判断是正反助力.正助
;         力(反助力)一次寄存器加一.以1.6S为单位,读出该寄存器的值,
;         则为助力信号值.
;---------------------------------------------------------------                  
;助力处理程序
;将ZL_V的值转化位为IN_PWM值
CLZL       
            BCF ZL_OK         
            MOVF ZL_V,W
            MOVWF ZLTP
            MOVLW 0X02
            SUBWF ZLTP,W           ;ZLTP-2
            BTFSC STATUS,C         ;C=0,ZLTP<2
            GOTO CLZL0
            BCF ZL_ON              ;关助力模式
            CLRF ZLTP
            GOTO CLZL_PWM
CLZL0      
            BSF ZL_ON              ;ZL_V>2,开助力模式

            MOVF ZL_PWS,W
            BTFSS STATUS,Z
            GOTO CLZL1
            MOVLW 0X80
            MOVWF ZL_PWS
CLZL1            
            MOVLW 0X0D 
            SUBWF ZLTP,W           ;ZLTP<13,最大限制
            BTFSC STATUS,C
            GOTO CLZL_UP
            RLF ZLTP,F             ;*16
            RLF ZLTP,F
            RLF ZLTP,F 
            RLF ZLTP,F
            MOVLW 0X30             ;+48
            ADDWF ZLTP,F 
           
CLZL_PWM   
            MOVF ZLTP,W
            SUBWF ZL_PWS,W         ;ZL_PWS-ZLTP
            BTFSC STATUS,Z         ;Z=0,ZL_PWS=ZLTP,相等,不调整
            GOTO CLZL_UP_DW
            BTFSS STATUS,C        
            GOTO  CLZL_UP          ;C=0,ZL_PWS<ZLTP
CLZL_DW      
            DECF ZL_PWS,F
            GOTO  CLZL_UP_DW    
CLZL_UP    
            MOVLW 0XF2             ;241
            SUBWF ZL_PWS,W
            BTFSC STATUS,C
            GOTO CLZL_UP_DW
            INCF ZL_PWS,F 
            INCF ZL_PWS,F  
            INCF ZL_PWS,F  
CLZL_UP_DW
            MOVF ZL_PWS,W
            MOVWF IN_PWM
            RETURN          
;----------------------------------------------------------------
;助力I/O状态检测(TIMER1 调用该程序)
ZLJC     
           BTFSS PZL
           GOTO ZLJC_L          ;助力位为低
           BTFSS ZL_PZL
           GOTO  ZLJC_L0        ;低脉宽数  助力状态改变了
           RETURN
ZLJC_L     
           BTFSC ZL_PZL         
           GOTO ZLJC_H0         ;高脉宽数  助力状态改变了
           RETURN
ZLJC_L0   
           MOVF ZL_TIM,W
           MOVWF ZL_TIM_L
           CLRF ZL_TIM
           BSF ZL_PZL           ;助力当前电平状态--H
           RETURN
ZLJC_H0    
           MOVF ZL_TIM,W
           MOVWF ZL_TIM_H       ;读出高脉宽值
           CLRF ZL_TIM     
           BCF ZL_PZL           ;助力当前电平状态--L
           BTFSC ZL_ON
           GOTO ZLJC_H1         ;助力有效后,正反助力都有效
           MOVF ZL_TIM_H,W
           SUBWF ZL_TIM_L,W     ;ZL_TIM_H>ZL_TIM_L,C=0,正助力
           BTFSC STATUS,C
           RETURN
ZLJC_H1
           INCF ZL_HL,F          ;正助力,ZL_V+1
           RETURN
;----------------------------------------------------------------
;助力检测控制(TIMER1  32MS调用该程序)
ZLJCOUT
           BSF ZL_OK              ;助力输出位
           INCF ZL_TIM,F          ;助力脉宽计数加1
           DECFSZ ZL_1S,F
           RETURN
           MOVLW 0X28
           MOVWF ZL_1S
           MOVF ZL_HL,W
           MOVWF ZL_V             ;助力值输出值
           CLRF ZL_HL
           RETURN 
;----------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;----------------------------------------------------------------
;定速,DS_ON=1,定速键有效(TIMER1  32MS调用该程序)
CLDS
            BTFSS DS_OK           ;转把有效后,开始检测定速键
            GOTO CLDS3
            BTFSC DS_ON           ;定速是否打开?
            RETURN
            BTFSC PDS             ;判断键
            GOTO CLDS0            
            DECFSZ DS_TIM,F
            RETURN
            BSF DS_DW            ;定速键按下 
            MOVLW 0X02
            MOVWF DS_TIM
            GOTO CLDS1                 
CLDS0        
            BTFSS DS_DW
            RETURN   
            BCF DS_DW
            BSF DS_ON            ;定速键有效
CLDS1
            MOVLW 0X02           ;延时间2*32MS
            MOVWF DS_TIM 
            RETURN
CLDS3       BCF DS_ON
            BCF DS_DW
            RETURN
;----------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------------------------------------------------
;欠压报警闪烁输出
QYBJ
            BTFSS DC_BJ              ;DC_BJ=1,开启
            GOTO CLOSBJ
            MOVF QYBJ_TM,W
            BTFSS STATUS,Z
            GOTO QYBJ0
            MOVLW 0X10
            MOVWF QYBJ_TM
            BTFSS PQY
            GOTO QYBJ1
            DECFSZ BJ_CT,F
            GOTO QYBJ1            
            MOVF BJ_T,W
            MOVWF BJ_CT
            BCF PQY
            RETURN
QYBJ1 
            BSF PQY             
            RETURN
QYBJ0
            DECF QYBJ_TM,F
            RETURN  
CLOSBJ
            BSF PQY
            RETURN
;----------------------------------------------------------------
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;------------------------------------------------------------------
;10us延时
DEC10US                     
             MOVLW 0X09
             MOVWF RS
DEC10US_0    DECFSZ RS,F
             GOTO DEC10US_0
             RETURN
;10MS延时                        
DEC10MS               
              MOVLW 0XA0
              MOVWF RSS
DEC10MS_0     CALL DEC10US
              CALL DEC10US 
              DECFSZ RSS,F
              GOTO DEC10MS_0
              RETURN
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;初始化程序
;寄存器初始化
MST_REG
            MOVLW 0X04
            MOVWF ADTP0        ;AD转换通道控制,初始转一次,
            MOVLW 0X04
            MOVWF ADTP1
            MOVLW 0X02
            MOVWF DS_TIM
            MOVLW 0X01
            MOVWF IN_PWM_TM
            MOVLW 0X01
            MOVWF DC_YTM
            CLRF DL_V
            CLRF DC_V
            CLRF TS_V
            CLRF IN_PWM
            CLRF PWM
            CLRF ZL_TIM
            CLRF ZL_TIM_H
            CLRF ZL_TIM_L
            CLRF ZL_HL
            CLRF ZL_V
            CLRF ZL_PWS
            MOVLW 0X28
            MOVWF ZL_1S
            BCF INCPWM
            BCF DECPWM
            BCF OFF
            BCF TS_YX
            BCF ZL_ON
            BCF DS_ON
            BCF DS_DW
            BSF ZL_PZL              ;助力位初始为--H
            BCF DC_BJ
            MOVLW YSTS
            MOVWF TSS
            BCF DS_OK
            MOVLW 0X02
            MOVWF BJ_CT
            MOVWF BJ_T
            BSF PQY                ;欠压预警置1
            RETURN
;AD转换初始化
MST_AD
             BSF _BANK              ;AD 初始化   BANK1   
             movlw B'00000100'      ;AD转换结果左对齐
             movwf ADCON1           ;配置RA  RA0,RA1,RA3为AD输入 
             movlw B'00001111'      ;RA2
             movwf TRISA
             BCF _BANK              ;BANK0
             movlw B'01000001'      ;默认转换 RA0
             movwf ADCON0
             RETURN
;TIMER1初始化
MST_TIMER1
             MOVLW B'00000000'      ;定时器1初始化
             MOVWF T1CON
             MOVLW 0XFE
             MOVWF TMR1H
             CLRF TMR1L             ;定时512US中断一次  
;WDT设置
             BSF _BANK
             BCF OPTION_REG,0
             BCF OPTION_REG,1
             BSF OPTION_REG,2
             BSF OPTION_REG,3
             BSF _BANK                          
             RETURN
;PWM初始化
MST_PWM      
             BSF _BANK              ;PWM初始化   ;BANK 1
             movlw 0x3B             ;
             movwf PR2              ;周期为50US  
             BCF _BANK              ;BANKK 0
             movlw 0x0E             ;选择PWM模式
             movwf CCP1CON            
             CLRF CCPR1L            ;占空比为0     
             CLRF T2CON             ;预分频 1:1
             bsf T2CON,TMR2ON       ;开Timer2 
             RETURN
;中断初始化
MST_INT
             BSF _BANK              ;BANK1
             BSF OPTION_REG,7       ;没有上拉电阻
             BCF OPTION_REG,INTEDG  ;RB0/INT 下降延中断
             BCF _BANK
             BSF INTCON,INTE        ;RB0/INT 中断允许
             BSF INTCON,PEIE        ;外设中断允许
             BSF INTCON,GIE         ;全局中断使能
             BCF PIR1,ADIF          ;清AD标志中断
             BCF PIR1,TMR1IF        ;清TIMER1标志中断
             CLRF CCPR1L            ;占空比为0  
             BCF CCP1CON,4
             BCF CCP1CON,5
             BSF _BANK              ;BANK1
             BSF PIE1,ADIE          ;AD中断允许
             BSF PIE1,TMR1IE        ;Timer1 中断允许
             BCF PIE1,TMR2IE        ;Timer2 中断禁止
             BCF _BANK 
             BSF T1CON,TMR1ON       ;开Timer1
             RETURN
;------------------------------------------------------------              
             END
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

⌨️ 快捷键说明

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