GOTO AD4
BCF ADCON0,CHS0 ;是,选择2采样通道
BSF ADCON0,CHS1
BSF FLAG1,VOLTAGE ;置相应的标志位
AD4 BCF PIR1,ADIF ;清AD中断标志
MOV F ADRESH,0 ;采样值送寄存器暂存
MOV WF TSH
BSF STATUS,RP0
MOV F ADRESL,0
BCF STATUS,RP0
MOV WF TSL
BSF FLAG1,PWM
BTFSS FLAG1,VOLTAGE ;是否需要进行电压采样?
GOTO AD6
MOV LW 0X05 ;是,延时后采样电压
MOV WF TEMP1
AD5 DECFSZ TEMP1
GOTO AD5
BSF ADCON0,GO
AD6 CALL POP ;恢复现场,中断返回
RETFIE
SET_VOL BCF ADCON0,CHS1 ;如果采样值为电压值,则选择0通道
BCF ADCON0,CHS0
BCF PIR1,ADIF ;清中断标志位
BCF FLAG1,VOLTAGE ;清相应标志位
MOV F ADRESH,0 ;将采样结果放入被减数寄存器
MOV WF VOLTAGEH
BSF STATUS,RP0
MOV F ADRESL,0
BCF STATUS,RP0
MOV WF VOLTAGEL
BSF FLAG1,LOWPOWER;是,置相应标志位
CALL POP ;中断返回
RETFIE
;**************中断保护现场子程序******************
PUSH MOV WF W_STACK ;暂存W寄存器
MOV F STATUS,0 ;暂存STATUS寄存器
MOV WF ST_STACK
RETURN ;子程序返回
;**************中断恢复现场子程序**************
POP MOV F ST_STACK,0 ;恢复STATUS寄存器值
MOV WF STATUS
MOV F W_STACK,0 ;恢复W寄存器值
RETURN ;子程序返回
;**************初始化子程序****************
SETUP MOV LW .15 ;初始化TEMP
MOV WF TEMP
MOV F ACCbHI,0 ;ACCb送ACCd
MOV WF ACCdHI
MOV F ACCbLO,0
MOV WF ACCdLO
CLRF ACCbHI ;清ACCb
CLRF ACCbLO
RETLW 0
;**********乘除法运算确定结果符号子程序**********
S_SIGN MOV F ACCaHI,0 ;ACCaHI异或ACCbHI,结果送SIGN单元
XORWF ACCbHI,0
MOV WF SIGN
BTFSS ACCbHI,7 ;ACCb为负?
GOTO CHEK_A ;否,检查ACCa
CALL NEG_B
CHEK_A BTFSS ACCaHI,7 ;ACCa为负?
RETLW 0 ;ACCa和ACCb均为负,返回
GOTO NEG_A ;ACCa为负,取补
GOTO MAIN
END ;程序结束
上一页 [1] [2] [3] [4] [5] [6]
本文关键字:电动自行车 源程序 PIC单片机,单片机-工控设备 - PIC单片机