概述
定时器T1-查询方式
1.实验目的
1)、通过实验掌握 CC2530 芯片 GPIO 的配置方法
2)、掌握 Led 驱动电路及开关 Led 的原理
3)、掌握定时器 T1 的配置与使用
2.实验平台
1)cc2530zigbee开发板平台
①协议栈版本:无,初级教程为裸机编程。
②编译软件:IAR Embedded Workbeench for 8051-V8.10.3
③硬件平台:ACE研发工作室配套开发板
购买地址:ace-studio.taobao.com
④仿真器:smartRF04eb下载器
版权声明
1)作者:ACE研发工作室
2)声明:版权所有,转载请注明出处。
3)zigbee开发板套件购买地址:ace-studio.taobao.com
3.实验相关电路图
发光二极管是属于二极管的一种,具有二级管单向导电特性,即只有在正向电压(二极管的正极接正,负极接负)下才能导通发光。P1.0引脚接发光二极管(D1)的负极,所以P1.0引脚输出低电平
D1亮,P1.0引脚输出高电平D1熄灭,D2,D3同理。
注:D3灯的控制脚复用到了仿真器,而仿真器用到了锁存器,所以要使得D3亮,必须取下仿真器。
4.实验相关寄存器
CC2530的T1定时器(16位)需要配置三个寄存器T1CTL、T1STAT、IRCON。如下表所示:
寄存器 | 作用 | 描述 |
T1CTL(0xE4)
| T1CTL (Bit 3:2) 分频器划分值,如下: | |
00: 标记频率/1 | ||
01: 标记频率/8 | ||
10: 标记频率/32 | ||
T1CTL(0xE4) 定时器 1 的控制和状态
| 11: 标记频率/128 T1CTL (Bit 1:0) 选择定时器 1 模式 00: 暂停运行。 | |
01: 自由运行,从 0x0000 到 0xFFFF 反复计数。 | ||
10: 模,从 0x0000 到 T1CC0 反复计数。 | ||
11: 正计数/倒计数,从 0x0000 到 T1CC0 反复计数并 | ||
且从 T1CC0 倒计数到 0x0000。 | ||
T1STAT(0xAF) |
定时器 1 状态 | Bit5: 定时器 计数器溢出中断标志 Bit4: 定时器 1 通道 4 中断标志 Bit3: 定时器 1 通道 3 中断标志 Bit2: 定时器 1 通道 2 中断标志 Bit1: 定时器 1 通道 1 中断标志 Bit0: 定时器 1 通道 0 中断标志 |
IRCON(0xC0) | 中断标志 4 | Bit1: 定时器 1 中断标志。当定时器 1 中断发生 时设为 1 并且当 CPU 向量指向中断服务例程时清除。 0: 无中断未决 1: 中断未决 |
按照表格寄存器的内容,对
Led1
和 T1 进行配置。
Led1 配置如下:
P1SEL
&=~0x0 1; //
配 置
P1.0 为
通用IO 口
P1DIR
|= 0x01;
//配置
P1.0
为输出
T1 配
置 如下:
T1CTL
= 0x0d;
//128 分 频 , 自动重
装0x0000
-0xFFF F
5.源码分析
1)、请打开工程,初级教程6、CC2530 查询方式使用定时器ace-zigbee
ace-zigbee.eww,如果打不开,请参考学习例程以及开发环境安装2.开发环境搭建.pdf,安装IAR开 发环境。
2)、主代码 main.c 如下:
/**************************************/
/*描述:通过定时器 T1 查询方式控制 LED1 周期性闪烁
**************************************/
#include <ioCC2530.h>
#define uint unsigned int
#define uchar unsigned char
//定义控制 LED 灯的端口
#define LED1 P1_0 //定义 LED1 为 P10 口控制
//函数声明
void Delayms(uint xms); //延时函数void InitLed(void); //初始化 P1 口
void InitT1(); //初始化定时器 T1
/****************************
//延时函数
*****************************/
void Delayms(uint xms) //i=xms 即延时 i 毫秒
{
uint i,j; for(i=xms;i>0;i--)
for(j=587;j>0;j--);
}
/****************************
//初始化程序
*****************************/
void InitLed(void)
{
P1DIR |= 0x03; //P1_0 定义为输出
LED1 = 1; //LED1 灯初始化熄灭
}
//定时器初始化
//定时器的时间为((1/(16000000/128)*65535)=0.52428 秒
void InitT1() //系统不配置工作时钟时默认是 2 分频,即 16MHz
{
T1CTL = 0x0d; //128 分频,自动重装 0X0000-0XFFFF
T1STAT= 0x21; //通道 0, 中断有效
}
/***************************
//主函数
***************************/
void main(void)
{
uchar count;
InitLed(); //调用初始化函数
InitT1(); while(1)
{
if(IRCON>0)//定时器时间((1/(16000000/128)*65535)=0.52428 秒,
{
IRCON=0;
if(++count>=1) //约 1s 周期性闪烁
{
count=0;
LED1 = !LED1; //LED1 闪烁
}
}
}
}
6.实验步骤
1)、打开代码工程,初级教程6、CC2530 查询方式使用定时器ace-zigbeeace-zigbee.eww,如果 IAR 没有很安装,请按。开发环境安装开发环境搭建.pdf 去安装。
2)、通过仿真器把开发板接到电脑上。
3)、编绎下载。
程序已下载完成,可以运行:
4).现象。
最后
以上就是香蕉黑裤为你收集整理的zigbee初级教程(七) CC2530 定时器T1-查询方式 定时器T1-查询方式2.实验平台3.实验相关电路图4.实验相关寄存器5.源码分析6.实验步骤的全部内容,希望文章能够帮你解决zigbee初级教程(七) CC2530 定时器T1-查询方式 定时器T1-查询方式2.实验平台3.实验相关电路图4.实验相关寄存器5.源码分析6.实验步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复