单片机定时器计数器n.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章 单片机的定时器/计数器 6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 将第4章实例5“计数显示器”中的软件查询法进行按键检测改用T0计数器方式2,并以中断方式编程。 【解】原图中按键是由I/O口P3.7引脚接入的,本实例需要将其改由T0(P3.4)引脚接入。 实例3 分析:将T0设置为计数器方式2,设法使其在1个外部脉冲到来时就能溢出(即计数溢出周次为1)产生中断请求。 计数初值为: a = 2 8 – 1 = 255 = 0xff 初始化TMOD = 0000 0110B = 0x06 #include reg51.h unsigned char table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char count=0; sbit p1_0=P1^0; int0_srv() interrupt 1 { //T0中断服务 if(++count==100)count=0; P0=table[count/10]; P2=table[count%10]; } main(){ P0=P2=table[0]; //开始显示00 TMOD=0x06; //T0方式1计数 TH0 = TL0 = 0xFF; //计数初值0xFF ET0=1; //允许T0中断 EA=1; //允许CPU中断 TR0=1; //启动T0 while(1); //无限循环 } 实例3参考程序 运行效果 使用13位的定时/计数器(THx7-0+TLx4-0) 定时时间 t = (213 - a)×12/fosc (μs) 计数初值 a = 213 - t×fosc/12 12MHz时的最大定时量t=213μs = 8.192ms (3) 方式0 解:计数初值a=213-5000×12/12=3192= 1100 0111 1000B TH0 TL0 0 1 1 0 0 0 1 1 0 0 0 1 1 0 0 0 6 3 1 8 H 计算T0方式0定时5ms的计数初值a 由于方式0的TL0高3位未用(一般填0) ,因此 a= 0110 0011 0001 1000 = 6318H 即,TH0 = 0x63; TL0 = 0x18; 实例4 fosc=12MHz 或:TH0 = 3192 / 32; TL0 = 3192 % 32; 除计数器位数不同外,方式0与方式1的逻辑结构并无差异。 方式0采用13位计数器是为了与早期产品MCS-48单片机兼容。 方式0的初值计算比较麻烦,一般采用方式1替代。 方式0 方式1 3种组合状态 T1仍可设置为方式0~2;通常将T1设定为定时方式2(作为波特率发生器使用) TH0+TF1+TR1组成的8位定时器 TL0+TF0+TR0组成的8位定时/计数器 T1组成的无中断功能的定时器 特点:方式3下T0可有2个具有中断功能的8位定时器 (4)方式3 6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 应用: 定时器——用于定时控制,或作为分频器发生各种不同频率的方波; 计数器——用于外部脉冲统计或外部中断源扩充; 复杂应用—需要将定时与计数结合起来。 * * 6.1 定时/计数器的结构与工作原理 6.1.1 定时/计数器的基本原理 6.1.2 定时/计数器的结构 6.2 定时/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 纯软件定时/计数方法: 定时——空循环预定周次,等待预定时间 计数——读取I/O口电平,统计变化次数 基本思路:由CPU统计状态变化次数,待预定结果出现后结束统计。 delay(unsigned int time ){ unsigned int j = 0; for(;time0;time--) for(j=0;j125;j++); } 存在问题:占用过多CPU机时 纯软件 单片机软硬件联合定时/计数方法: 等待CPU响应 系统时钟脉冲 加1计数器 溢出标志 溢出 定时器 外来信号脉冲 加1计数器 溢出标志 溢出 等待CPU响应 计数器 外来信号脉

文档评论(0)

wpxuang12 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档