定时器和计数器技术方案.ppt

  1. 1、本文档共37页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
定时:产生一个标准的时间间隔;如20mS,100mS或1000mS等.单片机使用这种方式可以产生一个符合某一要求的脉冲方波(如下图)。 计数:对外部的事件(脉冲)进行统计。 外部事件的发生是随机的,单片机不可能预知外部事件何时发生,但可以进行统计(计数)。当达到所要求的计数值时,单片机进行相应的操作。 单片机检测产品数量示意图 1、 定时/计数器是两用的,你需要它定时,它就定时,需要它计数,它就计数??就是说“定时”和“计数”需要选择模式?? 作业: 定时与计数的区别是什么? 如何控制MCS-51单片机进行定时或计数,及四种工作模式? 如何启动定时/计数器工作?定时或计数的值由什么来决定?如何判断定时/计数是否完成? 四种模式中,哪一种计数/定时的范围最大?哪一种具有自动重装功能,它用于什么场合? GATE端的作用是什么?它是如何工作的? MOV SBUF,A 指令意味着什么? 如何判断SBUF中的数据发送完或接收完成? 串行口的波特率由谁来决定,如何确定? 在计算波特率时,PCON中的SMOD位的作用是什么?他对波特率由何影响? (1)查询方式 #include reg51.h sbit P1_0 = P1^0; main() { TMOD = 0x02; TH0 = a%256; TL0 = a%256; TR0=1; for(;;){ do{} while(!TF0); P1_0 =!P1_0; TF0 = 0; } } (2)中断方式 #include reg51.h sbit P1_0=P1^0; timer0 () interrupt 1 { P1_0 = !P1_0; } main() { TMOD = 0x02; TH0 = a%256; TL0 = a%256; EA=1; ET0=1; TR0=1; while(1); } 补充实例1 采用T0定时方式2在P1.0口输出周期为0.5ms的方波。 周期为0.5ms方波 (3)工作方式0——使用13位的定时/计数器 定时时间 t = (213 - a)×12/fosc (μs) 计数初值 a = 213 - t×fosc/12 12MHz时的最大定时量t=213μs = 8.192ms 解:设fosc=12MHz 计数初值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 编程时将此初值装载到Tx中,例如: TH0 = 0x63; TL0 = 0x18; (4)方式3 TH0+TF1+TR1组成的8位定时器 TL0+TF0+TR0组成的8位定时/计数器 T1组成的无中断功能的定时器 特点:方式3下T0可有2个具有中断功能的8位定时器 在定时器T0用作方式3时,T1仍可设置为方式0~2。 课后思考题 1.定时/计数器的控制寄存器分别是那两个,初值存放在那些寄存器中? 2.能看图解释控制寄存器中各位的定义. 3.定时/计数器有几种工作模式,如何设置? 4.如何计算定时器的初值? 5.读懂书上程序实例2,实例3. * * 第6章 定时器/计数器 6.1 定时/计数器的结构与工作原理 6.2 定时器/计数器的控制 6.3 定时/计数器的工作方式 6.4 定时/计数器的编程和应用 1、计数概念的引入 从选票的统计谈起:画“正”。这就是计数,又如:录音机上的计数器、家里面用的电度表、汽车上的里程表等等,都是计数。 2、定时概念的引入 80C51中的计数器除了可以作为计数之用外,还可以定时用,如闹钟,电视机定时关机,空调定时开关等等, 一、基本概念 6.1 定时/计数器的结构与工作原理 纯软件定时/计数方法: 利用指令(延时子程序)运行所消耗的时间实现所需的定时时间。 delay(unsigned int time ){ unsigned int j = 0; for(;time0;time--) for(j=0;j125;j++); } 存在

文档评论(0)

奇缘之旅 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档