版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
智能产品设计与应用定时器/计数器案例导入01/PART
ONE定时器/计数器1.定时/技术器的基本原理定时/计数器,是一种能够对内部时钟信号或外部输入信号进行计数,当计数值达到设定要求时,向CPU提出中断处理请求,从而实现定时或者计数功能的外设。定时/计数器的最基本工作原理是进行计数。不管是定时器还是计数器,本质上都是计数器,可以进行加1(减1)计数,每出现一个计数信号,计数器就会自动加1(自动减1),当计数值从0变成最大值(或从最大值变成0)溢出时,定时/计数器就会向CPU提出中断请求。定时器/计数器2.CC2530的定时/计数器CC2530共有4个定时/计数器定时器1:16位的定时器,功能最全。定时器2:为系统定时,用户不用此定时器。定时器3:4:
8位定时器定时器/计数器2.CC2530的定时/计数器CC2530T1定时/计数器定时器1:16位的定时器自由运行模式:0x0000-0xFFFF,CHXIF和OVFIF被置1模模式:0x0000-T1CC0,CHXIF和OVFIF被置1正计数/倒计数模式:0x0000-T1CC0-0x0000,CHXIF和OVFIF被置1定时器/计数器2.CC2530的定时/计数器T1定时/计数器通过两个8位的SFR读取16位的计数器值:T1CNTH和T1CNTL,分别包含在高位字节和低位字节中。当读取T1CNTL时,计数器的高位字节在那时被缓冲到T1CNTH,以便高位字节可以从T1CNTH中读出。T1CNTL必须总是在读取T1CNTH之前首先读取。定时器/计数器2.CC2530的定时/计数器T1定时/计数器工作模式定时器1:16位的定时器自由运行模式:0x0000-0xFFFF,CHXIF和OVFIF被置1模模式:0x0000-T1CC0,CHXIF和OVFIF被置1正计数/倒计数模式:0x0000-T1CC0-0x0000,CHXIF和OVFIF被置1定时器1的三种工作模式自由运行模式:计数器从0x0000开始,在每个活动时钟边沿增加1,当计数器达到0xFFFF时溢出,计数器重新载入0x0000并开始新一轮的递增计数。该模式的计数周期是固定值0xFFFF,当达到最终计数值0xFFFF时,标志位T1IF和OVFIF被设置。定时器/计数器2.CC2530的定时/计数器定时器1的三种工作模式模模式:计数器从0x0000开始,在每个活动时钟边沿增加1,当计数器达到T1CC0寄存器保存的值时溢出,计数器又将从0x0000开始新一轮的递增计数,模模式的计数周期可由用户自行设定。定时器/计数器2.CC2530的定时/计数器定时器1的三种工作模式正计数/倒计数模式:计数器反复从0x0000开始,正计数到TICC0保存的最终计数值,然后再倒计数回0x0000,当达到最终计数值时,标志位T1IF和OVFIF被设置。定时器/计数器2.CC2530的定时/计数器定时器有3种情况能产生中断请求:计数器达到最终计数值(溢出或回到零)。输入捕获事件。输出比较事件(模模式时使用)。使用模模式要特别注意,需要开启通道0的输出比较模式,否则计数器的值达到T1CC0后,是不会产生溢出中断的。定时器/计数器3.CC2530的定时/计数器中断系统定时器/计数器3.CC2530的定时/计数器中断系统T智能产品设计与应用定时器/计数器寄存器详解主讲教师:肖俊芳案例导入01/PART
ONE定时器/计数器寄存器详解任务:用定时器1的模模式实现1秒定时将内部系统时钟16MHz的RC振荡器128分频作为定时器1的计数信号,在模模式中实现0.1秒定时。在定时中断服务函数中对全局变量count进行累加,实现1秒定时,并将LED1每1秒切换亮灭,LED2每4秒切换亮灭。设计思路
CC2530模块P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2计算最大计数值,并填入T1CC0H和T1CCOL。使用模模式,记得开启通道0的输出比较模式。使能定时器1相关的中断控制位。在T1CTL寄存器设置分频系数,启动定时器。定时器初始化编写定时器1中断服务处理函数,在这里记得手工清除T1STAT寄存器中的中断标志位。定义一个全局变量count,进行1秒定时。定时器中断定时器/计数器寄存器详解周期的概念TT1CNTH–定时器1计数高位T1CNTL–定时器1计数低位T1CTL–定时器1控制T1STAT–定时器1状态T1CCTLn–定时器1通道n捕获/比较控制T1CCnH–定时器1通道n捕获/比较高位值T1CCnL–定时器1通道n捕获/比较低位定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器定时器/计数器寄存器详解与定时器T1相关的寄存器智能产品设计与应用定时器/计数器配置主讲教师:肖俊芳案例导入01/PART
ONE定时器/计数器配置任务:用定时器1的模模式实现1秒定时将内部系统时钟16MHz的RC振荡器128分频作为定时器1的计数信号,在模模式中实现0.1秒定时。在定时中断服务函数中对全局变量count进行累加,实现1秒定时,并将LED1每1秒切换亮灭,LED2每4秒切换亮灭。
CC2530模块P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2定时器/计数器配置设计思路计算最大计数值,并填入T1CC0H和T1CCOL。使用模模式,记得开启通道0的输出比较模式。使能定时器1相关的中断控制位。在T1CTL寄存器设置分频系数,启动定时器。定时器初始化编写定时器1中断服务处理函数,在这里记得手工清除T1STAT寄存器中的中断标志位。定义一个全局变量count,进行1秒定时。定时器中断定时器/计数器配置1.定时器初始化函数设计765432100:捕获模式1:比较模式T1IE=1;7:43:2分频系数1:0工作模式00:1分频01:8分频
10:32分频11:128分频00:暂停01:自由运行
10:模模式11:正/倒计数一旦设置了定时器1的工作模式,就马上开始计数工作了,故该语句要写在初始化最后一行。①T1CC0计数最大值②T1CCTL0开启通道0比较模式T1CC0L=0XD4;先写低位T1CC0H=0X30;后写高位5个通道:0-4。③T1IE=1;定时器1中断允许④EA=1;开启总中断EA=1;⑤T1CTL定时器1工作模式T1CTL=0X0E;T1CCTL0|=0X04;定时器/计数器配置2.设置定时器1的最大计数值定时器1共有5对T1CCxH和T1CCxL寄存器,分别对应通道0到通道4。在使用定时器1的定时功能时,使用T1CC0H和T1CC0L两个寄存器存放最大计数值的高8位和低8位。最大计数值=定时时长/定时器计数周期。定时器/计数器配置3.计算定时器1的最大计数值在本实训中,系统时钟为16MHz,分频系数为128,要定时0.1秒,最大计数值为:T1CC0L=0XD4;先写低位T1CC0H=0X30;后写高位定时器/计数器配置4.定时器初始化函数设计初始化定时器1的最大计数值。开启定时器1比较模式。开启定时器1中断和总中断。设置分频系数(128)和工作模式(模模式)启动定时器。T1CCTL0|=0X04;T1IE=1;开启定时器1中断EA=1;开启总中断T1CTL=0X0E;T1CC0L=0XD4;先写低位T1CC0H=0X30;后写高位定时器/计数器配置5.定时器中断服务函数设计清除T1STAT的中断标志位。OVFIF:定时器1计数器溢出中断标志位CHXIF:定时器1通道X中断标志位T1STAT&=~0x21;
//清除定时器1中断标志,通道0中断标志累加全局变量count。count被10整除即1秒的定时到了。4秒定时到将count清零。7-6543210保留OVFIFCH4IFCH3IFCH2IFCH1IFCH0IF定时器/计数器配置定时器1通道0,自由模式,128分频,0.1s,初始化T1CC0L=0XD4;//先写低位T1CC0H=0X30;//后写高位T1CCTL0|=0X04;//T1CCTL0,开启比较模式。T1IE=1;//开启定时器1中断EA=1;//开启总中断T1CTL=0X0E;//设置分频系数(128)和工作模式(模模式)并启动定时器定时中断响应后,清除中断标志位:
T1STAT&=~0x21;//清除定时器1中断标志,通道0中断标志
智能产品设计与应用定时器/计数器应用编程主讲教师:肖俊芳案例导入01/PART
ONE任务选择内部16MHz时钟的128分频作为计数器1的计数信号。以模模式启动定时器1,进行0.1秒的间隔定时。当k1按键长按松开后,切换D1灯的开关状态当k1按键短按松开后,切换D2灯的开关状态。注:按键按下时间大于0.5秒,定义为长按,反之为短按。基于定时器1,用按键长按和短按切换D1,D2灯的状态
P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2CC2530模块前后台的基本概念前台系统:一般指中断级程序,即中断服务函数。后台系统:一般指任务级程序,即死循环中的主函数。基本的思维模式:中断服务函数中的逻辑处理受到主函数运行的制约,主函数中的某些功能又取决于中断服务函数中的变量,两者相互关联,相互制约,协同运行。以本节课任务:“按键长按与短按的实现”为例。后台工作:扫描按键状态,在按键按下和松开时分别标志不同的变量值,并且对按键的按下时间T进行判断,决定按键是长按还是短按。前台工作:定时器循环进行0.1秒间隔定时。按键按下,开始计算时间,按键松开,结束计算时间。程序讲解程序讲解Count=0;//计时次数F_key=0;//确定是否按下F_key=1?Count++;有按键按下,才计时定时器中断服务程序Scan_key()确定按键按下Count=0;F_key=1;开始计时等待松开;F_key=0;//停止计时Count>5?长按;短按;程序讲解#include"iocc2530.h"#defineLED1P1_0#defineLED2P1_1#defineLED3P0_4#definek1P0_1unsignedintcount=0;//定时累加unsignedcharF_time=0;unsignedcharF_key=0;/1.端口初始化voidInit_Port(){//led设置//1.功能0:io,1:外设P1SEL&=~0x03;//0000,0011P0SEL&=~0X10;//0001,0000//2.方向0:输入,1:输出P1DIR|=0X03;P0DIR|=0X10;
//k1设置P0_1//1.功能P0SEL&=~0X02;//0000,0010//2.方向P0DIR|=0X02;//3.输入模式P0INP&=~0X02;P2INP&=~0X20;//0010,0000
LED1=1;//熄灭LED2=1;//熄灭LED3=1;//熄灭}头文件&宏定义初始化子程序程序讲解voidInit_Time()//定时器中断初始化{//1.计数最大值T1CC0L=0XD4;T1CC0H=0X30;//2.开启通道0比较模式T1CCTL0|=0X04;//3.定时器1中断允许T1IE=1;//4.开启总中断EA=1;//5.定时器1工作模式设置,开启定时T1CTL=0X0E;}//3.定时器中断服务函数#pragmavector=T1_VECTOR_interruptvoidTime1_Sevicr(){T1STAT&=~0X21;//清除定时中断标志if(F_key==1)count++;}程序讲解voidscan_key(){if(k1==0){delay(200);if(k1==0){count=0;//确定按下,计时初始值清0F_key=1;//定时器开始计时while(k1==0);F_key=0;//定时器停止计时if(count>5){LED1=~LED1;//切换1状态}elseLED2=~LED2;//切换2状态}}}voidmain(){Init_Port();//1.端口初始化Init_Time();//2.定时器中断初始化while(1){scan_key();}}拓展任务单击按键k1,切换LED1灯的开关状态;双击按键K1,切换LED2灯的开关状态;三连击按键K1,切换LED3灯的开关状态;四连击按键K1,切换LED1-3的开关状态。定时器,定时0.1s,实现单击、双击、三击、四击控制
P1_0P1_1P0_4P0_1P2_0LED1LED2LED3K1K2CC2530模块编程思路每个按键按下都定义一个生命周期,假如是0.5秒,生命周期结束的时候才确定按键的最终状态。如果在按键的生命周期内有新的按键按下,将会重新计算生命周期,这时候就是双击。在双击的生命周期中,又有新的按键按下,则生命周期会重新计算,这时候就是三连击。在整个生命周期中如果没有新的按键按下,那么最终的按键状态就是三连击。如此类推。编程思路编程思路#include"iocc2530.h"#defineLED1P1_0#defineLED2P1_1#defineLED3P0_4#definek1P0_1unsignedcharcount=0;unsignedchark_Num=0;voidInitIO(void)//端口初始化{//功能:0:IO,1:外设P1SEL&=~0X03;P0SEL&=~0X12;//0001,0010
//方向:0:输入,1:输出P1DIR|=0X03;P0DIR|=0X10;//0001,0000,P0_4输出P0DIR&=~0X02;//0000,0010,P0_1输入//输入模式:0:上拉/下拉,1:三态P0INP&=~0X02;//0:上拉/下拉,0000,0010,P2INP&=~0X20;//0:上拉LED1=1;LED2=1;LED3=1;//开始灯熄灭}编程思路voidInit_Timer1(void){T1CC0L=0XD4;//先写低位T1CC0H=0X30;//后写高位T1CCTL0|=0X04;//T1CCTL0
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 黄酒勾兑工岗前技能考核试卷含答案
- 纤维调施胶干燥工改进测试考核试卷含答案
- 汽车发动机再制造装调工班组考核测试考核试卷含答案
- 硅芯制备工复测评优考核试卷含答案
- 氯丁橡胶装置操作工安全知识宣贯水平考核试卷含答案
- 阳极氧化工诚信道德评优考核试卷含答案
- 磨毛(绒)机挡车工岗位成果转化考核试卷含答案
- 宝石检验员工作能力测试考核试卷含答案
- 井下出矿工安全技能测试知识考核试卷含答案
- 稀土废液回收工安全意识强化模拟考核试卷含答案
- 新春开学第一课:2026考研择校指导
- 化妆知识课件
- 2025年重庆市渝北区法院系统招聘真题
- 《燃烧与爆炸》-第5章
- 2026年河北高考政治真题试卷+解析及答案
- 2026年企业未分配利润转增资本财务处理规范与税务申报技巧
- 2025年湖南岳阳市总工会社会化工会工作者和专职集体协商指导员招聘16人(公共基础知识)测试题附答案解析
- 医院招聘行政后勤考试试题(附答案)
- DB51T 3312-2025 四川省斜坡地质灾害隐患风险详查技术指南
- 2025年杭州水务考试题库
- 2025年上海农林职业技术学院单招笔试职业适应性测验试题库含答案解析(5套共100道单选合辑)
评论
0/150
提交评论