1、定时器完成一定时间LED1的亮灭
首先说一下定时器
定时器1
独立的16位定时器
三个要配置的寄存器:T1CTL,T1STAT,IRCON
关于定时的时间一些瞎写的记录
#include <ioCC2530.h>
#define LED1 P1_0
/******初始化LED灯*******/
void InitLed(void)
{
P1DIR |= 0x01;
LED1 = 1;
}
/******初始化定时器******/
void InitT1()
{
T1CTL = 0x0d; //0000 11(标记频率128)01(自由运行,从0x0000到0xFFFF反复计数)
T1STAT = 0X21; //0010 0001 定时器1计数器溢出中断 定时器0通道4中断标志
}
void main(void)
{
char count = 0;
InitLed();
InitT1();
while(1)
{
if(IRCON > 0){
IRCON=0;
if(count++ >= 1)
{
count = 0;
LED1 = !LED1;
}
}
}
}
定时器3和定时器4
两个8位定时器
中断定时LED闪烁
#include <ioCC2530.h>
#define LED1 P1_0
int count;
//灯初始化
void InitLed(void)
{
P1DIR |= 0X01;
LED1 = 1;
}
//定时器3初始化
void InitT3()
{
T3CTL |= 0X08; //开溢出中断
T3IE = 1;//开总中断和T3中断
T3CTL |= 0XE0; //128分频
T3CTL &= ~0X03; //自动重装
T3CTL |= 0X10; //启动
EA = 1;//开总中断
}
#pragma vector = T3_VECTOR
__interrupt void T32(void)
{
IRCON = 0X00; //清中断
if(count++ > 244)
{
count = 0;
LED1 = ~LED1;
}
}
void main(void)
{
InitLed();
InitT3();
while(1)
{};
}