level 9
wait7676
楼主
我用的是定时器1的自由模式,想实现3s改变一次led的状态,经过128分频后,频率为1953.123Hz,计数1次的时间为0.000512s。我赋初始值为59576,想让定时器每隔3s进入一次中断程序,但是在板子上看到的情况是相应的led不到1s就变换一次状态。(ps:顺便问下定时器1上的通道是怎么配置的 ,有没有什么规定,还是随便用?)
#include <ioCC2530.h>
#define LED P1_1
#define H T1CNTH = 0XE9;
#define L T1CNTL = 0x1C;
char i = 0;
/*******************************************************************************
*配置P1_1为输出,还有定时器T1的相关寄存器:T1CTL,T1STAT,IRCON
*******************************************************************************/
void IO_Config()
{
P1DIR |= 0x02;//设置P11为输出
P1INP &= ~0x02;//开上拉
//配置T1定时器
T1CTL |= 0x0d;//128分频,停止计数
T1STAT |= 0x1F;//设置通道,开启通道4
IRCON &= ~0x02;//将定时器T1的中断标志复位,由硬件复位
H;
L;
T1CTL |= 0X01;//开启自由模式计数
EA = 1;
T1IE = 1;
LED = 1;
}
/*******************************************************************************
主函数:配置完定时器后,每计数完一次,便取反LED的状态一次。
*******************************************************************************/
void main()
{
IO_Config();
while(1);
}
/*******************************************************************************
*定时器一中断函数T1 采用中断方式进入 预计定时3s进一次中断
*******************************************************************************/
#pragma vector = T1_VECTOR
__interrupt void timer_1(void)
{
EA = 0;
H;
L;
T1CTL &= ~0x01;
LED = ~LED;
EA = 1;
T1CTL |= 0x01;
}
2014年06月09日 00点06分
1
#include <ioCC2530.h>
#define LED P1_1
#define H T1CNTH = 0XE9;
#define L T1CNTL = 0x1C;
char i = 0;
/*******************************************************************************
*配置P1_1为输出,还有定时器T1的相关寄存器:T1CTL,T1STAT,IRCON
*******************************************************************************/
void IO_Config()
{
P1DIR |= 0x02;//设置P11为输出
P1INP &= ~0x02;//开上拉
//配置T1定时器
T1CTL |= 0x0d;//128分频,停止计数
T1STAT |= 0x1F;//设置通道,开启通道4
IRCON &= ~0x02;//将定时器T1的中断标志复位,由硬件复位
H;
L;
T1CTL |= 0X01;//开启自由模式计数
EA = 1;
T1IE = 1;
LED = 1;
}
/*******************************************************************************
主函数:配置完定时器后,每计数完一次,便取反LED的状态一次。
*******************************************************************************/
void main()
{
IO_Config();
while(1);
}
/*******************************************************************************
*定时器一中断函数T1 采用中断方式进入 预计定时3s进一次中断
*******************************************************************************/
#pragma vector = T1_VECTOR
__interrupt void timer_1(void)
{
EA = 0;
H;
L;
T1CTL &= ~0x01;
LED = ~LED;
EA = 1;
T1CTL |= 0x01;
}

