小车直立程序.doc_第1页
小车直立程序.doc_第2页
小车直立程序.doc_第3页
小车直立程序.doc_第4页
小车直立程序.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

#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 ,外部时钟为 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 分频,在 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 fifo, 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;/上升沿翻转 pwmcae=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 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(); g_nspeedcontrolcount = 0; pouty=carangle*32+gry*1.4-fp-cha;poutz=carangle*32+gry*1.4-fp+cha;dianjiy=(int)pouty; 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

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论