历史上的今天
返回首页

历史上的今天

今天是:2024年09月04日(星期三)

正在发生

2019年09月04日 | cc2530裸机编程系列笔记1--定时器Timer1模模式的程序设计

2019-09-04 来源:eefocus

定时器/计数器是单片机的几大重要资源之一,而cc2530的定时器/计数器与普通的51系列单片机相比,工作模式增加了。通过学习手册可知cc2530的定时器/计数器有三种工作模式,风别为自由模式、模模式和正计数/倒计数模式。无论哪种模式,均可以采用查询和中断两种方式使用定时器的。本专题讲述cc2530定时器/计数器处于模模式时的编程方法。


首先是用查询的方式来使用Timer1定时器。使用Timer定时器时,首先要对该定时器进行初始化,代码如下:


void INIT_Timer1()

  T1CTL = 0x00;     //1分频、停止运行

  T1CTL = 0x0e;     //128分频 模模式

  T1CCTL0 |= 0x04;  //设定timer1通道0输出比较模式

  T1CC0L = 0x24;

  T1CC0H = 0xF4;

  IRCON &= ~0x02;

}


很容明显可以看出在使用Timer1时,我们要用到T1CTL、T1CCTL0、T1CC0L、T1CC0H及IRCON这五个寄存器。T1CTL是控制寄存器,用于①设置分频器划分值如f/8或f/128等,这里的f是标记频率。②定时器三种模式的选择。T1CC0L、T1CC0H这两个寄存器存放的是计数的终值(计数记到该值,设置中断标志位,或产生中断)IRCON中则为中断标志位。之所以写出代码

IRCON &= ~0x02;

是为了先清除Timer1对应的中断标志位。

T1CCTL0 |= 0x04;  //设定timer1通道0输出比较模式


那么该行代码中的T1CCTL0做该赋值操作又有何意义?


模模式需要开启通道0的输出比较模式,否则计数器只有到了0XFF时才会产生溢出中断(相应的产生溢出标志),也就是如果没有设置通道0的输出比较模式,计数器的值到达T1CC0后,不会产生溢出中断(相应的溢出标志不会置1),这点需要特别注意。下面贴出整个该程序的代码:



#include

#define LED1 P1_0   //定义LED1为P1.0  

 

int count = 0;

 

void INIT_LED(void)

{

  P1SEL &= ~0x01;   //设P1.0为普通I/O功能

  P1DIR |= 0x01;    //设P1.0为输出方向

  LED1 = 0;         //将LED1点亮

}

 

void INIT_Timer1()

  T1CTL = 0x00;     //1分频、停止运行

  T1CTL = 0x0e;     //128分频 模模式

  T1CCTL0 |= 0x04;  //设定timer1通道0输出比较模式

  T1CC0L = 0x24;

  T1CC0H = 0xF4;

  IRCON &= ~0x02;

}

 

void main( void )

{

  INIT_LED();

  INIT_Timer1();

  LED1 = 1 ;

  //int count = 0;

  while(1)

  {

    if(IRCON &= 0x02)    

    {

      count++;

      if(count==1)

      {

         IRCON &= ~0x02 ;

         count = 0;

         LED1 = !LED1;

      }

    }

  }

}

      之所以称该程序的编写方式为查询方式就在于如下代码,


if(IRCON &= 0x02)    

    {

      count++;

      if(count==1)

      {

         IRCON &= ~0x02 ;

         count = 0;

         LED1 = !LED1;

      }

    }

      在主程序中不断对中断标志位进行查询,若中断标致位被置位时需要软件清0。

推荐阅读

史海拾趣

Amulet Technologies公司的发展小趣事

Amulet Technologies 是一家位于美国佛罗里达州坦帕的公司,专注于嵌入式系统和触摸屏技术。以下是该公司发展的五个相关故事:

  1. 公司成立与初期发展:Amulet Technologies成立于1998年,由一群有经验的电子工程师创立。公司初期的主要目标是开发具有低功耗、高性能和易于集成的嵌入式系统解决方案。他们迅速建立了一支专业团队,并开始研发新技术以满足市场需求。

  2. 触摸屏技术的突破:随着智能手机和平板电脑等设备的普及,触摸屏技术成为了电子行业的热门话题。Amulet Technologies在2006年推出了其首个触摸屏控制器产品,为用户提供了更加直观、灵活的操作体验。这一技术突破使得公司在市场上获得了更多的关注和认可。

  3. 拓展产品线:除了触摸屏技术,Amulet Technologies还不断拓展其产品线,涵盖了嵌入式图形处理器、开发工具和软件库等领域。公司致力于提供全面的解决方案,帮助客户快速开发和部署嵌入式系统。

  4. 合作伙伴关系:为了加强自身实力并扩大市场份额,Amulet Technologies积极与其他公司建立合作伙伴关系。公司与硬件制造商、软件开发商和系统集成商等各个领域的企业合作,共同推动产品创新和市场拓展。

  5. 持续创新与未来展望:Amulet Technologies一直致力于不断创新,满足客户不断变化的需求。公司不断投入研发,开发新技术,并与客户紧密合作,持续改进和优化产品。未来,公司将继续致力于嵌入式系统和触摸屏技术的研究与开发,为客户提供更加优质的产品和服务。

Dialog公司的发展小趣事

Dialog公司在高能效系统电源管理领域积累了丰富的经验和知识,并形成了包括音频、短距离无线、AC/DC电源转换和VoIP技术在内的技术积累。这些技术积累为Dialog公司提供了强大的研发实力,使其能够迅速开发出面向各类个人便携式应用的集成电路(IC)。这些设备包括智能手机、平板电脑、超极本、数字无绳电话等。

Habia Cable公司的发展小趣事

Dialog公司最初可以追溯到1972年,当时它是由美国洛克希德导弹航空公司所属的一个情报科学实验室负责建立的。这个实验室的初衷是探索和开发新的通信技术,以支持军事和情报领域的需求。随着时间的推移,这个实验室逐渐积累了丰富的技术经验和研发实力。

Hind Rectifiers Ltd公司的发展小趣事

近年来,Dialog公司通过一系列收购活动实现了快速扩张。例如,Dialog公司收购了Adesto公司,进一步拓展了工业物联网市场。这次收购为Dialog公司带来了一系列新的智能楼宇自动化工业解决方案,为其现有的制造自动化产品提供了非常好的补充。此外,收购Adesto还为Dialog公司带来了近5,000家客户公司,这些公司中大部分对Dialog公司来说是新客户。

Circuit Technology Inc公司的发展小趣事

随着市场竞争的加剧,CTI意识到品质管理对于企业发展的重要性。于是,公司开始引进先进的品质管理体系,从原材料采购到生产流程控制,再到产品检测,每一个环节都严格把关。同时,CTI还加大了品牌宣传力度,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。这些举措不仅提高了产品的品质稳定性,也赢得了客户的信赖和支持。

A-BRIGHT公司的发展小趣事

在快速发展的同时,A-BRIGHT公司深知品质的重要性。公司加大了对品质管理的投入,引入了先进的生产线和检测设备,并建立了严格的质量管理体系。通过持续改进和优化生产流程,A-BRIGHT的产品质量得到了显著提升,赢得了客户的信任和好评。

问答坊 | AI 解惑

Keil uVision2 下设计MCS-51 系列单片机的技巧

Keil uVision2 下设计MCS-51 系列单片机的技巧…

查看全部问答>

新型的大功率4148

新型的大功率4148採用性價比最好的厚膜塗裝方式產製出平板式貼片CHIP DIODE開關二極管,簡稱CD4148,此外也有 穩壓 肖特基 SCHOTTKY 都可以通過SGS與無鉛260度C 10SEC 高溫回流焊錫 使用日本羅姆公司專用芯片封裝成1206 /0805,的可以耐住500 ...…

查看全部问答>

寻求实习单位(南京)

本人即将进入研二,欲打算在南京寻求一份单位实习。大概方向为,电子、计算机、通信相关方向。 尽管现在是研一,但是已有三年的研发经验,初步具备直接上手开发、管理项目的能力,能相当熟练应用各种研发软硬件工具,以及弱电工程,尤其各种系列单 ...…

查看全部问答>

熟悉运放的大哥帮我推荐个芯片

我现在需要把一个DAC输出的电压,在0~3V范围内,需要提高到0~4V就可以了,使用5V电源,其他方面没有特殊的要求,转换的电压是用来调节3525的。我自己先用OP27弄了一下,但是不知道输出电压总是高于2V,下不去!哪位给我推荐个合适的芯片?谢谢!…

查看全部问答>

最新整合芯片资料——74系列芯片内部结构版

此PDF文档是从网上,书籍中整理。 此文档包揽众多74系列芯片的内部结构,及引脚说明等。无论是学生,还是电子爱好者,无疑对学习和工作,都是莫大的帮助。 此文档,高飞电子花了较多心力,请网友们珍惜,勿为了发贴,破坏其完整性,谢谢! ...…

查看全部问答>

LPC1343中文数据手册---中文翻译,4.30更新,基础部分翻译完毕

呵呵,我还是喜欢看中文数据手册。 无奈老外们对中国市场不大重视,根本不提供中文手册。(迄今只看到AVR单片机有官方提供的中文数据手册,赞一个)。   相信大家伙跟我一样,也有很多人喜欢看中文数据手册。   既然没有现成的,只 ...…

查看全部问答>

taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。

taskspawn 分配一个任务时,参数中有优先级,堆栈大小,我要怎么来写啊?刚刚搞这个东西。 我看例子中优先级大都是90,我要是创建多个任务时,都写90行吗? 还有堆栈大小我要根据什么来设置啊? 谢谢了…

查看全部问答>

朗科U盘变成OTi的U盘

我在使用一些U盘量产工具时,不知道怎么搞的,朗科U盘变成OTi的U盘了.现在无论在哪台电脑上,插上U盘后就变成了OTi设备了. 请教? …

查看全部问答>

买560还是510的仿真器,请过来人给个建议!

560和510的价格差很大,这大家都知道。我想在能用510的情况下就用510。目标板是tms320vc5509和tms320c6416我的情况是只需要打断点step by step 跟踪程序,偶尔看看内存数据或者将内存数据以图像显示。有必要买560吗?…

查看全部问答>

高手进,帮忙求RL最大电流

已知UI=19.6V,三极管VT1,VT2的电流放大系数=50,Ube1=Ube2=0.7V, Uz=+5.3V,R1=300欧,R2=200欧,R3=300欧,RC2=2.5K欧。 试计算出RL上的最大电流。 参考答案只有结果,无计算过程,为170mA,求思路 \0\0\0eeworldpostqq…

查看全部问答>