智能车制作

标题: 求PIT模块编程范例 [打印本页]

作者: dragon3040    时间: 2010-5-31 21:50
标题: 求PIT模块编程范例
急求PIT模块编程范例!!!!!!
请哪位大侠帮忙。。。。。
作者: 1119126a    时间: 2010-5-31 22:55
百度上有
作者: 1119126a    时间: 2010-5-31 22:55
百度上有
作者: 1119126a    时间: 2010-5-31 22:56
百度上有
作者: chenrunshe_007    时间: 2010-5-31 23:40
回复 1# dragon3040
本版块就有。
作者: dragon3040    时间: 2010-6-1 11:37
回复 5# chenrunshe_007


    请求赐教
作者: dragon3040    时间: 2010-6-1 11:37
回复 2# 1119126a


    仁兄能否赐教?
作者: chenrunshe_007    时间: 2010-6-2 23:53
回复 6# dragon3040
板块里面有你就自己找去,不会连这点能力都没有吧?
作者: jiaodoushidw    时间: 2010-6-13 12:06
呵呵,大家多交流,共同学习啦
作者: KAI990610    时间: 2011-10-19 21:08
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */




uchar count;

//*****************************************************************************************
//函 数 名:void PLL_Init(void)
//输    入:无
//输    出:无
//全局变量:无
//功能描述:锁相环倍频  初始化设置
//说    明:FPLLCLK=80MHz;  BusCLK=1/2PLLCLK=40MHZ
//程 序 员:
//时    间:2011年10月
//*****************************************************************************************
void PLL_Init(void)
{
    CLKSEL_PLLSEL=0;     //选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
    PLLCTL_PLLON =0;     // 首先禁止锁相环等设置完毕在打开 当PLLCTL_PLLON=0时,关闭PLL电路。当PLLCTL_PLLON=1时,打开PLL电路。
    SYNR         =9;
    REFDV        =3;     //总线频率40M
    POSTDIV      =0x00;  //POSTDIV=0x00=0,则FPLL=FVCO=PLLCLK,
                         //所以PLLCLK=FVCO=2*16*(1+9)/(1+3)=80MHz;;
    //SYNR值   计算公式 POSTDIV=0x00=0,则FPLL=FVCO=PLLCLK
    //(pll clk时钟频率   Busclk总线频率)
    //REFDV值  pllclock=2*osc*(1+SYNR)/(1+REFDV) Busclk=pllcolock/2;                        
    PLLCTL_PLLON=1;     //设置完毕打开锁相环电路   
    _asm(nop);
    _asm(nop);         
    while(!CRGFLG_LOCK); //锁相环已经锁定了吗?没有就等待
    CLKSEL_PLLSEL=1;     //锁相环电路稳定饿了 选用锁相环
}

//*****************************************************************************************
//函 数 名:void PIT_Init(void)
//输    入:无
//输    出:无
//全局变量:无
//功能描述:PIT初始化
//说    明:TIME=(PITMTLD+1)*(PITLD+1)/FbusCLK= 200*PITLD0/40M=240*5000/12M=0.05S
//程 序 员:夏凯
//时    间:2011年10月
//*****************************************************************************************
void PIT_Init(void)
{
PITCFLMT_PITE=1;   //使能PIT
PITCE_PCE0=0;      //禁止定时器通道0
PITMTLD0=200-1;    //8位定时器初值设定。
PITLD0=10000-1;    //8位定时器初值设定.
PITMUX_PMUX0=0;    //16位定时器通道0与微定时器0相连
PITINTE_PINTE=1;   //定时器通道0中断使能
PITCE_PCE0=1;      //定时器通道0使能
}

void main(void) {
  /* put your own code here */
  DisableInterrupts;
  PLL_Init();
  PIT_Init();
        EnableInterrupts;
  DDRB=0XFF;
  PORTB=0XFF;
  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void  interrupt 66  PIT_INT()
{
  count++;
  PITTF_PTF0=1; //清中断标志位 写1清0
  if(count==20) //1S
  {
   PORTB=~PORTB;
   count=0;
  }

}
作者: KAI990610    时间: 2011-10-19 21:09
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */




uchar count;

//*****************************************************************************************
//函 数 名:void PLL_Init(void)
//输    入:无
//输    出:无
//全局变量:无
//功能描述:锁相环倍频  初始化设置
//说    明:FPLLCLK=80MHz;  BusCLK=1/2PLLCLK=40MHZ
//程 序 员:
//时    间:2011年10月
//*****************************************************************************************
void PLL_Init(void)
{
    CLKSEL_PLLSEL=0;     //选择时钟源为外部晶振OSCCLK,在PLL程序执行前,内部总线频率为OSCCLK/2。
    PLLCTL_PLLON =0;     // 首先禁止锁相环等设置完毕在打开 当PLLCTL_PLLON=0时,关闭PLL电路。当PLLCTL_PLLON=1时,打开PLL电路。
    SYNR         =9;
    REFDV        =3;     //总线频率40M
    POSTDIV      =0x00;  //POSTDIV=0x00=0,则FPLL=FVCO=PLLCLK,
                         //所以PLLCLK=FVCO=2*16*(1+9)/(1+3)=80MHz;;
    //SYNR值   计算公式 POSTDIV=0x00=0,则FPLL=FVCO=PLLCLK
    //(pll clk时钟频率   Busclk总线频率)
    //REFDV值  pllclock=2*osc*(1+SYNR)/(1+REFDV) Busclk=pllcolock/2;                        
    PLLCTL_PLLON=1;     //设置完毕打开锁相环电路   
    _asm(nop);
    _asm(nop);         
    while(!CRGFLG_LOCK); //锁相环已经锁定了吗?没有就等待
    CLKSEL_PLLSEL=1;     //锁相环电路稳定饿了 选用锁相环
}

//*****************************************************************************************
//函 数 名:void PIT_Init(void)
//输    入:无
//输    出:无
//全局变量:无
//功能描述:PIT初始化
//说    明:TIME=(PITMTLD+1)*(PITLD+1)/FbusCLK= 200*PITLD0/40M=240*5000/12M=0.05S
//程 序 员:夏凯
//时    间:2011年10月
//*****************************************************************************************
void PIT_Init(void)
{
PITCFLMT_PITE=1;   //使能PIT
PITCE_PCE0=0;      //禁止定时器通道0
PITMTLD0=200-1;    //8位定时器初值设定。
PITLD0=10000-1;    //8位定时器初值设定.
PITMUX_PMUX0=0;    //16位定时器通道0与微定时器0相连
PITINTE_PINTE=1;   //定时器通道0中断使能
PITCE_PCE0=1;      //定时器通道0使能
}

void main(void) {
  /* put your own code here */
  DisableInterrupts;
  PLL_Init();
  PIT_Init();
        EnableInterrupts;
  DDRB=0XFF;
  PORTB=0XFF;
  for(;;) {
    _FEED_COP(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave main */
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED
void  interrupt 66  PIT_INT()
{
  count++;
  PITTF_PTF0=1; //清中断标志位 写1清0
  if(count==20) //1S
  {
   PORTB=~PORTB;
   count=0;
  }

}
作者: 卫鹏飞    时间: 2011-12-19 21:42
en ,收获不小。。。
作者: 篪骋    时间: 2011-12-19 23:59





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