一.前言

上次我们学习了了用定时器3进行查询方式来进行溢出判断,今天我们来换一种方式,用中断方式来检测和查询定时器3的溢出。

二.原理与分析

要使用定时器3,我们必须先要配置的是T3CTL,来把定时器3初始化,进行工作模式和频率的选择,要使用中断模式来控制定时器3,我们还要配置中断的控制寄存器,T3IE和总中断EA。T3CTL的配置和上次的一样。

三.程序

#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_IO初始化函数

void InitT3(void);              //Timer3中断方式初始化函数

//由于是中断函数用到,一定要定义为全局变量

uint count=0;//用于计算溢出中断的次数

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

void main(void)

{

InitLed();  //调用初始化函数

InitT3();

while(1)     {     } }

/*********************  函 数 名  : T3_ISR  功能描述  : 中断服务函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *********************/ #pragma vector = T3_VECTOR  //Timer3中断向量

__interrupt void T3_ISR(void)

{     IRCON = 0x00;           //清中断标志, 也可由硬件自动完成

if((++count)>254)       //254次中断后LED取反,闪烁一轮(0.5 秒时间)

{

count = 0;          //计数清零

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;       //LED1灯熄灭

LED2 = 1;

LED3 = 1; }

/********************  函 数 名  : InitT3  功能描述  : Timer3中断方式初始化函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *************************/

void InitT3(void)

{

T3CTL|=0XE0;               //128分频,

T3CTL |= 0x08 ;            //开溢出中断

T3CTL &= ~0X03;            //自动重装0x00---0xFF

T3IE = 1;                  //开Timer3中断

EA = 1;                    //开总中断

T3CTL |=0X10;              //启动

}

四.原理与分析

通过本次实验,我们应该会用中断来控制定时器了,通过开总中断EA和定时器3中断T3IE来控制定时器3的运行。

zigbee学习之路(七):定时器3(中断方式)的更多相关文章

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

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

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

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

  3. zigbee学习之路(五):定时器1(查询方式)

    一.前言 今天,我们来学习几乎所有单片机都有的功能,定时器的使用,定时器对单片机来说是相当重要的,有了它,单片机就可以进行一些复杂的工作. 二.原理与分析 谈到定时器的控制,我们最先想到的是要给它赋初 ...

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

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

  5. zigbee学习之路(十二):zigbee协议原理介绍

    一.前言 从今天开始,我们要正式开始进行zigbee相关的通信实验了,我所使用的协议栈是ZStack 是TI ZStack-CC2530-2.3.0-1.4.0版本,大家也可以从TI的官网上直接下载T ...

  6. zigbee学习之路(十一):看门狗

    一.前言 今天,我们要通过实验学习和认识一下看门狗的使用,看门狗是为了防止防止程序跑飞的,通过不断的喂狗,使看门狗能持续监管程序的运行状态,当程序跑飞时,能及时把程序拽回来. 二.原理与分析 在CPU ...

  7. zigbee学习之路(十三):基于协议栈的Usart 实验

    一.前言 这次实验我们来学习基于zigbee的串口通信实验,揭开zigbee神秘的面纱,让大家可以用zigbee协议编制属于自己的程序,这次实验只是串口发送数据,并没有进行无线的数据传输,为的是使大家 ...

  8. zigbee学习之路(十):串口(接收)

    一.前言 上次我们学习了串口的发送,今天我们要学习串口的接收,要实现的功能是接收电脑发来的数据,控制LED 灯闪烁,而且将收到的数据发回给电脑显示出来.而且要采用不占用cpu资源的中断. 二原理与分析 ...

  9. zigbee学习之路(九):串口(发送)

    一.前言 今天,我们来学习和实验串口模块方面的,串口通信是我们常用的通信手段,通过串口交互,我们可以很容易的和pc机进行数据的交换和发送,所以我们今天就来学习一下.这个实验所进行的功能是一开始CC25 ...

随机推荐

  1. c#语句 类

    知识点: 1.string类 2.Math类 3.DateTime  获取时间 for穷举 1.羽毛球拍15元,球3元,水2元.现有200元,每种至少买一个,共有多少种可能.

  2. js在输出时乱码

    如果网页头是<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> ...

  3. bzoj4457: 游戏任务--双层01背包

    这题和NOIP的金明的预算方案(?)很像,只不过附件的数量增多了 如果对主件进行一次01背包,再套一层附件的01背包O(n4)肯定会爆.. 所以我们可以先预处理出,对于每个主件,花的时间为k的情况下, ...

  4. Eclipse序列号生成代码

    import java.io.*; public class MyEclipseGen { private static final String LL = "Decompiling thi ...

  5. 一款名為com.apple.pcapd的服務

    一款名為com.apple.pcapd的服務,通過libpcap網路數據包捕獲函數包捕獲流入和流出iOS設備的HTTP數據.據紮德爾斯基稱,這一服務在所有iOS設備上都是默認啟動的,能被用來在用戶不知 ...

  6. BizTalk开发系列(二十六) 使用Web Service

    Web Service是在构建SOA平台中广泛使用的技术.在BizTalk开发过程中使用SOAP适配器接收和发送 Web Services 请求.业务流程可以发布为 Web Services 并使用外 ...

  7. Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC

    Java加密技术(一)——BASE64与单向加密算法MD5&SHA&MAC 博客分类: Java/Security Javabase64macmd5sha     加密解密,曾经是我一 ...

  8. ThinkPHP 3.2.3 中设置和使用 Session

    Session 的配置 可以在 config.php(可以是应用公用的 config.php 或模块的 config.php)中对 Session 进行配置,例如: config.php <?p ...

  9. centos安装php-memcached扩展及cas用法

    一.安装libmemcachedwget https://launchpad.net/libmemcached/1.0/1.0.16/+download/libmemcached-1.0.16.tar ...

  10. Android实现推送方式解决方案

    当我们开发需要和服务器交互的应用程序时,基本上都需要获取服务器端的数据,比如<地震应急通>就需要及时获取服务器上最新的地震信息. 要获取服务器上不定时更新的信息,一般来说有两种方法: 第一 ...