注册会员
- 积分
- 163
- 威望
- 93
- 贡献
- 40
- 兑换币
- 44
- 注册时间
- 2012-11-2
- 在线时间
- 15 小时
- 毕业学校
- 成都大学
|
/*******************************************************************************
试验目的:利用定时器溢出中断产生脉冲周期,利用通道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;
}
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|