51单片机中断定时器1用法

这篇具有很好参考价值的文章主要介绍了51单片机中断定时器1用法。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.中断概念

中断为使单片机具有对内部或外部随机发生的事件实时处理而设置的。

51单片机中断定时器1用法

二.中断作用

中断技术不仅解决了快速主机与I/O设备的数据传送问题,而且还有具有如下的优点:

1. 分时操作:CPU可以分时为多个I/O设备服务,提高了计算机的利用率。
2. 实时操作:CPU能够及时处理应用系统的随机事件,系统的实时性大大增强。
3. 可靠性高:CPU具有处理设备故障及掉电等突发性事件能力,从而使系统可靠性更高。
 

三.中断源及相关寄存器

中断优先级

51单片机中断定时器1用法

 定时器/计数器控制寄存器TCON

51单片机中断定时器1用法

TF0、 TF1: 是定时器中断标志(定时器0溢出标志位、定时器1溢出标志位)
TR0 、TR1: 打开相应的定时器(定时器0运行控制位,=1时启动定时器0、定时器1运行控制位,=1时启动定时器1)
由软件清0关闭定时器0/1。当GATE=1,且INIT为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器0/1。
IT0、IT1: 是外部中断的触发方式。 =0时 低电平触发,=1时负跳变触发。
IE0、IE1: 是外部中断的标志位


中断允许寄存器 IE

51单片机中断定时器1用法

 EA: 总中断允许。 EA=0;CPU屏蔽所有中断的请求 EA=1;开放所有中断。
ES:串行口中断允许位。ES=0; 禁止串行中断。ES=1; 允许串口中断。
ET0、ET1: 定时器/计数器0 和 定时器/计数器 1 中断允许位。 =0时 禁止相应的定时器中断。 =1 允许相应的定时器中断。
EX0、EX1: 外部中断0 和 外部中断 1 中断允许位。=0时 禁止相应的外部中断。 =1时 允许相应的外部中断。
——:无效位
 

 中断优先寄存器 IP

51单片机中断定时器1用法

PS: 串行口中断优先级 PS = 1;(高) 。PS = 0; (低)。
PT0:定时器0中断优先级 PT0 = 1;(高) PT0 = 0;(低)。
PT1:定时器1中断优先级 PT1 = 1;(高) PT1 = 0;(低)。

PX0:外部中断0中断优先级 PX0 = 1;(高) PX0 = 0;(低)。
PX1:外部中断1中断优先级 PX1 = 1;(高) PX1 = 0;(低)。
——:无效位

IP寄存器不做设置,上电复位后为00H,默认是为低优先级。
不设置默认优先级是(由高到低):
外部中断0→定时器0→外部中断1→定时器1→串口

如果我们把IP寄存器设置为:(IP = 0X10)
PS = 1;
PT1 = 0;
PX1 = 0;
PT0 = 0;
PX0 = 0;
如下表:51单片机中断定时器1用法

 那么优先级从高到低是:
串工作方式寄存器TMOD口→外部中断0→定时器0→外部中断1→定时器1

工作方式寄存器TMOD

51单片机中断定时器1用法

 GATE:门控制
=0:仅有运行控制位TRx来控制定时/计数器的开启。
=1:由TRx和外部中断脉冲计数。(用于计算外部中断 负跳变 的次数)
C/T:计数器模式和定时器模式选择
=0:选择定时器模式
=1:选择计数器模式
M1、M0:选择定时/计数器的工作方式

51单片机中断定时器1用法方式0
方式0为13位计数,由TL0的低5位(高3位未用)和TH0的8位组成。TL0的低5位溢出时向TH0进位,TH0溢出时,置位TCON中的TF0标志,向CPU发出中断请求。

51单片机中断定时器1用法

 方式1
方式1的计数位数是16位,由TL0作为低8位,TH0作为高8位,组成了16位加1计数器 。

51单片机中断定时器1用法方式2
方式2为自动重装初值的8位计数方式。

51单片机中断定时器1用法

 方式3
方式3只适用于定时/计数器T0,定时器T1处于方式3时相当于TR1=0,停止计数。

51单片机中断定时器1用法

定时器初值寄存器THx 和 TLx
首先先了解一下CPU时序有关知识:
振荡周期: 为单片机提供定时信号的振荡源的周期(晶振周期或外加振荡周期)
状态周期:2个振荡周期为1个状态周期,用S表示。振荡周期又称S周期或时钟周期。
机器周期:1个机器周期含6个状态周期,12个振荡周期。
指令周期:完成1条指令所占用的全部时间,它以机器周期为单位。

例如:外接晶振为12MHz时,51单片机相关周期的具体值为:
振荡周期=1/12us;
状态周期=1/6us;
机器周期=1us;
指令周期=1~4us;

计数器初值的计算:
机器周期就是CPU完成一个基本操作所需要得时间。
机器周期 = 1 /单片机的时钟频率
51单片机内部时钟频率是外部时钟的12分频,也就是当外部晶振的频率输入到单片机里面
的时候要进行12分频。

比如:你用的是12MHZ的晶振,当你使用12MHZ的外部晶振的时候,
机器周期 = 1 / 1M = 1us。(选择定时器工作方式1 16位)
我们2的16次方等于65536,也就是最大值为65536(溢出)
如果定时1ms
初值就为:1ms / 1us = 1000。也就是要计数1000个数, 初值 = 65535-1000+1 = 64536,65536才会溢出。 所以初值即FC18H(十进制为64536)

如果定时50ms
50ms/1us=50000;
初值 = 65535-50000+1=15536;
定时为50ms 初值为15536 即3CB0(十六进制)
51单片机中断定时器1用法

定时器/计数器中断
需要了解的知识
51单片机有两组定时器/计数器,因为既可以定时,又可以计数,故称之为定时器/计数器。

定时器/计数器和单片机的CPU是相互独立的。定时器/计数器工作的过程是自动完成的,不需要CPU的参与。

51单片机中的定时器/计数器是根据机器内部的时钟或者是外部的脉冲信号对寄存器中的数据加1。

有了定时器/计数器之后,可以增加单片机的效率,一些简单的重复加1的工作可以交给定时器/计数器处理。CPU转而处理一些复杂的事情。同时可以实现精确定时作用。

工作原理
实质上是加1计数器,随着输入脉冲,计数器自动加1,
溢出的时候会回0.,且计数器的溢出使相应的中断标志位 置1.
向CPU发出中断请求。如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。

定时器结构
定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器THx和TLx组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。

51单片机中断定时器1用法

操作步骤(T0 T1)
1.选择工作方式。设置M1、M0 (TMOD寄存器)
2.选择控制方式。设置GATE(TMOD寄存器)
3.选择定时器还是计数器模式。设置C/T(TMOD寄存器)
4.给定时/计数器赋初值。设置THx 和 TLx(定时器初值寄存器)
5.开启总中断。设置EA(IE寄存器)
6.打开相应定时器中断允许。 设置ET0或ET1(IE寄存器)
7.启动定时器。设置TR1或TR0(TCON寄存器)

如何配置定时器
这里就选择定时器0吧 选择方式1(16位)进行定时示例吧
1.选择工作方式1(16位)M1=0;M0=1;
2.控制方式 :仅有运行控制位TRx来控制定时/计数器的开启。GATE=0;
3.选择定时器模式 C/T=0;

TMOD=0x01;
1
4.赋初值 这里选择定时为50ms 我的板子晶振是11.0592 具体怎么算我不会,推荐跟我一样不会的用软件mcuelf计算出以下结果
51单片机中断定时器1用法

 51单片机中断定时器1用法

 5.打开总中断(总开关)

51单片机中断定时器1用法

6.打开T0中断开关 

51单片机中断定时器1用法

 7.启动定时器0

51单片机中断定时器1用法

51单片机中断定时器1用法

程序示例

这里就写一个用定时器来做一个简单的时钟显示在LCD1602上
LCD1602我昨天发布了一个LCD1602的使用和显示hello word。这里就是详细讲LCD1602具体的操作了。

引脚定义

51单片机中断定时器1用法

 lcd1602.h

51单片机中断定时器1用法

 lcd1602.c

51单片机中断定时器1用法51单片机中断定时器1用法

 main.c

 51单片机中断定时器1用法

51单片机中断定时器1用法

51单片机中断定时器1用法

51单片机中断定时器1用法

 最终项目展示

51单片机中断定时器1用法

四.定时器0的工作方式1:16位定时器

在写单片机的定时程序时,需要对定时器中及中断寄存器做初始化设置,通常定时器初始化过程如下:

51单片机中断定时器1用法

1.对TMOD赋值,以确定T0和T1的工作方式。

51单片机中断定时器1用法

2.计算初值,并将初值写入TH0、TL0(定时器0)或TH1、TL1(定时器1)。

你用的是12MHZ的晶振,当你使用12MHZ的外部晶振的时候,
机器周期 Tcy=12*( 1 / 12M) = 1us。

计数的个数N=t/ Tcy

(选择定时器工作方式1 16位)
我们2的16次方等于65536,也就是最大值为65536(溢出),溢出一次共需65536us
如果定时50ms = 50000,也就是要计数50000个数, 初值 = 65536-50000= 15536,65536才会溢出。 

把15536对256求模:64536/256=60装入TH0中,把15536对256求余:15536%256=176装入TL0中。

中断服务程序的写法:

中断函数格式如下:

   void 函数名 () interrupt 中断号 using 工作组    /*中断函数不能返回任何值,所以最前面用void,后面紧跟函数名,名字可以随便起,中断函数不带任何参数,所以函数名后面的括号为空;中断号是单片机中几个中断源的序号*/

      {

      中断服务程序内容

      }

例如:

   void T1_time () interrupt 1

{

TH0=(65536-50000)/256;

TL0=(65536-50000)%256;

3.中断方式时,则对中断允许寄存器IE赋值,开放中断。

中断允许寄存器 IE

51单片机中断定时器1用法

 EA: 总中断允许。 EA=0;CPU屏蔽所有中断的请求 EA=1;开放所有中断。
ES:串行口中断允许位。ES=0; 禁止串行中断。ES=1; 允许串口中断。
ET0、ET1: 定时器/计数器0 和 定时器/计数器 1 中断允许位。 =0时 禁止相应的定时器中断。 =1 允许相应的定时器中断。
EX0、EX1: 外部中断0 和 外部中断 1 中断允许位。=0时 禁止相应的外部中断。 =1时 允许相应的外部中断。
——:无效位

(EA=1;开放所有中断。

ET0=1 允许相应的定时器中断。)

4.使TR0置位,启动定时器/计数器定时或计数。

 定时器/计数器控制寄存器TCON

51单片机中断定时器1用法

TF0、 TF1: 是定时器中断标志(定时器0溢出标志位、定时器1溢出标志位)
TR0 、TR1: 打开相应的定时器(定时器0运行控制位,=1时启动定时器0、定时器1运行控制位,=1时启动定时器1)
由软件清0关闭定时器0/1。当GATE=1,且INIT为高电平时,TR1置1启动定时器1;当GATE=0时,TR1置1启动定时器0/1。
IT0、IT1: 是外部中断的触发方式。 =0时 低电平触发,=1时负跳变触发。
IE0、IE1: 是外部中断的标志位

(TRO=1  启动定时器0)文章来源地址https://www.toymoban.com/news/detail-456836.html

到了这里,关于51单片机中断定时器1用法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 51单片机定时器中断TMOD

    最近在学定时器中断TMOD,写程序时,要对定时器进行配置 对TMOD进行赋值时,拌了好久。。。。 如何根据所用的      定时器0/1 ,  工作方式0/1/2/3      对TMOD赋值呢? 我们知道: 1.TMOD长这样 :  由八位组成,前四位是T1的参数;后四位是T0的参数;GATE 和 C/T\\\' 不用多讲,

    2024年02月12日
    浏览(41)
  • 51单片机:中断系统(外部中断,定时器中断,串口通信)

    目录 中断系统简介: 中断的优先级和嵌套: 8个中断请求源及其优先级: 中断的分别介绍: 1、外部中断0:INT0   2、外部中断1  3、T0和 T1:定时计数器的功能 4、串口中断(串口为什么使用定时器后面讲) 中断寄存器 (1)中断允许控制(IE) (2)中断请求标志(TCON) (

    2024年01月25日
    浏览(44)
  • C51单片机——中断与定时器

    中断是大多数CPU最精彩的部分之一,下面我们通过讲解和编程练习学习中断和定时器相关概念 目录 1.1.什么是中断 1.2.中断的种类 1.3中断的相关概念 1.4. 51单片机可用中断及相关引脚 1.4.寄存器 1.5.中断优先级 在未进行任何关于优先级的设置情况下,51 单片机(52 单片机)中断

    2024年02月03日
    浏览(62)
  • 【51单片机】:定时器的详解(包括对单片机定时解释、各类定时方式,以及中断方式)

              51定时/计数器的详解。                   码字不易,如有帮助请收藏,点赞哦。         前提:首先我们知道51单片机内部有21~26个特殊功能寄存器: P.x口寄存器:P0、P1、P2、P3 数据指针寄存器:DP0H、DP0L、DP1H、DP1L 定时器: TH1、TL1、TH0、TL0、TMOD、TCON 串口:

    2024年02月07日
    浏览(95)
  • 51单片机——定时器中断实验,小白讲解,相互学习

    定时器介绍 1,CPU时序的有关知识 震荡周期:为单片机提供定时信号的震荡源的周期(晶振周期或外加震荡周期)。 状态周期:2个震荡周期为1个状态周期,用S表示。震荡周期又称S周期或时钟周期。 机器周期:1个机器周期含6个状态周期,12个震荡周期 指令周期:完成1条指

    2024年02月03日
    浏览(42)
  • 51单片机定时器中断按键消抖(无延时)

    单片机入门学习记录(二) 在机械按键的触点闭合和断开时,都会产生抖动,为了保证系统能正确识别按键的开关,就必须对按键的抖动进行处理。按键的抖动对于人类来说是感觉不到的,但对单片机来说,则是完全可以感应到的,而且还是一个很“漫长”的过程,因为单片

    2024年02月14日
    浏览(58)
  • C51单片机中断系统与定时器/计时器(理论部分)

    前言 文章的开始,有人可能会问,我们在前几节课学了延时函数,为什么不用延时函数来取代定时器,而必须学定时器呢?这里,有如下几个理由: 1.使用delay函数时,单片机的cpu做不了其他事情,只能等待延时结束。 2.用了定时器cpu就可以做其他的事情,只要定时器溢出时

    2023年04月15日
    浏览(39)
  • 【51单片机】如何设置中断函数(场景:在定时器工作完跳转到中断程序时,怎么识别我们的中断程序在哪里呢?)

    前言 大家好吖,欢迎来到 YY 滴单片机系列 ,热烈欢迎! 本章主要内容面向接触过单片机的老铁 本章是【利用定时器和中断实现一个简单项目】中的一部分,感兴趣的老铁可以跳转传送门查看 传送门 欢迎订阅 YY 滴C++专栏!更多干货持续更新!以下是传送门! YY的《C++》专

    2024年02月19日
    浏览(49)
  • 单片机学习 11-中断系统(定时器中断+外部中断)

    ​ 中断是为使单片机具有对外部或内部随机发生的事件实时处理而设置的,中断功能的存在,很大程度上提高了单片机处理外部或内部事件的能力。它也是单片机最重要的功能之一,是我们学习单片机必须要掌握的。很多初学者被困在中断中,学了很久仍然不知道中断究竟是

    2024年02月05日
    浏览(47)
  • 51单片机定时器

    目录 前言 一、定时器的介绍及其作用 二、定时器的内部构造及其原理 计算机周期 定时器的工作模式与流程 定时器中断相关寄存器 寄存器的配置  三、程序 总结         下面来介绍学习51单片机第一个也是最常用的片上外设——定时器。该硬件是集成在单片机内部的,

    2024年02月05日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包