资源描述:
《直流无刷电机控制PIC程序》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、资料#include//2008.4.24--14点00分#include#includeintcharge_delay,jm,lkk,trial,run_num,protect_num;charm,n,k,s,L,tri;charhall_num;//循环次数charhall_number;//1+3+2+10+8+9=33(一个循环和),hallless_protect()intpwm_hi;//pwm占空比上限intpwm_cycle;//pwm周期intpwm_lo;//pwm占空比下限,由
2、A/D结果确定intpwm_real;//pwm占空比实际intad_result;//A/D转换结果bitghy,run_flag;//运行标志---0,未运行,停止bitflag_autohand;//开始为-----自动voiddelay(delay_num)intdelay_num;{intj;for(j=delay_num;j>1;j--){asm("nop");}}unionadres{inty1;unsignedcharadre[2];}adresult;voidpara_chushihua(){protect_num=0;trial=0b10
3、110000;tri=0x00;lkk=10;hall_num=0x00;hall_number=0x00;run_flag=0;//运行标志---0,未运行,停止flag_autohand=1;//开始为-----自动pwm_cycle=240;//pwm周期//pwm_hi=pwm_cycle-5;//pwm占空比上限pwm_hi=pwm_cycle-1;//pwm占空比上限pwm_real=pwm_cycle;//实际pwm占空比为pwm周期上限pwm_lo=0x0A;//设定下限++++++++++++++++++++++++++++++++++++
4、+++++++++++}voidnointerupt_chushihua(){INTCON=0X00;//禁止中断}.资料voidIo_chushihua(){//ADCON1=0x8e;//RA0/AN0--VOLTAGE电压采样,右对齐1ADCON1=0x86;//设定RA0--RA6设定为I/O口;TRISA=0x09;//RA0---PROTECT保护(电流保护和过温保护)--输出,0--不保护,1--保护;//RA1----PSW1,继电器,输出,0,电源接通//RA2----指示灯,输出0--->>//RA3----按键,加,输入1//RA4--
5、--指示灯,输出0--->>//RA5----RSW1,继电器,输出0,软启充电PORTA=PORTA&0x09;//RA1=0,----输出低电平,PSW1,继电器断//RA2=0,----输出低电平,指示灯灭//RA4=0,----输出低电平,指示灯灭//RA5=0,----输出低电平,RSW1,继电器断RBPU=0;//RB端口内部弱上拉电路禁止TRISB=0xfe;//RB7=1,空----输入//RB6=1----HA,输入//RB5=1----HB,输入//RB4=1----HC,输入//RB3=1----停,输入,按钮//RB2=1----启,
6、输入,按钮//RB1=1----自/手选择,输入,开关//RB0=0----ST/STOP,输出,控制GALPORTB=PORTB&0xfe;//RB0=0,----输出低电平,禁止GAL输出TRISC=0x02;//RC7---A1+,PWMA1+,输出0//RC6---A1,输出0//RC5---B1+,输出0//RC4---B1,输出0//RC3---C1+,输出0//RC2---CCP1(PWM),输出,死区0//RC1----减,输入,按钮1//RC0---C1,输出0PORTC=0x06;}voidprotect(){//过流和过温保护GIE=0
7、;//关全局中断pwm_real=pwm_hi;//PWM_real----PWM实时值CCPR1L=pwm_real;//设置PWM输出为最大CCPR1H=0x00;//CCP1CON=0x0c;//CCP1选择为PWM工作方式PR2=pwm_cycle;//设置PWM的周期TRISC=TRISC&0xfb;//设置RC2---PWM输出T2CON=0x00;//分频系数=0x00TMR2ON=1;//启用TMR2PORTC=0x00;//PORTB=PORTB&0xfe;//RB0=0,----输出低电平,禁止GAL输出.资料while(1){PORTA
8、^=0b00010100;delay(15000);