zoukankan      html  css  js  c++  java
  • 定时器之基于模模式的间隔定时

     1 #include "ioCC2530.h"
     2 
     3 #define D3  P1_0
     4 #define D4  P1_1
     5 #define D5  P1_3
     6 #define D6  P1_4
     7 
     8 unsigned char count = 0;      //长定时累计变量
     9 
    10 /*======================端口初始化函数========================*/
    11 void Init_Port()
    12 {
    13   //初始化LED灯的I/O端口
    14   P1SEL &= ~0x1b;   //P1_0、P1_1、P1_3和P1_4作为通用I/O端口
    15   P1DIR |= 0x1b;    //P1_0、P1_1、P1_3和P1_4端口输出
    16   //关闭所有的LED灯
    17   P1 &= ~0x1b;   //0001 1011->1110 0100 关闭所有灯
    18 }
    19 
    20 /*=====================定时器1初始化函数======================*/
    21 void Init_Timer1()
    22 {
    23   T1CC0L = 0xd4;    //16MHz时钟128分频定时100ms   
    24   T1CC0H = 0x30;    //设先填低8位,再填高8位    最大定时周期  定时0.1s
    25   T1CCTL0 |= 0x04;  //开启通道0的输出比较模式   0000 0100 模模式,需要开启通道0的比较模式
    26   T1IE = 1;         //使能定时器1中断
    27   T1OVFIM = 1;      //使能定时器1溢出中断
    28   EA = 1;           //使能总中断
    29   T1CTL = 0x0e;     //分频系数是128,模模式   0000 1110 
    30 }
    31 
    32 /*====================定时器1中断服务函数=====================*/
    33 #pragma vector = T1_VECTOR
    34 __interrupt void Timer1_Sevice()
    35 {
    36   T1STAT &= ~0x01;      //清除定时器1通道0中断标志  重要
    37   count++;              //累加定时周期
    38   if(count%5 == 0)      //定时0.5秒时间到
    39   {
    40     D3 = ~D3;
    41   }
    42   if(count%10 == 0)     //定时1秒时间到
    43   {
    44     D4 = ~D4;
    45   }
    46   if(count == 50)       //定时5秒时间到
    47   {
    48     D5 = ~D5;
    49     count = 0;
    50   }
    51 }
    52 
    53 /*==========================主函数============================*/
    54 void main()
    55 {
    56   Init_Port();        //端口初始化
    57   Init_Timer1();       //初始化定时器1
    58   while(1);
    59 }

    此程序的现象是:内部系统时钟16MHz的RC振荡器128分频作为定时器1的计数信号,在模模式中实现0.1秒定时。在定时中断服务函数中对全局变量count进行累加,实现0.5秒定时,LED3亮,而1秒后LED4亮,而5秒后LED5亮……如此往复。

  • 相关阅读:
    Arduino学习笔记 (五) -- 红外接收与解码
    Arduino学习笔记 (四) -- 常用函数
    VSCode 基础必备插件
    Arduino学习笔记 (三) -- 语言基本概念
    Arduino学习笔记 (二) -- 常见板型
    Arduino学习笔记 (一) -- 概述
    一个好玩的东西:页面点击鼠标左键显示浮动文字
    Python多线程
    Nginx配置转发
    阿里云(CentOs)搭建SVN服务
  • 原文地址:https://www.cnblogs.com/yuling520/p/12687253.html
Copyright © 2011-2022 走看看