通往无线桥梁 无线世界先锋
interrupt void T4_ISR(void)
{
IRCON = 0x00;
//可不清中断标志,硬件自动完成
if(counter<1000)counter++; //1000 次中断 LED 闪烁一轮 else {
counter = 0;
GlintFlag = !GlintFlag;
//计数清零
//GlintFalg = 1,LED 闪烁
}
}
函数功能:这是一个中断服务程序,每 1000 次中断改变一次红色 LED 的状态。
重要的宏定义
开启溢出中断
#define TIMER34_ENABLE_OVERFLOW_INT(timer,val) \\
do{T##timer##CTL = (val) ? T##timer##CTL | 0x08 : T##timer##CTL & ~0x08; \\ EA = 1; T4IE = 1; }while(0)
\\ \\
功能:打开 T4 的溢出中断。
复位 T4 相关寄存器
#define TIMER34_INIT(timer) do {
T##timer##CTL
\\ \\
= 0x06; \\
T##timer##CCTL0 = 0x00; \\ T##timer##CC0
= 0x00; \\
T##timer##CCTL1 = 0x00; \\ T##timer##CC1 } while (0)
= 0x00; \\
功能:将 T4 相关的寄存器复位到 0
控制 T4 起停
#define TIMER#define TIMER34_START(timer,val)
(T##timer##CTL = (val) ? T##timer##CTL | 0X10 : T##timer##CTL&~0X10)
\\
功能:timer 为定时器序号,只能取 3 或 4。val 为 1,定时器正常运行,val 为 0,定时器停止 计数。
设置 T4 工作方式
#define TIMER3_SET_MODE(val) \\
成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004 86617556(传真)
通往无线桥梁 无线世界先锋
do{
T4CTL &= ~0X03;
\\ \\
(val==1)?(T4CTL|=0X01): /*DOWN (val==2)?(T4CTL|=0X02): /*Modulo (val==3)?(T4CTL|=0X03): /*UP / DOWN (T4CTL|=0X00);
/*free runing */
*/ \\ */ \\ */ \\ \\
}while(0)
#define T4_MODE_FREE #define T4_MODE_DOWN
0X00 0X01
#define T4_MODE_MODULO 0X02 #define T4_MODE_UP_DOWN 0X03
功能:根据 val 的值将 T4 设置为不同模式,一共 4 种模式。
1.3.2CC2530 基础实验 9:外部中断
实验介绍 使用两个按键来翻转LED的状态,但这里两个按键不是做键盘用,而是产生中断触发信
号。。
按下液晶扩展板上“OK”键S6,CC2530 模块上1个LED 灯改变当前状态。 实验相关寄存器
实验中操作了的寄存器有 P0,P0SEL,P0DIR,P0INP,P0IEN,P0CTL,IEN2,P0IFG 等寄 存器。
P1 P1SEL P1DIR P1INP
参见 1.1.1 参见 1.1.1 参见 1.1.1 参见 1.1.1
P0IEN (P01 口中断掩码)
位号 7 6 5 4 位名 P0_7IEN P0_6IEN P0_5IEN P0_4IEN 复位值 0 0 0 0 可操作性 读/写 读/写 读/写 读/写 功能描述 P07 中断掩码 0 关中断,1 开中断 P06 中断掩码 0 关中断,1 开中断 P05 中断掩码 0 关中断,1 开中断 P04 中断掩码 0 关中断,1 开中断 成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com 028-86786586 86615004 86617556(传真)
通往无线桥梁 无线世界先锋
3 2 1 0
P0_3IEN P0_2IEN P0_1IEN P0_0IEN 0 0 0 0 读/写 读/写 读/写 读/写 P03 中断掩码 0 关中断,1 开中断 P02 中断掩码 0 关中断,1 开中断 P01 中断掩码 0 关中断,1 开中断 P00 中断掩码 0 关中断,1 开中断
PICTL (P 口中断控制寄存器)
位号 7 6 5 4 3 2 1 0
位名 - PADSC P2IEN P0IENH P0IENL P2ICON P1ICON P0ICON 复位值 0 0 0 0 0 0 0 0 可操作性 读 读/写 读/写 读/写 读/写 读/写 读/写 读/写 预留 功能描述 输出驱动能力选择 0 最小驱动能力,1 最大驱动能力 P2(0-4)中断使能位 0 关中断,1 开中断 P0(4-7)中断使能位 0 关中断,1 开中断 P0(0-3)中断使能位 0 关中断,1 开中断 P2 (0-4)中断配置 0 上升沿触发,1 下降沿触发 P1 (0-7)中断配置 0 上升沿触发,1 下降沿触发 P0 (0-7)中断配置 0 上升沿触发,1 下降沿触发
P0IFG(P0 口中断标志寄存器) 位号 7:0 位名 P0IF[7:0] 复位值 0x00 可操作性 读/写 功能描述 P0(0-7)中断标志位,在中断条件发生, 相应位自动置 1
IEN2 (中断使能寄存器 2) 位号 7:6 5 4 位名 - WDTIE P1IE 复位值 00 0 0 86617556(传真)
可操作性 读 读/写 读/写 功能描述 没有,读出为 0 看门狗定时器中断使能 0 关中断,1 开中断 P1 中断使能使能 成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
通往无线桥梁 无线世界先锋
3 2 1 0
UTX1IE UTX0IE P2IE RFIE 0 0 0 0 读/写 读/写 读/写 读/写 0 关中断,1 开中断 串口 1 发送中断使能 0 关中断,1 开中断 串口 0 发送中断使能 0 关中断,1 开中断 P2 口中断使能 0 关中断,1 开中断 普通射频中断使能 0 关中断,1 开中断
实验相关函数
void Init_IO_AND_LED(void);函数原型:
void Init_IO_AND_LED(void)
{
P1DIR = 0X03; //0 为输入(默认),1 为输入
RLED = 1; led2 = 1;
P0INP &= ~0X0c;//有上拉、下拉 P1INP &= ~0X40; //选择上拉
P0IEN |= 0X30; PICTL |= 0X02;
//P04 P03 //下降沿
EA = 1;
IEN1 |= 0X20; P0IFG |= 0x00;
// P0IE = 1;
//P12 P13 中断标志清 0
}
函数功能:将 I/0 P04,P03 设置为输出去控制 LED,使能 P0 中断 且配置为下降沿触发。
void P1_ISR(void);函数原型:
#pragma vector = P0INT_VECTOR interrupt void P0_ISR(void) {
if(P0IFG>0)
//按键中断
{
P0IFG = 0; RLED = !RLED; }
P0IF = 0;
//清中断标志
}
成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)
通往无线桥梁 无线世界先锋
函数功能:在 P04,P03 触发中断的时候将绿色 LED 的状态翻转。
1.4AD 实验
1.4.1CC2530 基础实验 10:片内温度
实验介绍
取片内温度传感器为 AD 源,并将转换得到温度通过串口送至电脑。
CLKCONSTA,IEN0,U0DUB,ADCCON1,ADCCON3,ADCH,ADCL 等寄存器。
IEN0 参见实验 5。
实验相关寄存器
实验中操作了的寄存器有 CLKCONCMD,SLEEPCMD,PERCFG,U0CSR,U0GCR,U0BAUD,
CLKCONCMD (时钟控制寄存器)
位号 7 位名 OSC32K 复位值 1 可操作性 写 功能描述 32kHz 时钟源选择 0:32K 晶振,1:32K RC 振荡 成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)