zoukankan      html  css  js  c++  java
  • zigbee学习之路(五):定时器1(查询方式)

    一.前言

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

    二.原理与分析

        谈到定时器的控制,我们最先想到的是要给它赋初值和选择工作模式吧,下面我带大家熟悉一下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这个寄存器,主函数里通过它来判断定时器是否溢出。

  • 相关阅读:
    我的图片爬虫demo
    修改django后台用户名和密码
    mybatis知识点(已掌握)
    python3与python2的区别(目前遇到的)
    Linux 日常命令
    手机号码归属地查询api接口
    Install-Package EntityFramework -version 5.0.0.0
    【迁移】—Entity Framework实例详解
    Android Http请求方法汇总
    Android数据存储的5种方法
  • 原文地址:https://www.cnblogs.com/sjsxk/p/5295108.html
Copyright © 2011-2022 走看看