一.前言

通过上次的实验,我们已经学会了定时器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位的。至此为止,定时器所进行和了解的差不多了,下一节,我们主要开始学习串口。

最新文章

  1. 导出BOM表
  2. 标准模板库(STL)的一个 bug
  3. treeGrid树形数据表格的json数据格式说明
  4. libqxt编译
  5. EasyUi&ndash;8.datebox赋值的问题
  6. 【Python】django模型models的外键关联使用
  7. 【BZOJ】【3524】【POI2014】Couriers
  8. Android开发UI之手动显示和隐藏软键盘
  9. C++&lt;algorithm&gt;中sort的比较函数写法(转)
  10. php中include文件变量作用域的研究
  11. 【Android Developers Training】 16. 暂停和恢复一个Activity
  12. java学习笔记IO之字节输入输出流
  13. R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)
  14. 第一册:lesson fifteen。
  15. SpringBoot +Pom.xml工程资源文件配置
  16. nginx、tomcat调优方向及压测网站步骤
  17. python 线程间通信之Condition, Queue
  18. javaweb(十一)——使用Cookie进行会话管理
  19. 年假小 Plan
  20. dockerfile 踩坑记录

热门文章

  1. maven pom文件结构详解
  2. java动态编译类文件并加载到内存中
  3. Eclipse 官方简体中文语言包下载地址及安装方法
  4. win10如何让她闭嘴、按什麽建系统都要说话、如何让她闭嘴?
  5. Cookie案例-显示商品浏览历史纪录
  6. 【iCore3 双核心板_FPGA】Quartus 如何生成jic文件
  7. ORACLE常见错误代码的分析与解决
  8. CSS权威指南 - 基本视觉格式化 4
  9. [办公自动化]一次制作、多场合多次使用的PPT
  10. C++和C代码互相调用是不可避免的