




已阅读5页,还剩14页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机控制的电动自行车驱动系统部分程序(CHUNTIAN)作者:佚名 来源:不详 录入:jdzj868 更新时间:2009-7-9 16:52:08 点击数:0 【字体: 】单片机控制的电动自行车驱动系统14.4.4各部分程序LIST P=16F876#INCLUDE P16F876.INC;以下采用块定义的方法定义单片机内部寄存器CBLOCK 0X20 ;自定义寄存器从0X20开始FLAG1 ;FLAG1作为标志寄存器VOLTAGEH ;电池电压高位寄存器VOLTAGEL ;电池电压低位寄存器TSH ;手柄电压高位寄存器TSL ;手柄电压低位寄存器STATE1 ;霍尔信号采样暂存器1STATE2 ;霍尔信号采样暂存器2STATE3 ;霍尔信号采样暂存器3DELAY ;延时计数器COUNT_VOL ;低电压采样次数计数器ACCaLO ;ACCaACCd为运算用的寄存器ACCaHI ACCbLO ACCbHI ACCcLO ACCcHI ACCdLO ACCdHI TEMP ;临时寄存器TEMP1 ;临时寄存器(中断用)SIGN ;符号寄存器COUNT ;临时寄存器W_STACK ;中断时用于暂存W寄存器值ST_STACK ;中断时用于暂存STATUS寄存器值ENDC;*标志寄存器位定义以及程序中常数定义*CONSTANT VOLTAGE=0 ;采电池电压标志位CONSTANT PWM=1 ;输出下一次PWM信号标志位CONSTANT LOWPOWER=2 ;低电压标志位CONSTANT SHUTDOWN=3 ;刹车标志位CONSTANT OFF=4 ;复位标志位CONSTANT AND=0XE0 ;AND用于获取有效霍尔信号CONSTANT FULLPWM=0XFF ;当PWM输出全高时,输入CCPR1L中的值CONSTANT VOLOFFH=0X02 ;当电池电压低于24AH时, 低压保护2.86 V/31.5 VCONSTANT VOLOFFL=0X4ACONSTANT VOLONH=0X02 ;当电池电压大于266H时,允许电机重开3V/33VCONSTANT VOLONL=0X66CONSTANT TSONH=0X01 ;刹车后手柄复位值低于133H,则允许电机重新启动CONSTANT TSONL=0X33;*复位矢量入口(单片机复位时,PC指针指向程序存储器0X0000单元)*ORG 0X0000START GOTO MAIN ;复位后程序进入主程序;*中断矢量入口程序(PIC单片机的中断矢量入口为0X0004)*ORG 0X0004 ;中断矢量入口BTFSC INTCON,RBIF ;是否为RB口电平变化中断? GOTO SAMPLERB ;是,进入RB口电平变化中断服务程序BTFSC PIR1,ADIF ;是否为AD采样中断GOTO AD ;是,进入AD中断服务程序BTFSC INTCON,INTF ;是否为刹车中断GOTO BRAKE ;是,刹车中断处理RETFIE ;如都不是,则中断返回;*逆变桥输出控制表*;逆变桥输出控制表,其输出对应6种状态,霍尔信号来自B口RB7、RB6、RB5,C口输出低电平有;效,其中RC1,RC2不作为触发电路输出口,故表中使其为高电平ORG 0X0020 ;表程序从0X0020单元开始存放(也可以不从这开始)OUT_TABLE ADDWF PCL,1RETLW 0X0AF ;如霍尔信号为0、0、0,则使RC4、RC6为低电平RETLW 0X0BE ;如霍尔信号为0、0、1,则使RC0、RC6为低电平RETLW 0X0FF ;没有为0、1、0的霍尔信号对应电机状态RETLW 0X07E ;如霍尔信号为0、1、1,则使RC0、RC7为低电平RETLW 0X0CF ;如霍尔信号为1、0、0,则使RC4、RC5为低电平RETLW 0X0FF ;没有为1、0、1的霍尔信号对应电机状态RETLW 0X0D7 ;如霍尔信号为1、1、0则使RC3、RC5为低电平RETLW 0X077 ;如霍尔信号为1、1、1则使RC3、RC7为低电平;*主程序*ORG 0X0100 ;主程序从0X0100单元开始存储MAIN MOVLW 0X0FF ;由于C口上电复位值不确定,必须先关闭所有MOS管MOVWF PORTCBSF STATUS,RP0 ;选择存储体1MOVLW 0X02 ;设置RC1为输入口,其它为输出口,其中RC2为PWMMOVWF TRISC ;输出口,其它位为触发信号输出BCF STATUS,RP0 ;选择存储体0CLRF PIR1 ;清所有中断标志位CLRF INTCON ;禁止所有中断MOVLW 0X01 ;设置TMR2预分频值为4MOVWF T2CONMOVLW FULLPWM ;初始化PWM工作循环寄存器,使PWM占空比为1MOVWF CCPR1L ;输出电压为零MOVLW 0XFF ;设置CCP1工作于PWM方式MOVWF CCP1CONMOVLW 0X0B ;CCP2工作于特殊事件触发方式,用作AD采样周期寄存 MOVWFCCP2CON ;器MOVLW 0X081 ;选择AD转换时钟为32分频,选择AN0通道,并使ADMOVWF ADCON0 ;转换允许CLRF TMR2 ;TMR2计数器清零CLRF TMR1H ;TMR1计数器清零CLRF TMR1LCLRF T1CON ;TMR1预分频为1,关闭振荡器,工作于定时工作方式MOVLW 0X08 ;初始化AD采样周期寄存器,T=512 sMOVWF CCPR2HMOVLW 0X00MOVWF CCPR2LBSF STATUS,RP0 ;选择存储体1MOVLW 0XEF ;RB口高3位用于采样霍尔信号,RB0为刹车中断,设置为MOVWF TRISB ;输入,其它未用MOVLW 0XC7 ;初始化PWM频率为5 kHzMOVWF PR2 MOVLW 0X082 ;AD采样结果右移,RA口引脚均为模拟输入MOVWF ADCON1BSF OPTION_REG,INTEDG ;选择INT在下降沿产生中断BCF STATUS,RP0CALL SAMPLE ;确定当前转子位置CALL OUTPUT ;根据采得的状态值触发相应的MOSFETMOVLW 0X0D8 ;开总中断、外围中断、INT中断和RB口电平变化中断允MOVWF INTCON ;许BCF PIE2,CCP2IE ;CCP2中断禁止BSF PIE1,ADIE ;打开AD采样中断CLRF FLAG1 ;清标志位寄存器CLRF COUNT_VOL ;清电池电压采样计数器BSF T1CON,TMR1ON ;开CCP2,对手柄进行等间隔采样BSF T2CON,TMR2ON ;开CCP1RETEST BTFSS FLAG1,PWM ;TS采样完毕?GOTO NEXT1 ;没有,转NEXT1CALL OUT_PWM ;TS采样完毕,送出相应的PWM信号BCF FLAG1,PWM ;清PWM允许标志NEXT1 BTFSS FLAG1,LOWPOWER;电压采样完毕?GOTO NEXT2 ;没有转NEXT2CALL POWER ;是,调用电压保护子程序处理数据BTFSC FLAG1,OFF ;是否需要复位?GOTO MAIN ;是,单片机复位NEXT2 BTFSS FLAG1,SHUTDOWN;刹车中断到来?GOTO RETEST ;否,回转RETESTCALL BRAKEON ;是,调用刹车处理子程序CLRWDTBTFSC FLAG1,OFF ;OFF=0?GOTO MAIN ;否,单片机复位GOTO RETEST ;是,回转RETEST;*刹车处理子程序*BRAKEON BCF FLAG1,OFF ;清复位标志BCF FLAG1,SHUTDOWN;是,清相应标志位BTFSS PORTB,0 ;INT引脚仍为1?RETURN ;否,中断是由干扰引起的,返回BSF STATUS,RP0BCF PIE1,ADIE ;禁止AD采样中断BCF STATUS,RP0BCF INTCON,INTE ;关RB0中断MOVLW FULLPWM ;PWM输出全高MOVWF CCPR1LBCF T1CON,TMR1ON ;关闭手柄采样BREAK2 BTFSC ADCON0,GO ;正在进行AD采样?GOTO BREAK2 ;是,等待AD采样完毕BCF ADCON0,CHS0BCF ADCON0,CHS1 ;选择0采样通道,准备采样手柄电压BCF PIR1,ADIF ;清AD采样中断标志位MOVLW 0X06 ;延时MOVWF COUNTBREAK3 DECFSZ COUNTGOTO BREAK3BREAK5 BSF ADCON0,GO ;采样TS值BREAK4 BTFSS PIR1,ADIF ;采样完毕?GOTO BREAK4BCF PIR1,ADIFBCF STATUS,C MOVF ADRESH,0 ;当前TS值送被减数MOVWF ACCbHIBSF STATUS,RP0MOVF ADRESL,0BCF STATUS,RP0MOVWF ACCbLOMOVLW TSONH ;1.5 V所对应的采样值送减数MOVWF ACCaHIMOVLW TSONLMOVWF ACCaLOCALL D_sub ;当前TS值减1.5VMOVLW FULLPWMMOVWF CCPR1LCLRWDTBTFSS ACCbHI,7 ;当前电压值大于1.5V?GOTO BREAK5 ;是,重新采样BTFSC PORTB,0GOTO BREAK5BSF FLAG1,OFF ;否,置相应的标志位RETURN ;返回 ;*开环PWM输出子程序*OUT_PWM BCF FLAG1,PWM ;清相应的标志位MOVF TSH,0 ;将调速手柄采样值送至被加数MOVWF ACCaHIMOVF TSL,0MOVWF ACCaLOMOVLW 0XFF ;FF1F补码为0XE1,即1.1 VMOVWF ACCbHIMOVLW 0X1F MOVWF ACCbLOCALL D_addBTFSS ACCbHI,7 ;TS1.1V?GOTO PWM1 ;是,转PWM1MOVLW FULLPWM ;否则输出全高MOVWF CCPR1LRETURNPWM1 MOVLW 0XFD ;0X27B=3.1VMOVWF ACCbHIMOVLW 0X85MOVWF ACCbLOCALL D_addBTFSC ACCbHI,7 ;TS3.1V?GOTO PWM3PWM2 CLRF CCPR1LBCF CCP1CON,4BCF CCP1CON,5RETURNPWM3 MOVLW 0X0FF ;1.1 V对应的采样值补码送加数 MOVWF ACCbHI MOVLW 0X1FMOVWF ACCbLOCALL D_add ;TS-1.1VCLRF ACCaHI ;系数K=56=38H送乘数MOVLW 0X3FMOVWF ACCaLOCALL D_mpy ;得到放大128倍的低电平时间K*(TS-1.1V)MOVF ACCcHI,0 ;将结果取出MOVWF ACCaHIMOVF ACCcLO,0MOVWF ACCaLO MOVLW 0X64 ;PWM周期T减去低电平时间,得到高电平时间MOVWF ACCbHICLRF ACCbLO CALL D_sub BTFSC ACCbHI,7 ;低电平时间是否大于周期?GOTO PWM2 ;是,输出全压RLF ACCbLO ;否则,输出与低电平时间对应的高电平时间RLF ACCbHIMOVF ACCbHI,0 ;D10D2位送CCPR1LMOVWF CCPR1LBCF CCP1CON,5 ;D0位送CCP1CON5BTFSC ACCbLO,7BSF CCP1CON,5BCF CCP1CON,4 ;D.1位送CCP1CON4 BTFSC ACCbLO,6BSF CCP1CON,4RETURN ;返回;*刹车中断服务程序*BRAKE CALL PUSH ;保存现场BCF STATUS,RP0 ;回存储区0BSF FLAG1,SHUTDOWN;置相应标志位BCF INTCON,INTF ;清中断标志位CALL POP ;恢复现场RETFIE ;中断返回;*低电压保护处理子程序*POWER BCF FLAG1,LOWPOWER;清相应的标志位MOVF VOLTAGEH,0MOVWF ACCaHIMOVF VOLTAGEL,0MOVWF ACCaLOMOVLW VOLOFFHMOVWF ACCbHIMOVLW VOLOFFLMOVWF ACCbLOCALL D_subBTFSC ACCbLO,7 ;判断当前电池电压值是否低于保护电压(32V)RETURN ;不是,返回BCF INTCON,INTEBCF T1CON,TMR1ON ;关闭电流采样MOVLW FULLPWMMOVWF CCPR1LBSF STATUS,RP0BCF PIE1,ADIE ;禁止AD采样中断BCF STATUS,RP0POWER3 BTFSC ADCON0,GO ;正在进行AD采样?GOTO POWER3 ;是,等待AD采样完毕BCF PIR1,ADIF ;清AD采样中断标志位BCF ADCON0,CHS0BSF ADCON0,CHS1 ;选择电压采样通道MOVLW 0X06 ;延时等待通道转换完成MOVWF COUNTPOWER4 DECFSZ COUNTGOTO POWER4POWER6 BSF ADCON0,GO ;采样电池电压值POWER5 BTFSS PIR1,ADIF ;采样完毕?GOTO POWER5BCF PIR1,ADIF ;清AD中断标志位BCF STATUS,CMOVF ADRESH,0 ;当前电压值送被加数MOVWF ACCbHIBSF STATUS,RP0MOVF ADRESL,0BCF STATUS,RP0MOVWF ACCbLOMOVLW VOLONH ;35V电压值送被加数MOVWF ACCaHIMOVLW VOLONLMOVWF ACCaLOCALL D_sub ;当前电压值减35,与重开电压进行比较MOVLW FULLPWMMOVWF CCPR1LCLRWDTBTFSC ACCbHI,7 ;当前电压值大于35?GOTO POWER6 ;否,重新采样BSF FLAG1,OFF ;是,置相应的标志位RETURN ;返回;*电机转子位置采样子程序,状态采样子程序,出口地址:STATE1*SAMPLE MOVLW AND ;读RB口ANDWF PORTB,0 ;分离出有效信息MOVWF STATE1 ;暂存状态值MOVLW 0X08MOVWF DELAYDEL1 DECFSZ DELAY ;延时6 sGOTO DEL1MOVLW AND ;读RB口ANDWF PORTB,0 ;分离出有效信息,并暂存MOVWF STATE2XORWF STATE1,0 ;与上一次状态值相异或BTFSC STATUS,ZRETURN ;两个状态值相等则返回MOVLW 0X06 ;否则延时4 sMOVWF DELAYDEL2 DECFSZ DELAYGOTO DEL2MOVLW AND ;读RB口ANDWF PORTB,0 ;提取有效信息并暂存MOVWF STATE3XORWF STATE1,0 ;与第一次状态相同吗?BTFSC STATUS,ZRETURN ;相同则返回MOVF STATE2,0 ;否则再与第二次状态相比较XORWF STATE3,0BTFSS STATUS,Z GOTO SAMPLE ;三次状态均不相同则重新采样MOVF STATE2,0 ;第三次状态与第二次相同,则将正确状态赋予STATE1并MOVWF STATE1 ;返回RETURN;* MOSFET触发信号输出子程序*OUTPUT SWAPF STATE1,1 ;STATE1寄存器高低半字节互换BCF STATUS,C ;清C位,并将STATE1寄存器左移一位RRF STATE1,0 ;将采样所得结果放至W低三位CALL OUT_TABLE ;查表获得输出值MOVWF PORTC ;将输出值输出至RC口RETURN;* RB口电平变化中断服务程序*SAMPRB CALL PUSH ;现场保护 BCF STATUS,RP0CALL SAMPLE ;采样RB口状态CALL OUTPUT ;根据RB口状态触发相应的MOSFETCALL POP ;恢复现场BCF INTCON,RBIF ;清RB口电平变化中断标志RETFIE ;中断返回;* AD采样中断服务程序*AD CALL PUSH ;保护现场BTFSC FLAG1,VOLTAGE ;是电压采样?GOTO SET_VOL ;是,作相应的处理SET_TS BCF ADCON0,CHS0 ;AD采样值是TS,则选择1采样通道INCF COUNT_VOL ;电压采样周期寄存器值加1BTFSS STATUS,Z ;电压采样周期到?GOTO AD4BCF ADCON0,CHS0 ;是,选择2采样通道BSF ADCON0,CHS1BSF FLAG1,VOLTAGE ;置相应的标志位AD4 BCF PIR1,ADIF ;清AD中断标志MOVF ADRESH,0 ;采样值送寄存器暂存MOVWF TSHBSF STATUS,RP0MOVF ADRESL,0BCF STATUS,RP0MOVWF TSLBSF FLAG1,PWMBTFSS FLAG1,VOLTAGE ;是否需要进行电压采样?GOTO AD6MOVLW 0X05 ;是,延时后采样电压MOVWF TEMP1AD5 DECFSZ TEMP1GOTO AD5BSF ADCON0,GOAD6 CALL POP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山东高考化学试题(解析版)
- 销售工作题目大全及答案
- 葡萄酒盲品知识培训
- 2025联名合伙合同书范本版
- 2025高考物理试题分类汇编:万有引力与宇宙航行(解析版)
- 2025综合雇佣合同范本
- 2025-2026学年人教版六年级数学上册应用题平均数问题专项练习题【含答案】
- 物业安全操作试题及答案
- 2025车辆买卖协议合同
- 2025年公共自行车锁车器设备项目合作计划书
- 小学班级培优辅差课后服务计划
- 火力发电原理课件
- 学校五常法管理制度
- 2025年七一党课-作风建设永远在路上学习教育党课
- 国际托育政策比较-洞察及研究
- 武术五步拳教学课件
- T/HQPA 5-2019防倾覆弹性滑板支座
- 茶馆承包协议书
- 93阅兵仪式观后感400字(9篇)
- 产后出血护理授课课件
- 行动研究的历史演变、思想内涵及实践意义
评论
0/150
提交评论