智能车制作
标题:
为什么我这个程序下到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://111.231.132.190/)
Powered by Discuz! X3.2