单片机控制的电动自行车驱动系统部分程序..doc
文本预览下载声明
单片机控制的电动自行车驱动系统部分程序(CHUNTIAN)单片机控制的电动自行车驱动系统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 ? ;ACCa~ACCd为运算用的寄存器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为输
显示全部