《单片机原理及工程应用》课件-第4章 定时器应用举例(第3次课)应用举例_第1页
《单片机原理及工程应用》课件-第4章 定时器应用举例(第3次课)应用举例_第2页
《单片机原理及工程应用》课件-第4章 定时器应用举例(第3次课)应用举例_第3页
《单片机原理及工程应用》课件-第4章 定时器应用举例(第3次课)应用举例_第4页
《单片机原理及工程应用》课件-第4章 定时器应用举例(第3次课)应用举例_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

4.2.4定时器/计数器的应用

由于定时器/计数器的功能是由软件编程实现的,所以,一般在使用定时器/计数器前都要对其进行初始化。所谓初始化实际上就是确定相关寄存器的值。初始化步骤如下:1.确定工作方式——对TMOD赋值。根据任务性质明确工作方式及类型,从而确定TMOD寄存器的值。如:要求定时器/计数器T0完成16位定时功能,TMOD的值就应为00000001B,用指令MOVTMOD,#01H即可完成工作方式的设定。2.预置定时器/计数器的计数初值——写入计数初值

X=2n-N=2n-t/T直接将计数初值写入TH0、TL0或TH1、TL1。3.根据需要开放定时器/计数器中断——直接对IE寄存器赋值。(中断入口设置、中断服务程序设计、中断优先级IP)4.启动定时/计数器工作——将TR0或TR1置“1”。例4.2.1方式0的应用。设系统时钟频率为12MHz,利用定时器/计数器T0,在P1.0引脚输出周期为2ms的方波。解:2ms的方波可由间隔1ms的高低电平相间而成,因而只要每1ms对P1.0取反一次即可得到这个方波。选用定时器/计数器T0工作为定时方式来实现1ms的定时。TMOD初始化:TMOD=00000000B=00H机器周期为1μs,则计数初值X为:X=2n–t/T=213-1ms/1µs=8192-1000=7192=1110000011000B13位的计数初值的高8位写入TH0,低5位二进制数前要加3个0,凑成8位二进制数后写入TL0。向TH0写入的数据是:11100000B(E0H),

向TL0写入的数据是:00011000B(18H)。

IE初始化:开放中断,EA=1,允许定时器T0中断,ET0=1TCON初始化:TR0=1,启动T0请各位完成程序设计参考程序如下: ORG0000H LJMPSTART ;复位入口

ORG000BH LJMPT0SUB ;T0中断入口

ORG0040HSTART: MOVSP,#60H ;初始化程序

MOVTMOD,#00H ;T0为方式0定时 MOVTH0,#0E0H ;T0赋初值

MOVTL0,#18H MOVIE,#82H

SETBTR0 ;启动T0 SJMP$ ;等待中断T0SUB:MOVTH0,#0E0H ;T0中断服务子程序

MOVTL0,#18H CPLP1.0 ;输出周期为2ms的方波

RETI ;中断返回 END例:设系统时钟频率为12MHz,利用定时器/计数器T0在引脚P1.0和P1.1分别输出周期为2ms和6ms的方波。解:在上例中,T0每1ms中断一次,对P1.0取反一次得周期为2ms的方波。只要对T0中断服务程序略加修改,每计数(中断)3次,对P1.1取反一次即可得到周期为6ms的方波。请各位完成程序设计参考程序如下: ORG0000H LJMPSTART

ORG000BH LJMPT0SUB

ORG0040HSTART: MOVSP,#60H

MOVTMOD,#00H MOVTH0,#0E0H

MOVTL0,#18H MOVIE,#82H

MOVR7,#03H

SETBTR0 SJMP$ 参考中断服务程序:T0SUB: MOVTH0,#0E0H

MOVTL0,#18H CPLP1.0

DJNZR7,RETURN CPLP1.1

MOVR7,#03H

RETURN: RETIEND 10例:方式1的应用。硬件电路如图所示,利用T0做定时器,请编程形成循环灯控制器。fosc=12MHzTMOD初始化:TMOD=00000001B=01HX=216-50ms/1µs=65536-50000=15536=3CB0H即向TH0写入计数初值3CH,

向TL0写入计数初值B0H。

IE初始化:开放中断EA=1,允许定时器T0中断ET0=1TCON初始化:TR0=1,启动T0课堂练习请您编程参考程序清单如下: ORG0000H LJMPSTART ;复位入口

ORG000BH LJMPT0SUB ;T0中断入口

ORG0040HSTART:MOVSP,#60H MOVA,#0FEH MOVTMOD,#01H ;T0为方式1定时 MOVTH0,#3CH ;T0赋初值

MOVTL0,#0B0H SETBET0 ;开T0中断

SETBEA ;开总允许中断

SETBTR0 ;启动T0 SJMP$ ;等待中断T0SUB: MOVTH0,#3CH MOVTL0,#0B0H MOVP1,A RLA

RETI ;中断返回END例4.2.4利用定时器/计数器对生产过程进行控制。如图,当生产线上无工件传送时,在光线的照射下,光敏管导通,T1为低电平;当工件通过光源时工件会遮挡光线,光敏管截止,T1为高电平。每传送一个工件,T1端会出现一个正脉冲。利用定时器/计数器1对生产过程进行控制,每生产出10000个工件,使P1.7输出一个正脉冲,用于启动下一个工序。解:设置定时器/计数器1工作在方式1,对工件进行计数。

TMOD=01010000B=50H

计数次数N=10000,则计数初值X为:

X=216-N=65536-10000

=55536=D8F0H

IE初始化:开放中断EA=1,允许定时器T1中断ET1=1

TCON初始化:TR1=1,启动T1 请各位编写相关程序 ORG0000H LJMPSTART ;复位入口

ORG001BH LJMPT1SUB ;T1中断入口

ORG0040HSTART: MOVSP,#60H CLRP1.7 ;初始化P1.7=0 MOVTMOD,#50H ;T1为方式1计数 MOVTH1,#0D8H ;T0赋初值

MOVTL1,#0F0H SETBET1 ;开T1中断

SETBEA ;开总允许中断

SETBTR1 ;启动T1 SJMP$ ;等待中断T1SUB: MOVT

温馨提示

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

评论

0/150

提交评论