下载

2下载券

加入VIP
  • 专属下载特权
  • 现金文档折扣购买
  • VIP免费专区
  • 千万文档免费下载

上传资料

关闭

关闭

关闭

封号提示

内容

首页 单片机控制的电动自行车驱动系统

单片机控制的电动自行车驱动系统.doc

单片机控制的电动自行车驱动系统

雍正
2018-09-08 0人阅读 举报 0 0 暂无简介

简介:本文档为《单片机控制的电动自行车驱动系统doc》,可适用于IT/计算机领域

单片机控制的电动自行车驱动系统  各部分程序LISTP=F#INCLUDEPFINC以下采用块定义的方法定义单片机内部寄存器CBLOCKX自定义寄存器从X开始FLAGFLAG作为标志寄存器VOLTAGEH电池电压高位寄存器VOLTAGEL电池电压低位寄存器TSH手柄电压高位寄存器TSL手柄电压低位寄存器STATE霍尔信号采样暂存器STATE霍尔信号采样暂存器STATE霍尔信号采样暂存器DELAY延时计数器COUNTVOL低电压采样次数计数器ACCaLO ACCa~ACCd为运算用的寄存器ACCaHI ACCbLO ACCbHI ACCcLO ACCcHI ACCdLO ACCdHI TEMP 临时寄存器TEMP 临时寄存器(中断用)SIGN 符号寄存器COUNT 临时寄存器WSTACK中断时用于暂存W寄存器值STSTACK中断时用于暂存STATUS寄存器值ENDC***********标志寄存器位定义以及程序中常数定义***********CONSTANTVOLTAGE=采电池电压标志位CONSTANTPWM=输出下一次PWM信号标志位CONSTANTLOWPOWER=低电压标志位CONSTANTSHUTDOWN=刹车标志位CONSTANTOFF=复位标志位CONSTANTAND=XEAND用于获取有效霍尔信号CONSTANTFULLPWM=XFF当PWM输出全高时输入CCPRL中的值CONSTANTVOLOFFH=X当电池电压低于AH时,低压保护VVCONSTANTVOLOFFL=XACONSTANTVOLONH=X当电池电压大于H时允许电机重开VVCONSTANTVOLONL=XCONSTANTTSONH=X刹车后手柄复位值低于H则允许电机重新启动CONSTANTTSONL=X***复位矢量入口(单片机复位时PC指针指向程序存储器X单元)***ORGXSTARTGOTOMAIN复位后程序进入主程序***中断矢量入口程序(PIC单片机的中断矢量入口为X)***ORGX中断矢量入口BTFSCINTCONRBIF是否为RB口电平变化中断?GOTOSAMPLERB是进入RB口电平变化中断服务程序BTFSCPIRADIF是否为AD采样中断GOTOAD是进入AD中断服务程序BTFSCINTCONINTF是否为刹车中断GOTOBRAKE是刹车中断处理RETFIE如都不是则中断返回************逆变桥输出控制表*************逆变桥输出控制表其输出对应种状态霍尔信号来自B口RB、RB、RBC口输出低电平有效其中RCRC不作为触发电路输出口故表中使其为高电平ORGX表程序从X单元开始存放(也可以不从这开始)OUTTABLEADDWFPCLRETLWXAF如霍尔信号为、、则使RC、RC为低电平RETLWXBE如霍尔信号为、、则使RC、RC为低电平RETLWXFF没有为、、的霍尔信号对应电机状态RETLWXE如霍尔信号为、、则使RC、RC为低电平RETLWXCF如霍尔信号为、、则使RC、RC为低电平RETLWXFF没有为、、的霍尔信号对应电机状态RETLWXD如霍尔信号为、、则使RC、RC为低电平RETLWX如霍尔信号为、、则使RC、RC为低电平***************主程序*****************ORGX主程序从X单元开始存储MAINMOVLWXFF由于C口上电复位值不确定必须先关闭所有MOS管MOVWFPORTCBSFSTATUSRP选择存储体MOVLWX设置RC为输入口其它为输出口其中RC为PWM    MOVWFTRISC输出口其它位为触发信号输出BCFSTATUSRP选择存储体CLRFPIR清所有中断标志位CLRFINTCON禁止所有中断MOVLWX设置TMR预分频值为MOVWFTCONMOVLWFULLPWM初始化PWM工作循环寄存器使PWM占空比为MOVWFCCPRL输出电压为零MOVLWXFF设置CCP工作于PWM方式MOVWFCCPCONMOVLWXBCCP工作于特殊事件触发方式用作AD采样周期寄存MOVWFCCPCON器MOVLWX选择AD转换时钟为分频选择AN通道并使ADMOVWFADCON转换允许CLRFTMRTMR计数器清零CLRFTMRHTMR计数器清零CLRFTMRLCLRFTCONTMR预分频为关闭振荡器工作于定时工作方式MOVLWX初始化AD采样周期寄存器T=μsMOVWFCCPRHMOVLWXMOVWFCCPRLBSFSTATUSRP选择存储体MOVLWXEFRB口高位用于采样霍尔信号RB为刹车中断,设置为MOVWFTRISB输入其它未用MOVLWXC初始化PWM频率为kHzMOVWFPRMOVLWXAD采样结果右移RA口引脚均为模拟输入MOVWFADCONBSFOPTIONREGINTEDG 选择INT在下降沿产生中断BCFSTATUSRPCALLSAMPLE确定当前转子位置CALLOUTPUT根据采得的状态值触发相应的MOSFETMOVLWXD开总中断、外围中断、INT中断和RB口电平变化中断允MOVWFINTCON许BCFPIECCPIECCP中断禁止BSFPIEADIE打开AD采样中断CLRFFLAG清标志位寄存器CLRFCOUNTVOL清电池电压采样计数器BSFTCONTMRON开CCP对手柄进行等间隔采样BSFTCONTMRON开CCPRETESTBTFSSFLAGPWMTS采样完毕GOTONEXT没有转NEXTCALLOUTPWMTS采样完毕送出相应的PWM信号BCFFLAGPWM清PWM允许标志NEXTBTFSSFLAGLOWPOWER电压采样完毕?GOTONEXT没有转NEXTCALLPOWER是调用电压保护子程序处理数据BTFSCFLAGOFF是否需要复位?GOTOMAIN是单片机复位NEXTBTFSSFLAGSHUTDOWN刹车中断到来?GOTORETEST否回转RETESTCALLBRAKEON是调用刹车处理子程序CLRWDTBTFSCFLAGOFFOFF=?GOTOMAIN否单片机复位GOTORETEST是回转RETEST***************刹车处理子程序******************BRAKEONBCFFLAGOFF清复位标志BCFFLAGSHUTDOWN是清相应标志位BTFSSPORTBINT引脚仍为?RETURN否中断是由干扰引起的返回BSFSTATUSRPBCFPIEADIE禁止AD采样中断BCFSTATUSRPBCFINTCONINTE关RB中断MOVLWFULLPWMPWM输出全高MOVWFCCPRLBCFTCONTMRON关闭手柄采样BREAKBTFSCADCONGO正在进行AD采样?GOTOBREAK是等待AD采样完毕BCFADCONCHSBCFADCONCHS选择采样通道准备采样手柄电压BCFPIRADIF清AD采样中断标志位MOVLWX延时MOVWFCOUNTBREAKDECFSZCOUNTGOTOBREAKBREAKBSFADCONGO采样TS值BREAKBTFSSPIRADIF采样完毕?GOTOBREAKBCFPIRADIFBCFSTATUSCMOVFADRESH当前TS值送被减数MOVWFACCbHIBSFSTATUSRPMOVFADRESLBCFSTATUSRPMOVWFACCbLOMOVLWTSONHV所对应的采样值送减数MOVWFACCaHIMOVLWTSONLMOVWFACCaLOCALLDsub当前TS值减VMOVLWFULLPWMMOVWFCCPRLCLRWDTBTFSSACCbHI当前电压值大于V?GOTOBREAK是重新采样BTFSCPORTBGOTOBREAKBSFFLAGOFF否置相应的标志位RETURN返回***************开环PWM输出子程序****************OUTPWMBCFFLAGPWM清相应的标志位MOVFTSH将调速手柄采样值送至被加数MOVWFACCaHIMOVFTSLMOVWFACCaLOMOVLWXFFFFF补码为XE即VMOVWFACCbHIMOVLWXFMOVWFACCbLOCALLDaddBTFSSACCbHITS>VGOTOPWM是转PWMMOVLWFULLPWM否则输出全高MOVWFCCPRLRETURNPWMMOVLWXFDXB=VMOVWFACCbHIMOVLWXMOVWFACCbLOCALLDaddBTFSCACCbHITS>VGOTOPWMPWMCLRFCCPRLBCFCCPCONBCFCCPCONRETURNPWMMOVLWXFFV对应的采样值补码送加数MOVWFACCbHIMOVLWXFMOVWFACCbLOCALLDaddTSVCLRFACCaHI系数K==H送乘数MOVLWXFMOVWFACCaLOCALLDmpy得到放大倍的低电平时间K*(TSV)MOVFACCcHI将结果取出MOVWFACCaHIMOVFACCcLOMOVWFACCaLOMOVLWXPWM周期T减去低电平时间得到高电平时间MOVWFACCbHICLRFACCbLOCALLDsubBTFSCACCbHI低电平时间是否大于周期?GOTOPWM是输出全压RLFACCbLO否则输出与低电平时间对应的高电平时间RLFACCbHIMOVFACCbHID~D位送CCPRLMOVWFCCPRLBCFCCPCOND位送CCPCONBTFSCACCbLOBSFCCPCONBCFCCPCOND位送CCPCONBTFSCACCbLOBSFCCPCONRETURN返回****************刹车中断服务程序***************BRAKECALLPUSH保存现场BCFSTATUSRP回存储区BSFFLAGSHUTDOWN置相应标志位BCFINTCONINTF清中断标志位CALLPOP恢复现场RETFIE中断返回***************低电压保护处理子程序*****************POWERBCFFLAGLOWPOWER清相应的标志位MOVFVOLTAGEHMOVWFACCaHIMOVFVOLTAGELMOVWFACCaLOMOVLWVOLOFFHMOVWFACCbHIMOVLWVOLOFFLMOVWFACCbLOCALLDsubBTFSCACCbLO判断当前电池电压值是否低于保护电压(V)RETURN不是返回BCFINTCONINTEBCFTCONTMRON关闭电流采样MOVLWFULLPWMMOVWFCCPRLBSFSTATUSRPBCFPIEADIE禁止AD采样中断BCFSTATUSRPPOWERBTFSCADCONGO正在进行AD采样?GOTOPOWER是等待AD采样完毕BCFPIRADIF清AD采样中断标志位BCFADCONCHSBSFADCONCHS选择电压采样通道MOVLWX延时等待通道转换完成MOVWFCOUNTPOWERDECFSZCOUNTGOTOPOWERPOWERBSFADCONGO采样电池电压值POWERBTFSSPIRADIF采样完毕?GOTOPOWERBCFPIRADIF清AD中断标志位BCFSTATUSCMOVFADRESH当前电压值送被加数MOVWFACCbHIBSFSTATUSRPMOVFADRESLBCFSTATUSRPMOVWFACCbLOMOVLWVOLONHV电压值送被加数MOVWFACCaHIMOVLWVOLONLMOVWFACCaLOCALLDsub当前电压值减与重开电压进行比较MOVLWFULLPWMMOVWFCCPRLCLRWDTBTFSCACCbHI当前电压值大于?GOTOPOWER否重新采样BSFFLAGOFF是置相应的标志位RETURN返回***电机转子位置采样子程序状态采样子程序出口地址:STATE***SAMPLEMOVLWAND读RB口ANDWFPORTB分离出有效信息MOVWFSTATE暂存状态值MOVLWXMOVWFDELAYDELDECFSZDELAY延时μsGOTODELMOVLWAND读RB口ANDWFPORTB分离出有效信息并暂存MOVWFSTATEXORWFSTATE与上一次状态值相异或BTFSCSTATUSZRETURN两个状态值相等则返回MOVLWX否则延时μsMOVWFDELAYDELDECFSZDELAYGOTODELMOVLWAND读RB口ANDWFPORTB提取有效信息并暂存MOVWFSTATEXORWFSTATE与第一次状态相同吗?BTFSCSTATUSZRETURN相同则返回MOVFSTATE否则再与第二次状态相比较XORWFSTATEBTFSSSTATUSZGOTOSAMPLE三次状态均不相同则重新采样MOVFSTATE第三次状态与第二次相同则将正确状态赋予STATE并MOVWFSTATE返回RETURN**************MOSFET触发信号输出子程序**************OUTPUTSWAPFSTATESTATE寄存器高低半字节互换BCFSTATUSC清C位并将STATE寄存器左移一位RRFSTATE将采样所得结果放至W低三位CALLOUTTABLE查表获得输出值MOVWFPORTC将输出值输出至RC口RETURN***************RB口电平变化中断服务程序**************SAMPRBCALLPUSH现场保护BCFSTATUSRPCALLSAMPLE采样RB口状态CALLOUTPUT根据RB口状态触发相应的MOSFETCALLPOP恢复现场BCFINTCONRBIF清RB口电平变化中断标志RETFIE中断返回************AD采样中断服务程序***************ADCALLPUSH保护现场BTFSCFLAGVOLTAGE是电压采样?GOTOSETVOL是作相应的处理SETTSBCFADCONCHSAD采样值是TS则选择采样通道INCFCOUNTVOL电压采样周期寄存器值加BTFSSSTATUSZ电压采样周期到?GOTOADBCFADCONCHS是选择采样通道BSFADCONCHSBSFFLAGVOLTAGE置相应的标志位ADBCFPIRADIF清AD中断标志MOVFADRESH采样值送寄存器暂存MOVWFTSHBSFSTATUSRPMOVFADRESLBCFSTATUSRPMOVWFTSLBSFFLAGPWMBTFSSFLAGVOLTAGE是否需要进行电压采样?GOTOADMOVLWX是延时后采样电压MOVWFTEMPADDECFSZTEMPGOTOADBSFADCONGOADCALLPOP恢复现场中断返回RETFIESETVOLBCFADCONCHS如果采样值为电压值则选择通道BCFADCONCHSBCFPIRADIF清中断标志位BCFFLAGVOLTAGE清相应标志位MOVFADRESH将采样结果放入被减数寄存器MOVWFVOLTAGEHBSFSTATUSRPMOVFADRESLBCFSTATUSRPMOVWFVOLTAGELBSFFLAGLOWPOWER是置相应标志位CALLPOP中断返回RETFIE**************中断保护现场子程序******************PUSHMOVWFWSTACK暂存W寄存器MOVFSTATUS暂存STATUS寄存器MOVWFSTSTACKRETURN子程序返回**************中断恢复现场子程序**************POPMOVFSTSTACK恢复STATUS寄存器值MOVWFSTATUSMOVFWSTACK恢复W寄存器值RETURN子程序返回**************初始化子程序****************SETUPMOVLW 初始化TEMPMOVWF TEMPMOVF ACCbHIACCb送ACCdMOVWF ACCdHIMOVF ACCbLOMOVWF ACCdLOCLRF ACCbHI清ACCbCLRF ACCbLORETLW **********乘除法运算确定结果符号子程序**********SSIGNMOVF ACCaHIACCaHI异或ACCbHI结果送SIGN单元XORWF ACCbHIMOVWF SIGNBTFSS ACCbHIACCb为负?GOTO CHEKA否检查ACCaCALLNEGBCHEKABTFSS ACCaHIACCa为负?RETLW ACCa和ACCb均为负返回GOTO NEGAACCa为负取补GOTOMAINEND程序结束

用户评价(0)

关闭

新课改视野下建构高中语文教学实验成果报告(32KB)

抱歉,积分不足下载失败,请稍后再试!

提示

试读已结束,如需要继续阅读或者下载,敬请购买!

文档小程序码

使用微信“扫一扫”扫码寻找文档

1

打开微信

2

扫描小程序码

3

发布寻找信息

4

等待寻找结果

我知道了
评分:

/13

单片机控制的电动自行车驱动系统

VIP

在线
客服

免费
邮箱

爱问共享资料服务号

扫描关注领取更多福利