一.前言

今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作。

二.原理与分析

谈到定时器的控制,我们最先想到的是要给它赋初值和选择工作模式吧,下面我带大家熟悉一下cc2530中的定时器寄存器。

如上图所见,DIV寄存器用来确定定时器运行一次所需的时间,MODE用来选择定时器的工作模式。

定时器中断的标志位,有中断发生时,置为1

三.程序

#include <ioCC2530.h>

#define uint unsigned int

#define uchar unsigned char

//定义控制LED灯的端口

#define LED1 P1_0     //LED1为P1_0端口控制

#define LED2 P1_1     //LED2为P1_1端口控制

#define LED3 P1_4      //LED3为P1_4端口控制

//函数声明

void Delayms(uint xms);  //延时函数

void InitLed(void); //初始化LED端口

void InitT1(void);              //初始化定时器T1

/*********  函 数 名  : main  功能描述  : Timer1测试(Timer1查询方式的使用)  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE ***************/

void main(void)

{     uchar count=0;

InitLed();  //LED1_IO初始化

InitT1();           //Timer1初始化

while(1)

{

if(IRCON>0)    //查询溢出标志

{             IRCON=0;

if((++count)==1)      //溢出一次约为0.5s

{                 count=0;

LED1 = !LED1;        //LED1取反

LED2 = !LED2;

LED3 = !LED3;             }

}     } }

/********** 函 数 名  : Delayms  功能描述  : 毫秒延时  输入参数  : xms:延时时间,如 i=xms 即延时i毫秒  输出参数  : none  返 回 值  : none ******************/

void Delayms(uint xms)

{

uint i,j;

for(i=xms;i>0;i--)

for(j=587;j>0;j--); }

/************************  函 数 名  : InitLed  功能描述  : LED_IO初始化函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *****************/ void InitLed(void)

{     P1DIR |= 0xff;  //P1端口定义为输出

LED1 = 1;       //LED灯初始化熄灭

LED2 = 1;

LED3 = 1; }

/************  函 数 名  : InitT1  功能描述  : Timer1初始化函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE **************/

void InitT1(void)

{     T1CTL = 0x0d;   //128分频;

自由运行,从0x0000到0xFFFF反复计数 }

四.总结

通过本次实验,相信大家已经基本了解定时器1的使用了,需要注意的是IRCON这个寄存器,主函数里通过它来判断定时器是否溢出。

zigbee学习之路(五):定时器1(查询方式)的更多相关文章

  1. zigbee学习之路(七):定时器3(中断方式)

    一.前言 上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出. 二.原理与分析 要使用定时器3,我们必须先要配置的是T3CTL,来把定时器 ...

  2. Hibernate学习笔记(五)—— Hibernate查询方式

    一.对象图导航查询 对象图导航查询方式是根据已经加载的对象,导航到他的关联对象.它利用类与类之间的关系来查询对象.比如要查找一个联系人对应的客户,就可以由联系人对象自动导航找到联系人所属的客户对象.当 ...

  3. zigbee学习之路(四):按键控制(中断方式)

    一.前言 通过上次的学习,我们学习了如何用按键控制led,但是在实际应用中,这种查询方式占用了cpu的时间,如果通过中断控制就可以解决这个问题,我们今天就来学习按键控制的中断方式. 二.原理分析 传统 ...

  4. zigbee学习之路(八):定时器1(中断)

    一.前言 通过上次的实验,我们已经学会了定时器3的中断方式,这次,我们来看看定时器1通过中断怎么控制. 二.原理分析 定时器1的初始化跟前面提到的一样,也是要配置寄存器T1CTL,还要进行开中断的操作 ...

  5. 用定时器T0查询方式P0口8位控制LED闪烁

    #include<reg52.h> #define uchar unsigned char #define uint unsigned int void main (void) { uch ...

  6. zigbee学习之路(十五):基于协议栈的按键实验

    一.前言 经过上次的学习,相信大家已经初步学会使用zigbee协议进行发送和接受数据了.今天,我们要进行的实验是按键的实验,学会如何在协议栈里实现按键中断. 二.实验功能 在协议栈上实现按键中断,BU ...

  7. zigbee学习之路(六):Time3(查询方式)

    一.前言 通过上次的学习,相信大家对cc2530单片机的定时器的使用有了一定的了解,今天我们来介绍定时器3的使用,为什么介绍定时器3呢,因为它和定时器4功能是差不多的,所以学会定时器3,就基本掌握了c ...

  8. FastAPI 学习之路(六)查询参数,字符串的校验

    系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...

  9. IBatis.Net学习笔记五--常用的查询方式

    在项目开发过程中,查询占了很大的一个比重,一个框架的好坏也很多程度上取决于查询的灵活性和效率.在IBatis.Net中提供了方便的数据库查询方式. 在Dao代码部分主要有两种方式:1.查询结果为一个对 ...

随机推荐

  1. 用外部表的方式查询当天数据库alert日志文件

    1环境准备 2查询ORA-开头的错误

  2. php判断字符串A是否含有字符串B

    <?php if (preg_match ("/PHP/", "PHP is the web scripting language of choice." ...

  3. NYOJ背包问题

    #include <stdio.h> struct group{ int value; int weight; }; void Sort(group bag[],int num) { in ...

  4. iPhone的設置——FaceTime頁面

    這裏說的是蘋果的Hand off功能,系統升級後,蘋果的多部設備可以更好的“連續互通”.有電話打進來,iPhone.iPad和Mac都能收到,用戶可以任意選擇一款設備接電 話.同樣,iMessage也 ...

  5. Linux常用文件介绍

    您的一举一动都会记录在/var/log/secure 和/var/log/messages文件中

  6. 修改SQL Server 2005 数据库文件名字

    对于SQLServer 2005的数据库文件名字的修改.不多说,见图: 对于数据库名的更改直接选中要修改的数据库,F2,你懂的,不懂的可以去屎了.....0.0 下面要修改数据库的文件名 原理就是利用 ...

  7. java之接口(笔记)

    1.特征 (1)所有成员变量都是public, static, final.(2)所有方法都是public, abstract.(3)所有嵌套类型都是public, static. 2.接口也是继承自 ...

  8. HDU 1160 FatMouse's Speed(要记录路径的二维LIS)

    FatMouse's Speed Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) ...

  9. Codeforces Round #361 (Div. 2) C D

    C 给出一个m 此时有 四个数 分别为x k*x k*k*x k*k*k*x k大于1 x大于等于1 要求求出来一个最小的值n 使其满足 这四个数中的最大值小于n 这四个数可能的组数为m 可以看出这四 ...

  10. Sharepoint 2013 网站集的删除与还原

    一.可以通过三种方法删除网站集: 1.打开Sharepoint 2013 管理页面首页 ---> 单击‘应用程序管理(Application Management)’并进入该页面 ---> ...