智能车制作

标题: T0怎么用不了? [打印本页]

作者: 二笑不过    时间: 2012-5-29 15:28
标题: T0怎么用不了?
我用的芯片是dp512,不知道怎么搞的,一开始设置的PACB能用,T0能正确计数,不知道怎么搞的,什么参数都没改,昨天T0又不计数了。我的代码如下,请高手指点一下看看是什么情况?
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define LEDCPU PORTK_BIT4
#define LEDCPU_dir DDRK_BIT4
#define  BUS_CLOCK     32000000    //总线频率
#define  OSC_CLOCK     16000000    //晶振频率
unsigned int data1,data2;
unsigned int pulsenum;
unsigned int i;
/*************************************************************/
/*                      初始化锁相环                         */
/*************************************************************/
void INIT_PLL(void)
{
    CRGINT = 0;                  //关中断
    CLKSEL_PLLSEL = 0;           //在未初始化PLL前不使用PLL的输出作为CPU时钟
   
  #if(BUS_CLOCK == 40000000)
    SYNR = 4;
  #elif(BUS_CLOCK == 32000000)
    SYNR = 3;     
  #elif(BUS_CLOCK == 24000000)
    SYNR = 2;
  #endif
    REFDV = 1;                   //PLLCLK=2×OSCCLK×(SYNR+1)/(REFDV+1)=64MHz ,fbus=32M
    PLLCTL_PLLON = 1;            //开PLL
    PLLCTL_AUTO = 1;             //选取自动模式
    while (CRGFLG_LOCK == 0);    //等待PLL锁定频率
    CLKSEL_PLLSEL = 1;           //选择系统时钟由PLL产生
}
/************************************************************/
/*                    初始化ECT模块                         */
/************************************************************/
void initialize_ect(void){
  TSCR1_TFFCA = 1;  // 定时器标志位快速清除
  TSCR1_TEN = 1;    // 定时器使能位. 1=允许定时器正常工作; 0=使主定时器不起作用(包括计数器)
  TIOS  = 0xf0;      //指定所有通道为输出比较方式
  TCTL1 = 0x00;     // 后四个通道设置为定时器与输出引脚断开
  TCTL2 = 0x00;     // 前四个通道设置为定时器与输出引脚断开
  DLYCT = 0x00;     // 延迟控制功能禁止
  ICOVW = 0x00;     // 对应的寄存器允许被覆盖;  NOVWx = 1, 对应的寄存器不允许覆盖
  ICSYS = 0x00;     // 禁止IC及PAC的保持寄存器
  TIE   = 0x00;     // 禁止所有通道定时中断
  TSCR2 = 0x07;     // 预分频系数pr2-pr0:111,,时钟周期为4us,
  TFLG1 = 0xff;     // 清除各IC/OC中断标志位
  TFLG2 = 0xff;     // 清除自由定时器中断标志位
}
/*************************************************************/
/*                      初始化累加器                         */
/*************************************************************/
void INIT_PAI(void)
{
  
  PBCTL = 0x40;      //始能B脉冲累加器
  TCTL4=0X02;     //捕捉下降沿
  PACN10=0x00;
}
  
/*************************************************************/
/*                         主函数                            */
/*************************************************************/
void main(void) {
  DisableInterrupts;
  INIT_PLL();
    INIT_PAI();
  initialize_ect();
  LEDCPU_dir = 1;
  EnableInterrupts;
  LEDCPU = 0;
  
  TFLG1_C0F = 1;
  TC0 = TCNT+62500;     //时间间隔为0.25s
  
  for(;;)
  {
    for(i=0;i<4;i++)          //延时1秒
    {
        while(TFLG1_C0F == 0);
        TFLG1_C0F = 1;
        TC0 = TCNT+62500;
    }
    data1 = data2;
    data2 = PACN10;
    pulsenum = data2-data1;   //计算1秒钟采集的上升沿的数量
  }
}


作者: tbsweiwei2010    时间: 2012-12-21 18:51
赶紧准备期末考试啊。。




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