/*******************************************************************************
*
*功能描述:在定时器1的定时模式下,以固定频率闪烁4个LED
*
*作者:Rfstorm studio QQ群:51109148
*
*时间:2010-12-6
*
********************************************************************************/
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define D1 P1_0 //定义LED1为P10口控制
#define D2 P1_1 //定义LED2为P11口控制
#define D3 P1_4 //定义LED3为P14口控制
#define D4 P0_1 //定义LED4为P01口控制
uint Counter=0; //统计溢出次数
void Initial(void);
void Delay(uint);
/****************************
//延时
*****************************/
void Delay(uint n)
{
int x,y;
for(x=n;x>0;x--)
for(y=100;y>0;y--);
}
/****************************
//初始化程序
***************************/
void Initial(void)
{
P1SEL &= ~0x13;//GPIO
P1DIR |= 0X13;//OUTPUT
P0SEL &= ~0x02;//GPIO
P0DIR |= 0X02;//OUTPUT
D1 = 0;
D2 = 0;
D3 = 0;
D4 = 0;
//用T1来做实验
T1CTL = 0x3d; //通道0,中断有效,128分频,自动重装模式(0x0000->0xffff);
}
/***************************
//主函数
***************************/
void main()
{
Initial(); //调用初始化函数
while(1) //查询溢出
{
if(IRCON > 0)
{
IRCON = 0; //清溢出标志
D1 = !D1;
D2 = !D2;
D3 = !D3;
D4 = !D4;
}
}
}
代码分析:
T1CTL(T1 控制&状态寄存器)
位号 位名 复位值 操作性 功能描述
7 CH2IF 0 读/写定时器 1 通道2 中断标志位
6 CH1IF 0 读/写定时器 1 通道1 中断标志位
5 CH0IF 0 读/写定时器 1 通道0 中断标志位
4 OVFIF 0 读/写定时器溢出中断标志,在在计数器达到计数终值的时候置位
3:2 DIV[1:0] 00 读/写定时器 1 计数时钟分步选择
00:不分频
01:8 分频
10:32 分频
11:128 分频
1:0 MODE[1:0] 00 读/写定时器 1 模式选择
00:暂停
01:自动重装0x0000-0xffff
10:比较计数0x0000-T1CC0
11 :PWM 方式
寄存器名称 SFR地址 模块 描述
IRCON 0xC0 CPU 中断标志4