通往无线桥梁 无线世界先锋
void InitKey(void)
{
P0SEL &= ~0X18; //P04,P03 输入 P0DIR &= ~0X18; //按键在 P04 P03 P0INP |= 0x18;
//上拉
}
函数功能是将 I/O P1_2,P1_3 设为输入(且为三态)以读取按键的状态。
unsigned char KeyScan(void);函数原型:
uchar KeyScan(void) {
if(K1 == 0)
//低电平有效
{
Delay(100); if(K1 == 0)
//检测到按键
//前面定义了 #define K1 P04
{
while(!K1);
//直到松开按键
return(1);
} }
if(K2 == 0) {
Delay(100); if(K2 == 0) {
while(!K2); return(2); } } return(0); }
函数功能是检测按键是否按下,若有键按下,则返回相应的值,如 P0_3 对应的按键按下则返 回 1,P0_4 对应的按键按下返回 2。
1.1.3CC2530 基础实验 3:按键控制闪烁
实验介绍
实验设备:仿真器 1 台,液晶板 1 块,ZigBee 模块 1 块,USB 连接线 1 根。
成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)
通往无线桥梁 无线世界先锋
本实验的控制比实验 2 的控制稍显复杂,这个实验中使用按键控制 LED 闪烁。按下“OK”键 S6 切换 ZigBee 模块左边 LED 灯闪烁,按下“CANCEL”键 S7 切换 ZigBee 模块右边 LED 灯闪烁。 实验相关寄存器
实验中操作了的寄存器有 P0,P0DIR,P0SEL,P1INP。前面三个寄存器在 1.1.1 已经有详述, 这里不再重复介绍。
P1 P1SEL P1DIR
参见 1.1.1 参见 1.1.1 参见 1.1.1 参见 1.1.2
P1INP 实验相关函数
void Delay(uint n);参见基础 1.1.1。
void Initial(void); 参见基础 1.1.1。 void InitKey(void); 参见基础 1.1.1。 unsigned char KeyScan(void); 参见基础 1.1.2。
1.2 定时/计数器实验
1.2.1CC2530 基础实验 4:T1 使用
1 实验介绍
用定时器 1 来改变小灯的状态,T1 每溢出两次,两个小灯闪烁一次,并且在停止闪烁后成闪 烁前相反的状态。
2 实验相关寄存器
实验中操作了的寄存器有 P1,P1DIR,P1SEL,T1CTL 前面三个寄存器在实验 1 已经有详述, 这里不再重复介绍。
P1 见实验 1 说明文档。 P1DIR 见实验 1 说明文档。 P1SEL 见实验 1 说明文档。
T1CTL(T1 控制&状态寄存器)
位号 7 6 5 4 位名 CH2IF CH1IF CH0IF OVFIF 复位值 0 0 0 0 操作性 读/写 读/写 读/写 读/写 功能描述 定时器 1 通道 2 中断标志位 定时器 1 通道 1 中断标志位 定时器 1 通道 0 中断标志位 定时器溢出中断标志,在在计数器达到计数终 成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)
通往无线桥梁 无线世界先锋
3:2 DIV[1:0] 00 读/写 值的时候置位 定时器 1 计数时钟分步选择 00:不分频 01:8 分频 10:32 分频 11:128 分频 定时器 1 模式选择 00:暂停 01:自动重装 0x0000-0xffff 10:比较计数 0x0000-T1CC0 11 :PWM 方式 1:0 MODE[1:0] 00 读/写
3 实验相关函数
void Delay(uint n);参见 CC2530 基础实验 1。
void Initial(void);函数原型:
void Initial(void)
{
//初始化 P1
P1DIR = 0x03; //P10 P11 为输出
RLED = 1; YLED = 1;
//灭 LED
//用 T1 来做实验
T1CTL = 0x3d; // 通道 0,128 分频;自动重载模式(0x0000->0xffff);
}
函数功能是将 P10,P11 设为输出,并将定时器 1 设为自动重装模式,计数时钟为 0.25M。
1.2.2CC2530 基础实验 5:T2 使用
实验介绍
用定时器 2 来改变小灯的状态,T2 每发生一次中断小灯改变状态一次。 实验相关寄存器
实验中操作了的寄存器有 P1,P1SEL,P1DIR,T2CTRL,T2M0,T2IRQM 等寄存器。 P1 参见 CC2530 实验 1 P1SEL 参见 CC2530 实验 1
P1DIR 参见 CC2530 实验 1 T2CTRL(T2 配置寄存器)
成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)
通往无线桥梁 无线世界先锋
位号 7:4 3 位名 - LATCH_MODE 复位值 0 0 操作性 读 读/写 保留,读 0 功能描述 0:当 T2MSEL.T2MSEL = 000 读 T2M0, T2M1,T2MSEL.T2MOVFSEL=000。 读 T2MOVF0, T2MOVF1 T2MOVF2。 1:当 T2MSEL.T2MSEL = 000 读 T2M0, T2M1,T2MOVF0 , T2MOVF1, aT2MOVF2 2 1 STATE SYNC 0 1 读 读/写 0 计数器空闲模式,1 计数器正常运行。 同步使能 0:T2 立即起、停。 1:T2 起、停和 32.768kHz 时钟及计数新值 同步 启动 T2,通过读出该位可以知道 T2 的状 态。 0:停止 T2(IDLE),1:启动 T2(RUN) 0 RUN 0 读/写
T2MOVF2 (T2 多路复用溢出计数器 2 寄存器)
位号 7:0 位名 CMPIM 复位值 0 操作性 读/写 功能描述 T2MSEL.T2MOVFSEL=000, T2CTRL.LATCH_MODE =0 时,计数值被 锁存。
T2M0 ((T2 多路复用寄存器)
位号 7:0 位名 CMPIM 复位值 0 操作性 读/写 功能描述 T2MSEL.T2MSEL=000 和 T2CTRL.LATCH_MODE=0 时,计数值被锁存。 T2MSEL.T2MSEL=000 和 T2CTRL.LATCH_MODE=1 时,计数值和溢出值 被锁存。
T2IRQF(中断标志) 位号 7:6 5 4 位名 - TIMER2_OVF_COMPARE2F TIMER2_OVF_COMPARE1F 复位值 0 0 0 操作性 读 读/写 读/写 保留 当溢出计数器计数达到 t2ovf_cmp2 的值时置位 当溢出计数器计数达到 t2ovf_cmp1 的值时置位 功能描述 成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)
通往无线桥梁 无线世界先锋
3 2 1 0 TIMER2_OVF_PERF TIMER2_COMPARE2F TIMER2_COMPARE1F TIMER2_PERF 0 0 0 0 读/写 读/写 读/写 读/写 当溢出计数器计数等于 t2ovf_per 的值时置位 当计数器计数达到 t2_cmp2 的值 时置位 当计数器计数达到 t2_cmp1 的值 时置位 当计数器计数等于 t2_per 的值 时置位
T2IRQM(中断屏蔽) 位号 7:6 5 4 3 2 1 0 位名 - TIMER2_OVF_COMPARE2MF TIMER2_OVF_COMPARE1M TIMER2_OVF_PERM TIMER2_COMPARE2M TIMER2_COMPARE1M TIMER2_PERM 复位值 0 0 0 0 0 0 0 操作性 读 读/写 读/写 读/写 读/写 读/写 读/写 保留 TIMER2_OVF_COMPARE2M 中断使能 TIMER2_OVF_COMPARE1M 中断使能 TIMER2_OVF_PERM 中断使 能 TIMER2_COMPARE2M 中断 使能 TIMER2_COMPARE1M 中断 使能 TIMER2_PERM 中断使能 功能描述
实验相关函数
void Delay(uint n);参见 CC2530 基础实验 1。
void Initial(void);函数原型:
void Initial(void)
{
LED_ENALBLE(); //启用 LED //用 T2 来做实验 SET_TIMER2_OF_INT();
SET_TIMER2_CAP_COUNTER(0X00ff);
//开溢出中断 //设置溢出值
}
函数功能是启用 LED,使用 LED 可控,开 T2 比较中断
重要的宏定义
开启溢出中断
#define SET_TIMER2_CAP_INT() \\
成都无线龙通讯科技有限公司 http://www.c51rf.com http://www.rfmcu.cn c51rf@126.com
028-86786586 86615004
86617556(传真)