第6章单片机的定时器计数器_第1页
第6章单片机的定时器计数器_第2页
第6章单片机的定时器计数器_第3页
第6章单片机的定时器计数器_第4页
第6章单片机的定时器计数器_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.1 定时定时/ /计数器的结构与工作原理计数器的结构与工作原理6.2 定时器定时器/计数器的控制计数器的控制第第6章章 单片机的定时器单片机的定时器/计数器计数器6.3 定时定时/计数器的工作方式计数器的工作方式6.4 定时定时/计数器的编程和应用计数器的编程和应用实现定时一般有三种方法:实现定时一般有三种方法:利用软件实现(延时程序)利用软件实现(延时程序);优点:优点:简单,控制方便;简单,控制方便;缺点缺点:CPU效率低。效率低。硬件实现,专门设计一个单稳态定时器:硬件实现,专门设计一个单稳态定时器:优点:优点:CPU效率高;效率高;缺点:缺点:修改参数麻烦。修改参数麻烦。利用计数器

2、实现利用计数器实现计数器计数器溢出溢出预置数预置数输入脉冲输入脉冲计算机一般利用第三种方法实现计算机一般利用第三种方法实现1us8位位256us单片机单片机软硬件联合软硬件联合定时定时/ /计数方法:计数方法:等待等待CPUCPU响应响应系统时钟脉冲系统时钟脉冲加加1 1计数器计数器溢出标志溢出标志溢出溢出定时器定时器外来信号脉冲外来信号脉冲加加1 1计数器计数器溢出标志溢出标志溢出溢出等待等待CPUCPU响应响应计数器计数器外来信号脉冲外来信号脉冲加加1 1计数器计数器溢出标志溢出标志溢出溢出等待等待CPUCPU响应响应系统时钟脉冲系统时钟脉冲K K定时定时/ /计数器计数器定时器本质上是计

3、数器,前者是对时钟脉冲进行计数,后定时器本质上是计数器,前者是对时钟脉冲进行计数,后者则是对外来脉冲进行计数者则是对外来脉冲进行计数. .可可 编编 程程 的的6.1 定时定时/计数器的结构与工作原理计数器的结构与工作原理6.2 定时器定时器/计数器的控制计数器的控制6.3 定时定时/计数器的工作方式计数器的工作方式6.4 定时定时/计数器的编程和应用计数器的编程和应用实例实例1 设单片机的设单片机的fosc=12MHz,采用,采用T0定时方式定时方式1在在P1.0脚上输出周期为脚上输出周期为2ms的方波。的方波。【分析【分析】 方式字方式字 01H #include sbit P1_0=P1

4、0;void main (void) TMOD=0 x01; /定时器定时器0方式方式1 TR0=1; for( ; ; ) TH0=(65536-1000)/256; /置计数初值置计数初值 TL0=(65536-1000)%256;while(!TF0); /查询等待查询等待TF0复位复位 P1_0=!P1_0; /定时时间到定时时间到P1.0反相反相 TF0=0; /软件清软件清TF0 查查询询方方式式#include sbit P1_0=P10; /-/ 定时器定时器0中断处理程序中断处理程序-void timer0 (void) interrupt 1 P1_0=!P1_0; /P1

5、.0取反取反 TH0=(65536-1000)/256; /计数初值重装载计数初值重装载 TL0=(65536-1000)%256;/-主函数主函数-void main (void) TMOD=0 x01; P1_0=0; TH0=(65536-1000)/256; /预置初值预置初值 TL0=(65536-1000)%256; EA=1; ET0=1; TR0=1; while (1);中中断断方方式式ETx =1; /开定时开定时x中断,中断,x=0或或1EA = 1; /开总中断开总中断tx_srv () interrupt n /n=1或或3 while (!TFx) ; / x=0/

6、 x=0或或1 1确定采用何种方式处理溢出结果确定采用何种方式处理溢出结果实例实例2采用采用T1T1定时在定时在P1.0P1.0口输出周期为口输出周期为0.5ms0.5ms的方波。的方波。【分析】【分析】方式字方式字20H 中断方式中断方式 #include sbit P1_0=P10;timer1 () interrupt 3 P1_0 = !P1_0; main()TMOD = 0 x20; TH1 = 6; TL1 = 6; EA=1; ET1=1; TR1=1; while(1);#include sbit P1_0 = P10;main() TMOD = 0 x20; TH1 =6;

7、 TL1 =6; TR1=1; for(;) while(!TF1); P1_0 =!P1_0; TF1 = 0; 查询方式查询方式 实例实例7采用定时中断方式,实现下图流水灯控制功能。采用定时中断方式,实现下图流水灯控制功能。要求灯的循环速率为每秒要求灯的循环速率为每秒1次。次。方式字方式字01H #define uchar unsigned char /定义一下方便后面使用定义一下方便后面使用#include bit ldelay=0; /长定时溢出标记长定时溢出标记uchar t=0; /定时溢出次数定时溢出次数/-定时器定时器0中断函数中断函数-timer0() interrupt 1

8、 t+;if(t=20) t=0;ldelay=1;/每次溢出置一个标记,以便主程序处理每次溢出置一个标记,以便主程序处理TH0 =(65536-50000)/256;/重置重置T0初值初值0 x3cb0 TL0 =(65536-50000)%256;完整程序完整程序void main(void) / 主程序主程序uchar code ledp8=0 xfe,0 xfd,0 xfb,0 xf7,0 xef,0 xdf,0 xbf,0 x7f; /跑马灯工作状态跑马灯工作状态uchar ledi=0; /用来指示显示顺序用来指示显示顺序TMOD=0 x01;/定义定义T0方式方式1TH0 =(6

9、5536-50000)/256; /T0初值初值TL0 =(65536-50000)%256;TR0=1; /启动定时器启动定时器ET0=1; /打开定时器打开定时器0中断中断EA=1; /打开总中断打开总中断while(1) /主程序循环主程序循环if(ldelay) /发现有时间溢出标记,进入处理发现有时间溢出标记,进入处理ldelay=0; /清除标记清除标记P2=ledpledi; /读出一个值送到读出一个值送到P2口口ledi+; /指向下一个指向下一个if(ledi=8)ledi=0;/到了最后一个灯就换到第一个到了最后一个灯就换到第一个 实例实例62.5s0.5s方式字方式字01

10、H #include #define uchar unsigned char uchar time; /时间累计时间累计 uchar period=250; uchar high=50;sbit p10=P10;/-定时器定时器0中断处理程序中断处理程序- timer0 (void) interrupt 1 TH0= (65536 -8333) /256; /重载计数初值重载计数初值 TL0= (65536 -8333) %256; if ( +time=high) p10=0; /高电平时间到变低高电平时间到变低 else if (time=period) /周期时间到变高周期时间到变高 t

11、ime=0; p10=1; 完整程序完整程序/-主函数主函数-main ( ) TMOD=0 x01; /定时器定时器0方式方式1 TH0= (65536 -8333) / 256; /预置计数初值预置计数初值 TL0= (65536 -8333) %256; EA=1; ET0=1; TR0=1; while (1);完整程序完整程序编写程序,要求采用编写程序,要求采用T0,从,从P1.7输输出周期为出周期为400ms,占空比,占空比9:1的矩形脉的矩形脉冲信号。冲信号。实例实例3方式字方式字06H 完整程序完整程序#include unsigned char code table=0 x3

12、f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f;unsigned char count=0; /计数器赋初值计数器赋初值/-中断服务程序中断服务程序-int0_srv() interrupt 1count+;if(count=100) count=0;P0=tablecount/10; /P0口显示初值口显示初值 P2=tablecount%10; /-主程序主程序-void main(void)/计数器赋初值计数器赋初值 P0=table0; /P0口显示初值口显示初值 P2=table0; /P2口显示初值口显示初值 TMOD

13、=0 x06; TH0=TL0=0 xff; ET0=1; EA=1; TR0=1; while(1);完整程序完整程序实例实例2原理分析原理分析: : GATE=TR1=1GATE=TR1=1时允许时允许INT1INT1的脉冲控制定时器的启停的脉冲控制定时器的启停, ,即即INT1=1INT1=1可可启动定时器,启动定时器,INT1=0INT1=0可关闭定时器。若可关闭定时器。若T1T1为定时器方式(计数初值为为定时器方式(计数初值为0 0),),则根据则根据T1T1先启动、再关闭后的计数值可算出被测脉冲宽度。先启动、再关闭后的计数值可算出被测脉冲宽度。#include sbit P3_3=

14、P33;void main() unsigned char *P, i; int a; P=0 x40; /指针指向片内指针指向片内40H单元单元 TMOD=0 x90; /GATE=1,工作方式为计数器,工作方式为计数器T1 TL1=0 x00; TH1=0 x00; /装入初值装入初值 while (P3_3=1); /等待等待INT1变低变低 TR1=1; /启动计数器启动计数器 while(P3_3=0); /等待等待INT1变高,即脉冲上升沿变高,即脉冲上升沿 while(P3_3=1); /等待等待INT1变低,即脉冲下降沿变低,即脉冲下降沿 TR1=0; /停止计数停止计数 i=

15、TH1; /读入读入TH1值值 a=i*256+TL1; /计数结果转换为计数结果转换为10进制进制 for (a;a!=0; ) /a不等于不等于0时循环,转换为时循环,转换为BCD码码 *P = a%10; /个位存放在个位存放在40单元单元 a=a/10; P+; 定时计数器用作外部中断扩展定时计数器用作外部中断扩展在计数方式下,如果把计数器预置为全在计数方式下,如果把计数器预置为全1,则只要,则只要在计数输入端(在计数输入端(T0或或T1输入端)加一脉冲就可以输入端)加一脉冲就可以使计数器溢出,产生溢出中断。这就是定时计使计数器溢出,产生溢出中断。这就是定时计数器实现外部中断扩展的思想。具体方法是:数器实现外部中断扩展的思想。具体方法是: 置定时计

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论