【89c51汇编语言】认识定时器并同时调用两个定时器实现小灯不同频率闪烁

定时器

89c51中有两个定时/计数器,分别是T0和T1。为了帮助更好的理解单片机的定时器原理,先来看一下什么是单片机的时钟周期以及机械周期。

时钟周期(振荡周期)和机械周期

晶振是组成单片机最小系统的基本单元,我们常称“晶振”为单片机的心脏,为单片机提供脉冲信号,基本时间单位。单片机工作时,是顺序地从ROM中取指令,然后一步一步地顺序执行。所以我们需要共用一个时间基准:单片机访问一次存储器的时间,称之为一个机器周期,—个机器周期包括12个时钟周期。单片机的时钟周期是晶振频率的倒数,这是单片机的基本时间单位。时钟频率越高,单片机运行速度越快。如果一个单片机外接了一个12MHz的晶振,那么它的时钟周期就是1/12us,它的一个机器周期是12×(1/12)us,也就是1us。
关系:时钟周期–>机械周期–>指令周期(比如DJNZ指令占用两个机械周期,LCALL指令占用四个机械周期)

定时/计数器相关的的寄存器(TMOD、TCON)

TMOD(不可位寻址,只能用字节方式设置工作方式)

TMOD的低四位控制定时器T0,高四位控制定时器T1。
在这里插入图片描述
GATE:选通控制位,GATE置0后只要对 TR0( TR1)置 1 就可启动定时器。
C/T: 置0即为定时器工作模式,置1即为计数器工作模式。
M1和M0决定了定时器有四种工作模式(我们常用工作模式1和工作模式2)
在这里插入图片描述
举个例子:设置T0为16为定时器计数模式,我们就要设置TMOD为0x01

中断控制寄存器TCON(可位寻址)

在这里插入图片描述

TF1: T1溢出标志。进入中断服务程序后,由硬件自动清“0”,在查询方式下用软件清“0”。
TF0: T0溢出标志。
TR1: T1运行控制位。当TR1=1,T1开启。
TR0: T0运行控制位。当TR0=1,T0开启。

定时器工作模式1&工作模式2

工作模式1:16位定时/计数器

      t = ( 2^16- 初值 ) × 机器周期

定时器为 16 位:TH0、TH1为定时器0和定时器1的高四位,TL0、TL1为定时器0和定时器1的低四位。若晶振频率为 12MHz,则方式 1 下的最大定时时间为 65.536 ms。即计数器初值设置为 0000H,经过 2^16=65536 个机器周期后定时器将产生溢出,故最长定时时间为 1μs× 65536= 65.536 ms。

工作模式2:8位定时器

      t = ( 2^8 - 初值)×机器周期

方式 2 可在计定时器计满时自动装入初值。工作方式 2 把 16 位的定时器拆成两个 8 位定时器。 TL0 用作 8 位定时器。 TH0 用来保存初值,每当 TL0 计满溢出时,可自动将 TH0 的初值再装入 TL0 中,继续计数,循环重复。工作方式 2 的定时时间为 TF0 溢出周期。这种工作方式可省去用户软件中重装初值的程序,并可产生相当精度的定时时间,特别适合于产生周期性脉冲以及作为串行口波特率发生器,缺点是计数长度太小。

同时调用两个定时器实现小灯不同频率闪烁

题目要求:利用定时器0,使p1.0口输出1s的方波,并通过led显示。利用定时器1,使用查询方式,使P1.1口产生周期为500ms的方波,通过led闪烁进行显示。
汇编语言版:(运用了两种不同的方法实现:中断以及查询)


                
  • 10
    点赞
  • 69
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值