小车直立程序.doc

上传人:仙人指路1688 文档编号:2954998 上传时间:2023-03-05 格式:DOC 页数:7 大小:24.50KB
返回 下载 相关 举报
小车直立程序.doc_第1页
第1页 / 共7页
小车直立程序.doc_第2页
第2页 / 共7页
小车直立程序.doc_第3页
第3页 / 共7页
小车直立程序.doc_第4页
第4页 / 共7页
小车直立程序.doc_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《小车直立程序.doc》由会员分享,可在线阅读,更多相关《小车直立程序.doc(7页珍藏版)》请在三一办公上搜索。

1、#include /* common defines and macros */#include /* derivative information */#include #include #include #pragma LINK_INFO DERIVATIVE mc9s12xs128 uchar i=0; char k,z=0; float fP, fI; void delay(unsigned int h) unsigned int j,tk; for(tk=0;tkh;tk+) for(j=0;j100;j+); /设置时钟 24mvoid pllclk(void)/24MHz ,外部

2、时钟为 16MHzCLKSEL=0X00;PLLCTL=0xe1;SYNR=0xc7;/PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)REFDV=0x81;PLLCTL=0X60;asm NOP;asm NOP;asm NOP;while(CRGFLG&0X08)=0);/ 时钟校正同步CLKSEL=0X80;/设置中断5msvoid initPIT(void)/ 定时中断初始化函数 50MS 定时中断设置PITCFLMT_PITE=0; / 定时中断通道 0 关PITCE_PCE0=1;/ 定时器通道 0 使能PITMTLD0=160-1;/逼鞒踔瞪瓒?240

3、 分频,在 24MHzBusClock 下,为 0.1M/即10us.PITLD0=2000-1;/16 位定时器初值设定。 PITTIME*0.01MSPITINTE_PINTE0=1;/ 定时器中断通道 0 中断使能PITCFLMT_PITE=1;/ 定时器通道 0 使能/ad初始化void ADC_Init(void) /printf(ADC_Initn); ATD0CTL1=0x40; /7:1-外部触发,65:00-8位精度,4:放电,3210:ch ATD0CTL2=0x40; /禁止外部触发, 中断禁止 ATD0CTL3=0xC0; /右对齐无符号,每次转换8个序列, No FI

4、FO, Freeze模式下继续转 ATD0CTL4=0x05; /765:采样时间为4个AD时钟周期,ATDClock=BusClock*0.5/PRS+1 ATD0CTL5=0x20; /6:0特殊通道禁止,5:1连续转换 ,4:1多通道轮流采样 ATD0DIEN=0x00; /禁止数字输入 /pwm初始化void PWM() PWMPRCLK=0X11; /对总线时钟进行预分频,总线时钟为 8M,分频后为500K PWMCLK=0x0f; /设 sA sb为其时钟源 PWMSCLA=0X05; PWMSCLB=0X05; /A时钟为 2000Hz PWMPOL=0X00;/上升沿翻转 PW

5、MCAE=0X00;/左对齐输出 PWMPER0=0XF0; PWMPER1=0XF0; PWMPER2=0XF0; PWMPER3=0XF0; PWMCNT0=0X00;/0通道计数器清 0 PWMCNT2=0X00; int getad(char m) int ad; ATD0CTL5=(0X20+m); while(!ATD0STAT0_SCF); switch(m) case 0:ad=ATD0DR0; case 1:ad=ATD0DR1; case 2:ad=ATD0DR2; case 3:ad=ATD0DR3; case 4:ad=ATD0DR4; return ad;float

6、filter(char n) float sum = 0; char count; int jieguo; for ( count=0;count0) / PORTB_PB3=1; /else /PORTB_PB3=0; g_nSpeedControlCount +; if(g_nSpeedControlCount=20) SpeedControl();待添加的隐藏文字内容3 g_nSpeedControlCount = 0; pouty=carangle*32+gry*1.4-fP-cha;poutz=carangle*32+gry*1.4-fP+cha;dianjiy=(int)pouty

7、; dianjiz=(int)poutz;PWME=0x00; if(dianjiy0) k=1; if(carangle30) dianjiy=0; if(dianjiy240) dianjiy=240; PWMDTY1=240-dianjiy; PWMDTY0=240; else k=-1; if(carangle-30) dianjiy=0; if(dianjiy0) k=1; if(carangle30) dianjiz=0; if(dianjiz240) dianjiz=240; PWMDTY2=240-dianjiz; PWMDTY3=240; else k=-1; if(carangle-30) dianjiz=0; if(dianjiz-240) dianjiz=-240; PWMDTY2=240; PWMDTY3=240+dianjiz; PWME=0X0f; i=0; #pragma CODE_SEG _NEAR_SEG NON_BANKED void interrupt 66 PIT0(void) i+ ;z+;PITTF_PTF0=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号