一.前言

通过上次的实验,我们已经学会了定时器3的中断方式,这次,我们来看看定时器1通过中断怎么控制。

二.原理分析

定时器1的初始化跟前面提到的一样,也是要配置寄存器T1CTL,还要进行开中断的操作,由T1IE和EA控制。

三.程序

#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 InitT1(void);              //Timer1中断方式初始化函数

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

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

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

void main(void)

{

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

InitT1();

while(1)

{     }

}

/**************  函 数 名  : T1_ISR  功能描述  : 中断服务函数  输入参数  : NONE   输出参数  : NONE  返 回 值  : NONE *****************/

#pragma vector = T1_VECTOR  //Timer1中断向量

__interrupt void T1_ISR(void)

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

if((++count)==1)        //1次中断后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 |= 0x13;  //P1_0、P1_1、P1_4义为输出

LED1 = 1;       //LED1灯熄灭

LED2 = 1;       //LED2灯熄灭

LED3 = 1;       //LED3灯熄灭

}

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

void InitT1(void)

{         T1CTL|=0X0d;               //128分频,自由运行模式

T1IE = 1;                  //开Timer1中断

EA = 1;                    //开总中断 }

四.总结与分析

程序的功能与之前一样,就是让led闪烁,目的只是熟悉定时器的使用,大家要注意区分的是定时器1和2都是16位的,而3和4都是8位的。至此为止,定时器所进行和了解的差不多了,下一节,我们主要开始学习串口。

zigbee学习之路(八):定时器1(中断)的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

随机推荐

  1. Retina时代的前端视觉优化

    随着New iPad的发布,平板也将逐渐进入Retina时代,在高分辨率设备里图片的显示效果通常不尽人意,为了达到最佳的显示效果就需要对图片进行优化,这里介绍一些优化方法: 一.用CSS替代图片 这一 ...

  2. IO 磁盘总结

    IO 磁盘 1.读取 首先引用一个using System.IO;引用空间其次 string ste= File.ReadAllText("E:\\bt.txt",Encoding ...

  3. $.getJSON JSONP的新坑

    神坑1:返回的内容必须是正规的json数据.如 { "firstName": "Bill", "lastName": "Gates ...

  4. 如何在maven工程中加载oracle驱动

    maven中引入oracle驱动报错Missing artifact com.oracle:ojdbc14:jar:10.2.0.4.0 时间:2015年09月22日  浏览:9361次 在maven ...

  5. 【转】DNS记录类型介绍(A记录、MX记录、NS记录等)

    DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 建站名词解释:DNS A记录 NS记录 MX记录 CNAME记录 TXT记录 TTL值 PTR值 泛域名 泛解析 域 ...

  6. java环境搭建系列:JDK从下载安装到简单使用

    最近,问的比较多的问题居然是jdk的问题,对于新手来说这确实有点难度,毕竟一个人经常上网浏览新闻和观看视频的人,一下子开始一门编程语言的环境搭建.这中间需要一个慢慢适应的过程.回想当初我在这个阶段也很 ...

  7. Ubuntu 常用工具、指令安装

    修改source list,使用阿里云的软件源 sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sed - ...

  8. 解决python "Non-ASCII character"错误

    原文http://jingyan.baidu.com/article/219f4bf7d04887de442d3899.html 1.出现问题的原因:程序中的编码错误,python默认是acii模式, ...

  9. Android自动化测试工具——monkey简介及入门

    记得第二家单位的安卓开发在上线前都用monkey压几个小时,确实也能发现些问题,崩溃率低了些,没测过的确实可以压一压 搜了下资料,monkey确实很简单,发现问题自己搜下是什么问题,别一发现什么就跑去 ...

  10. linux下C++ 插件(plugin)实现技术

    应用程序中使用插件技术,有利于日后的版本更新.维护(比如打补丁)和功能扩展,是一种很实用的技术.其最大的特点是更新插件时无需重新编译主程序,对于一个设计良好的应用系统而言,甚至可以做到业务功能的在线升 ...