码迷,mamicode.com
首页 > 其他好文 > 详细

4、定时器T1通过查询方式控制LED1周期性闪烁(轮训方式)

时间:2015-08-10 00:02:44      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

 

 

定时器T1通过查询方式控制LED1周期性闪烁

 1 /****************************************************************************
 2 * 文 件 名: main.c
 3 * 作    者: Amo [ www.amoMcu.com 阿莫单片机]
 4 * 修    订: 2014-04-08
 5 * 版    本: 1.0
 6 * 描    述: 定时器T1通过查询方式控制LED1周期性闪烁
 7 ****************************************************************************/
 8 #include <ioCC2540.h>
 9 
10 typedef unsigned char uchar;
11 typedef unsigned int  uint;
12 
13 #define LED1 P1_0       // P1.0口控制LED1
14 
15 /****************************************************************************
16 * 名    称: InitLed()
17 * 功    能: 设置LED灯相应的IO口
18 * 入口参数: 无
19 * 出口参数: 无
20 ****************************************************************************/
21 void InitLed(void)
22 {
23     P1DIR |= 0x01;      //P1.0定义为输出
24     LED1 = 0;           //使LED1灯下电默认为熄灭     
25 }
26 
27 /****************************************************************************
28 * 名    称: InitT1()
29 * 功    能: 定时器初始化,系统不配置工作时钟时默认是2分频,即16MHz
30 * 入口参数: 无
31 * 出口参数: 无
32 ****************************************************************************/
33 void InitT1()
34 {
35     T1CTL = 0x0d;       //128分频,自动重装 0x0000-0xFFFF 
36     T1STAT= 0x21;       //通道0,中断有效   
37 }
38 
39 /****************************************************************************
40 * 程序入口函数
41 ****************************************************************************/
42 void main(void)
43 {
44     uchar count=0;
45     
46     InitLed();             //调用初始化函数
47     InitT1();
48     
49     while(1)
50     {
51         if(IRCON > 0)
52         { 
53             IRCON=0;
54             if(count++ >= 1) //约1s周期性闪烁,示波器测大约为1025MS
55             {
56               count=0;
57               LED1 = !LED1;  //LED1闪烁        
58             }
59         } 
60     }
61 }

CC254x 的 T1 定时器( 16 位) 需要配置三个寄存器 T1CTL、 T1STAT、 IRCON:

技术分享

技术分享

所以配置如下:

27 /****************************************************************************
28 * 名    称: InitT1()
29 * 功    能: 定时器初始化,系统不配置工作时钟时默认是2分频,即16MHz
30 * 入口参数: 无
31 * 出口参数: 无
32 ****************************************************************************/
33 void InitT1()
34 {
35     T1CTL = 0x0d;       //128分频,自动重装 0x0000-0xFFFF 
36     T1STAT= 0x21;       //通道0,中断有效   
37 }

不采用中断可以轮训IRCON,当定时器1中断时置为1,轮训需要手动清零(采用中断子程序会自动清零)

链接:http://pan.baidu.com/s/1bnlWvEJ

 

 

 

4、定时器T1通过查询方式控制LED1周期性闪烁(轮训方式)

标签:

原文地址:http://www.cnblogs.com/happyhappy/p/4716481.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!