智能车制作

标题: 为什么我这个程序下到xs128运行时老是复位,其他的运行正常,请高手指点。。。。。 [打印本页]

作者: 年轻的时候    时间: 2013-1-17 15:47
标题: 为什么我这个程序下到xs128运行时老是复位,其他的运行正常,请高手指点。。。。。
/*******************************************************************************
试验目的:利用定时器溢出中断产生脉冲周期,利用通道6输出比较产生不同脉宽的波形,
但此方法产生的波形其周期不能改变。
********************************************************************************/
#include <hidef.h>      /* common defines and macros  */
#include "derivative.h"      /* derivative-specific definitions */
unsigned int counter=0;
//----------------------时钟初始化------------------------------//
void PLL_Init(void)      //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                                  //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;            //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}
//--------------------定时器初始化------------------//
void ECT0_Init(void)
{
    TSCR2=0x82;         //开定时器溢出中断 并对总线时钟 24M / 4
    TIOS=0x40;            //设定pt6输出比较口
    TCTL1=0x30;         //设置OC6输出置1
    TC6=0x3333;          //设置比较初值13107(65536是溢出)
    TTOV=0x40;           //允许通道6溢出触发比较(通道7无效)
    TSCR1=0x80;         //定时器使能位
    TIE=0x00;               //关闭所有的输入捕获/输出比较中断
}
void main(void)
{
    DisableInterrupts;     //关总中断
    PLL_Init();  
    ECT0_Init();
    EnableInterrupts;      //开总中断
    for(  ;  ;  )
     {
     }
}
/******************溢出中断函数******************************/
#pragma CODE_SEG NON_BANKED
void interrupt 14 Timer0_Onput(void)
{
    TFLG2_TOF=1;              //清除溢出中断标志
    counter++;
    if(counter==100)
        TC6=0x8888;                //重置比较初值34952(65536是溢出)
    if(counter==200)
        TC6=0xcccc;              //重置比较初值52428(65536是溢出)
    if(counter==300)            
        TC6=0xfeee;               //重置比较初值65262(65536是溢出)
    if(counter>=400)
        counter=0;
}

作者: zangfan    时间: 2013-1-17 17:11
直接用pwm啊
作者: 写轮无语    时间: 2013-1-17 19:39
该背时




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