CALL BRAKEON ;是,调用刹车处理子程序
CLRWDT
BTFSC FLAG1,OFF ;OFF=0?
GOTO MAIN ;否, 单片机 复位
GOTO RETEST ;是,回转RETEST
;***************刹车处理子程序******************
BRAKEON BCF FLAG1,OFF ;清复位标志
BCF FLAG1,SHUTDOWN;是,清相应标志位
BTFSS PORTB,0 ;INT引脚仍为1?
RETURN ;否,中断是由干扰引起的,返回
BSF STATUS,RP0
BCF PIE1,ADIE ;禁止AD采样中断
BCF STATUS,RP0
BCF INTCON,INTE ;关RB0中断
MOV LW FULLPWM ;PWM输出全高
MOV WF CCPR1L
BCF T1CON,TMR1ON ;关闭手柄采样
BREAK2 BTFSC ADCON0,GO ;正在进行AD采样?
GOTO BREAK2 ;是,等待AD采样完毕
BCF ADCON0,CHS0
BCF ADCON0,CHS1 ;选择0采样通道,准备采样手柄电压
BCF PIR1,ADIF ;清AD采样中断标志位
MOV LW 0X06 ;延时
MOV WF COUNT
BREAK3 DECFSZ COUNT
GOTO BREAK3
BREAK5 BSF ADCON0,GO ;采样TS值
BREAK4 BTFSS PIR1,ADIF ;采样完毕?
GOTO BREAK4
BCF PIR1,ADIF
BCF STATUS,C
MOV F ADRESH,0 ;当前TS值送被减数
MOV WF ACCbHI
BSF STATUS,RP0
MOV F ADRESL,0
BCF STATUS,RP0
MOV WF ACCbLO
MOV LW TSONH ;1.5 V所对应的采样值送减数
MOV WF ACCaHI
MOV LW TSONL
MOV WF ACCaLO
CALL D_sub ;当前TS值减1.5V
MOV LW FULLPWM
MOV WF CCPR1L
CLRWDT
BTFSS ACCbHI,7 ;当前电压值大于1.5V?
GOTO BREAK5 ;是,重新采样
BTFSC PORTB,0
GOTO BREAK5
BSF FLAG1,OFF ;否,置相应的标志位
RETURN ;返回
;***************开环PWM输出子程序****************
OUT_PWM BCF FLAG1,PWM ;清相应的标志位
MOV F TSH,0 ;将调速手柄采样值送至被加数
MOV WF ACCaHI
MOV F TSL,0
MOV WF ACCaLO
MOV LW 0XFF ;FF1F补码为0XE1,即1.1 V
MOV WF ACCbHI
MOV LW 0X1F
MOV WF ACCbLO
CALL D_add
BTFSS ACCbHI,7 ;TS>1.1V?
GOTO PWM1 ;是,转PWM1
MOV LW FULLPWM ;否则输出全高
MOV WF CCPR1L
RETURN
PWM1 MOV LW 0XFD ;0X27B=3.1V
MOV WF ACCbHI
MOV LW 0X85
MOV WF ACCbLO
CALL D_add
BTFSC ACCbHI,7 ;TS>3.1V?
GOTO PWM3
PWM2 CLRF CCPR1L
BCF CCP1CON,4
BCF CCP1CON,5
RETURN
上一页 [1] [2] [3] [4] [5] [6] 下一页
本文关键字:电动自行车 源程序 PIC单片机,单片机-工控设备 - PIC单片机