当前位置:首页 > 嵌入式 > 嵌入式教程
[导读]16F876控制的电动自行车驱动系统源程序(1)

;16F876控制电动自行车驱动系统源程序.

;没有锁闭环程序。

LIST P=16F876

#INCLUDE P16F876.INC

;以下采用块定义的方法定义单片机内部寄存器

CBLOCK 0X20 ;自定义寄存器从0X20开始

FLAG1 ;FLAG1作为标志寄存器

VOLTAGEH ;电池电压高位寄存器

VOLTAGEL ;电池电压低位寄存器

TSH ;手柄电压高位寄存器

TSL ;手柄电压低位寄存器

STATE1 ;霍尔信号采样暂存器1

STATE2 ;霍尔信号采样暂存器2

STATE3 ;霍尔信号采样暂存器3

DELAY ;延时计数器

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 V

CONSTANT VOLOFFL=0X4A

CONSTANT VOLONH=0X02 ;当电池电压大于266H时,允许电机重开3V/33V

CONSTANT VOLONL=0X66

CONSTANT TSONH=0X01 ;刹车后手柄复位值低于133H,则允许电机重新启动

CONSTANT TSONL=0X33

;***复位矢量入口(单片机复位时,PC指针指向程序存储器0X0000单元)***

ORG 0X0000

START 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,1

RETLW 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 PORTC

BSF STATUS,RP0 ;选择存储体1

MOVLW 0X02 ;设置RC1为输入口,其它为输出口,其中RC2为PWM

MOVWF TRISC ;输出口,其它位为触发信号输出

BCF STATUS,RP0 ;选择存储体0

CLRF PIR1 ;清所有中断标志位

CLRF INTCON ;禁止所有中断

MOVLW 0X01 ;设置TMR2预分频值为4

MOVWF T2CON

MOVLW FULLPWM ;初始化PWM工作循环寄存器,使PWM占空比为1

MOVWF CCPR1L ;输出电压为零

MOVLW 0XFF ;设置CCP1工作于PWM方式

MOVWF CCP1CON

MOVLW 0X0B ;CCP2工作于特殊事件触发方式,用作AD采样周期寄存

MOVWF CCP2CON ;器

MOVLW 0X081 ;选择AD转换时钟为32分频,选择AN0通道,并使AD

MOVWF ADCON0 ;转换允许

CLRF TMR2 ;TMR2计数器清零

CLRF TMR1H ;TMR1计数器清零

CLRF TMR1L

CLRF T1CON ;TMR1预分频为1,关闭振荡器,工作于定时工作方式

MOVLW 0X08 ;初始化AD采样周期寄存器,T=512 μs

MOVWF CCPR2H

MOVLW 0X00

MOVWF CCPR2L

BSF STATUS,RP0 ;选择存储体1

MOVLW 0XEF ;RB口高3位用于采样霍尔信号,RB0为刹车中断,设置为

MOVWF TRISB ;输入,其它未用

MOVLW 0XC7 ;初始化PWM频率为5 kHz

MOVWF PR2

MOVLW 0X082 ;AD采样结果右移,RA口引脚均为模拟输入

MOVWF ADCON1

BSF OPTION_REG,INTEDG ;选择INT在下降沿产生中断

BCF STATUS,RP0

CALL SAMPLE ;确定当前转子位置

CALL OUTPUT ;根据采得的状态值触发相应的MOSFET

MOVLW 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 ;没有,转NEXT1

CALL OUT_PWM ;TS采样完毕,送出相应的PWM信号

BCF FLAG1,PWM ;清PWM允许标志NEXT1

BTFSS FLAG1,LOWPOWER;电压采样完毕?

GOTO NEXT2 ;没有转NEXT2

CALL POWER ;是,调用电压保护子程序处理数据

BTFSC FLAG1,OFF ;是否需要复位?

GOTO MAIN ;是,单片机复位NEXT2

BTFSS FLAG1,SHUTDOWN;刹车中断到来?

GOTO RETEST ;否,回转RETEST

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中断

MOVLW FULLPWM ;PWM输出全高

MOVWF CCPR1L

BCF T1CON,TMR1ON ;关闭手柄采样BREAK2

BTFSC ADCON0,GO ;正在进行AD采样?

GOTO BREAK2 ;是,等待AD采样完毕

BCF ADCON0,CHS0

BCF ADCON0,CHS1 ;选择0采样通道,准备采样手柄电压

BCF PIR1,ADIF ;清AD采样中断标志位

MOVLW 0X06 ;延时

MOVWF COUNTBREAK3

DECFSZ COUNT

GOTO BREAK3BREAK5

BSF ADCON0,GO ;采样TS值BREAK4

BTFSS PIR1,ADIF ;采样完毕?

GOTO BREAK4

BCF PIR1,ADIF

BCF STATUS,C

MOVF ADRESH,0 ;当前TS值送被减数

MOVWF ACCbHI

BSF STATUS,RP0

MOVF ADRESL,0

BCF STATUS,RP0

MOVWF ACCbLO

MOVLW TSONH ;1.5 V所对应的采样值送减数

MOVWF ACCaHI

MOVLW TSONL

MOVWF ACCaLO

CALL D_sub ;当前TS值减1.5V

MOVLW FULLPWM

MOVWF CCPR1L

CLRWDT

BTFSS ACCbHI,7 ;当前电压值大于1.5V?

GOTO BREAK5 ;是,重新采样

BTFSC PORTB,0

GOTO BREAK5

BSF FLAG1,OFF ;否,置相应的标志位

RETURN

;返回

;***************开环PWM输出子程序****************

OUT_PWM

BCF FLAG1,PWM ;清相应的标志位

MOVF TSH,0 ;将调速手柄采样值送至被加数

MOVWF ACCaHI

MOVF TSL,0

MOVWF ACCaLO

MOVLW 0XFF ;FF1F补码为0XE1,即1.1 V

MOVWF ACCbHI

MOVLW 0X1F

MOVWF ACCbLO

CALL D_add

BTFSS ACCbHI,7 ;TS>1.1V?

GOTO PWM1 ;是,转PWM1

MOVLW FULLPWM ;否则输出全高

MOVWF CCPR1L

RETURN

PWM1

MOVLW 0XFD ;0X27B=3.1V

MOVWF ACCbHI

MOVLW 0X85

MOVWF ACCbLO

CALL D_add

BTFSC ACCbHI,7 ;TS>3.1V?

GOTO PWM3PWM2

CLRF CCPR1L

BCF CCP1CON,4

BCF CCP1CON,5

RETURN

PWM3

MOVLW 0X0FF ;1.1 V对应的采样值补码送加数

MOVWF ACCbHI

MOVLW 0X1F

MOVWF ACCbLO

CALL D_add ;TS-1.1V

CLRF ACCaHI ;系数K=56=38H送乘数

MOVLW 0X3F

MOVWF ACCaLO

CALL D_mpy ;得到放大128倍的低电平时间K*(TS-1.1V)

MOVF ACCcHI,0 ;将结果取出

MOVWF ACCaHI

MOVF ACCcLO,0

MOVWF ACCaLO

MOVLW 0X64 ;PWM周期T减去低电平时间,得到高电平时间

MOVWF ACCbHI

CLRF ACCbLO

CALL D_sub

BTFSC ACCbHI,7 ;低电平时间是否大于周期?

GOTO PWM2 ;是,输出全压

RLF ACCbLO ;否则,输出与低电平时间对应的高电平时间

RLF ACCbHI

MOVF ACCbHI,0 ;D10~D2位送CCPR1L

MOVWF CCPR1L

BCF CCP1CON,5 ;D0位送CCP1CON5

BTFSC ACCbLO,7

BSF CCP1CON,5

BCF CCP1CON,4 ;D.1位送CCP1CON4

BTFSC ACCbLO,6

BSF CCP1CON,4

RETURN

;返回

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭