#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
#define LED1 P1_0
void InitLed(void)
{
P1DIR |= 0x01;
LED1 = 1; //默认灭
}
void InitT1()
{
CLKCONCMD &=~0x40; //设置系统时钟源为32MHZ晶振
while(CLKCONSTA & 0x40); //等待晶振为32M
CLKCONCMD &= ~0x07; //设置系统主时钟频率为32MHZ
CLKCONCMD = 0x38; //时钟速度32MHz,设置定时器所分频率为[5:3]250KHZ
PERCFG |= 0x40; //选择定时器1映射的IO口位置,选择备用位置2,映射的IO口就是P1_0
P2SEL &= ~0x10; //设置优先级,定时器1优先
P2DIR |= 0xC0; //设定第1优先级:定时器1通道2-3
P1DIR |= 0xff; //设置P1_0为输出
P1SEL |= 0x01; //P1_0配置为外设功能对应定时器1
T1CC2H = 0x00; //T1CC2H为T1CCO的高位,T1CC2L为T1CCO的低位 20%占空比为200us
T1CC2L = 0x32; //修改T1CC2L可调整占空比,可调整LED1的亮度
T1CC0H = 0x00; // 1ms的时钟周期,频率为976.516Hz
T1CC0L = 0xff; //
T1CCTL2 = 0x1c; //设置模式 通道2比较模式
T1CTL = 0x02; //频率250KHz 8分频
}
void Delay_us(uint n)
{
/* while(t--)
{
asm("NOP");
asm("NOP");
asm("NOP");
}
*/
uint i;
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
for(i=0;i<n;i++);
}
void main(void)
{
InitLed();
InitT1();
uint a = 0x00;
uint b = 0x00;
while(1)
{
a++; //改变通道2的定时值
Delay_us(10000);
T1CC2H = b;
T1CC2L = a;
if(a == 0xff)
{
while(1)
{
a--; //改变通道2设置的定时值
Delay_us(10000);
T1CC2H = b;
T1CC2L = a;
if(a == 0)
break;
}
}
}
}