智能车制作

标题: xs128测速程序 [打印本页]

作者: ghae    时间: 2011-3-16 22:15
标题: xs128测速程序
#include<hidef.h>
                   #include<mc9s12xs128.h>
                   #pragma LINK_INFO DERIVATIV"mc9s12xs128b"
                   #define PITTIME 2000//设定为10毫秒定时
                    uchar count=0,m;
                    void setbusclock(void)//32MHZ外部时钟为16MHZ
                   {
                    CLKSEL=0X00;//
                    PLLCTL_PLLON=1;//打开时钟
                    SYNR=0X40|0X03;
                    REFDV=0X80|0X01;
                              //SYNR=1;//PLLCLK=2*FOSC*(SYNR+1)/(REFDV+1)
                              //REFDV=1;
                    POSTDIV=0X00;//4:0,FPLL=FVCO/(2XPOSTDIV)
                    _asm(nop);//BUS CLOCK=16M
                    _asm(nop);
                    while(!(CRGFLG_LOCK));//WHEN PLL IS STEADY ,THEN USE IT
                    CLKSEL_PLLSEL=1;//engage PLL system;
                               }  
               


                   void PIT_Init(void)//定时中断初始化函数10MS定时中断设置
              {
                 PITCFLMT_PITE=1;
                 PITFLT=1;
                 PITCE=1;
                 PITINTE=1;
                 PITMTLD0=160-1;
                 PITLD0=PITTIME-1;
                          }
                            void PWM_Init(void)
            {
                 PWMPOL=0X20;//脉冲先高后低
                 PWMCLK=0X20;//使用SA时钟源
                 PWMPRCLK=0X07;//时钟A为总线8分频
                 PWMCAE=0X00;//通道5为左对齐输出模式
                 PWMCTL=0X00;//单独使用通道5
                 PWMSCLA=0X05;//clockSA=clockA/(2*PWMSCLA)为3KHZ
                 PWMPER5=0X64;//设定周期
                                }
                    void Init_PT4_Capture()
              {
         
                  TIOS=0x00;          //输入捕捉
                  TCTL3=0x02;         //通道4下降沿触发
                  TSCR2=0X07;         //分频,用来给TCNT作时间参考,这里没有意义
   
                  TSCR1=0x80;         //Timer Enable
                  TIE=0X10;           //初始化定时器开启
                                  }   
     
                   void main(void)
              {
                 PACTL_PAEN=1;
                 DisableInterrupts;
                               //setbusclock();

                 PIT_Init();
                 PWM_Init();
                 Init_PT4_Capture();
  
                 for(;;)  ;

                            }
                 #pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区
                 void interrupt 66 PIT0_ISR(void)                        
             {           
                                                                                          
                        }




    不知道对不对,谁懂的帮我改改谢谢!!!!
作者: junjun1990    时间: 2011-4-18 19:04
学习下~~~
作者: 龙游天下明    时间: 2012-2-17 13:29

作者: w1u1l1i1    时间: 2012-2-20 14:18
由“ #define PITTIME 2000”怎么确定“设定为10毫秒定时”???求大侠帮助

作者: w1u1l1i1    时间: 2012-2-20 14:19
由“ #define PITTIME 2000”怎么确定“设定为10毫秒定时”???求大侠解释

作者: 仿佛兮    时间: 2012-3-4 20:50
BusClock/八位定时器的值,你的是PITMTLD0,得到的周期乘上十六位定时器值,你的是PITLD0,得出时间就是你定时的时间
作者: 欤緈諨侑染    时间: 2012-4-7 09:42
w1u1l1i1 发表于 2012-2-20 14:18
由“ #define PITTIME 2000”怎么确定“设定为10毫秒定时”???求大侠帮助

可以随便设定的 在0~65536之间的数值
作者: w1u1l1i1    时间: 2012-4-8 21:24
欤緈諨侑染 发表于 2012-4-7 09:42
可以随便设定的 在0~65536之间的数值

但是那个10ms怎么算出来的啊?求教
作者: luomusic    时间: 2013-6-26 09:32
用PA模块呀




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2