看到的关于中断 计时器定时器的介绍,个人看明白了。
目录:
1、单片机中断简介
2、中断允许寄存器IE
3、中断优先级寄存器IP
4、定时器中断
5、如何计算定时器的初值
6、中断服务程序的写法
7、代码示例
单片机中断简介
52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下:
INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起
INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起
T0 - 定时器/计数器0中断, 由T0计数器计满回零引起
T1 - 定时器/计数器1中断, 由T1计数器计满回零引起
T2 - 定时器/计数器2中断, 由T2计数器计满回零引起
TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起
其中T2是52单片机特有的。
中断允许寄存器IE
中断优先级寄存器IP
定时器中断
51单片机内部共有两个16位可编程的定时器/计数器,即定时器T0和定时器T1
52单片机内部多一个T2定时器/计数器
它们既有定时功能,也有计数功能。可通过设置与它们相关的特殊功能寄存器选择启用定时功能还是计数功能。
这个定时器系统是单片机内部一个独立的硬件部分,它与CPU和晶振通过内部某些控制线连接并相互作用,CPU一旦设置开启定时功能后,定时器便在晶振的作用下自动开始计时,但定时器的计数器计满后,会产生中断。
定时器/计数器的实质是加1计数器(16位), 由高8位和低8位两个寄存器组成,
TMOD:定时器/计数器的工作方式寄存器,确定工作方式和功能。
TCON:控制寄存器,控制T0,T1的启动和停止及设置溢出标志。
TMOD:定时器/计数器工作方式寄存器
TCON:定时器/计数器控制寄存器
每个定时器有4种工作方式,可通过设置TMOD寄存器中的M1和M0来进行工作方式选择。
方式1的技术位数是16bit,对T0来说, TL0寄存器作为低8bit,TH0寄存器作为高8bit,组成了16bit加1计数器,逻辑结构框图如下
如何计算定时器的初值
中断服务程序的写法
示例
#include
#include
#define uchar unsigned char
#define uint unsigned intsbit led1 = P0^0;
uchar num = 0;
//主程序
void main()
{
TMOD = 0x01;
TH0 = (65536 - 45872) / 256; // 设置定时器0为工作方式1(M1M0为01)
TL0 = (65536 - 45872) % 256; // 装初值11.0592M晶振定时50ms数位45872
EA = 1; // 开总中断
ET0 = 1; // 开定时器0中断
TR0 = 1; // 启动定时器0
while(1)
{
if (num == 20)
{
num = 0;
led1 = ~led1;
}
}
}
void T0_time() interrupt 1
{
TH0 = (65536 - 45872) / 256;
TL0 = (65536 - 45872) % 256;
num++;
}
关键字:51单片机 中断 计时 定时 初值
引用地址:
51单片机中断主要关于计时--定时--计算定时器初值--的简介
推荐阅读最新更新时间:2024-11-04 06:12
基于8051单片机的频率测量技术
0 引言 随着无线电技术的发展与普及,"频率"已经成为广大群众所熟悉的物理量。而单片机的出现,更是对包括测频在内的各种测量技术带来了许多重大的飞跃,然而,小体积、价廉、功能强等优势也在电子领域占有非常重要的地位。为此.本文给出了一种以单片机为核心的频率测量系统的设计方法。 1 测频系统的硬件结构 测量频率的方法一般分为无源测频法、有源测频法及电子计数法三种。无源测频法(又可分为谐振法和电桥法),常用于频率粗测,精度在1%左右。有源比较法可分为拍频法和差频法,前者是利用两个信号线性叠加以产生拍频现象,再通过检测零拍现象进行测频,常用于低频测量,误差在零点几Hz;后者则利用两个非线性信号叠加来产生差频现象,然后通过检测零差现象进
[测试测量]
STM32 定时器实现红外遥控数据接收
一、原理 1、红外发射协议 红外通信的协议有很多种。这个实验使用的是NEC协议。这个协议采用PWM的方法进行调制,利用脉冲宽度来表示 0 和 1 。 NEC 遥控指令的数据格式为:同步码头、地址码、地址反码、控制码、控制反码。同步码由一个 9ms 的低电平和一个 4.5ms 的高电平组成,地址码、地址反码、控制码、控制反码均是 8 位数据格式。按照低位在前,高位在后的顺序发送。采用反码是为了增加传输的可靠性。因此,每帧的数据为 32 位,包括地址码,地址反码,控制码,控制反码。反码可用于解码时进行校验比对。 NEC码的位定义:一个脉冲对应 560us 的连续载波,一个逻辑 1 传输需要 2.25ms(560us 脉冲+16
[单片机]
51单片机与PIC单片机和AVR单片机的性能对比分析
八位单片机由于内部构造简单,体积小,成本低廉,在一些较简单的控制器中应用很广。即便到了本世纪,在单片机应用中,仍占有相当的份额。由于八位单片机种类繁多,本文仅将常用的几种在性能上作一个简单的比较,供读者在使用时作参考。 1. 51系列 应用最广泛的八位单片机首推Intel的51系列,由于产品硬件结构合理,指令系统规范,加之生产历史“悠久”,有先入为主的优势。世界有许多著名的芯片公司都购买了51芯片的核心专利技术,并在其基础上进行性能上的扩充,使得芯片得到进一步的完善,形成了一个庞大的体系,直到现在仍在不断翻新,把单片机世界炒得沸沸扬扬。有人推测,51芯片可能最终形成事实上的标准MCU芯片。 51系列优点之一是它从内部的硬件
[单片机]
MAX3420E外设控制器的中断系统
MAX3420E可与任何SPI主控制器相连,以构成全速USB外设器件。尽管一般都由MAX3420来管理底层USB信令,但是需要处理USB事件时,SPI主控制器必须参与处理,当MAX3420的INT引脚指示有中断发生时,SPI主控制器将读取14个中断请求位,以确定需要服务的中断,一般情况下,主要由这些中断请求(IRQ)位确定MAX3420E的工作过程,在选择器件时,SPI主控制器可以是微控制器、DSP、ASIC或具备SPI端口的其他器件,并应能提供SCLK信号。
MAX3420E的中断逻辑
◇ IRQ位
图1所示为MAX3420E中断逻辑。阴影部分是可通过SPI访问的寄存器位,图中有一个IRQ位,实际上,每一个中断都有一个用
[应用]
51单片机学习之路(四)-定时器
写在前面:以下涉及到的程序及电路图不保证为最优方案,会存在很多不足之处,望谅解。另外,C51的内容是在整理很久之前所学的知识,可能会存在错误,欢迎指正。 正文 学习目标:学会使用51单片机中的定时器0。 学习内容: 用定时器0控制LED灯的亮灭 用定时器在数码管上实现计时 程序一:控制LED灯 功能要求:运行程序后连接在单片机上的LED灯以1s的频率闪烁。 定时器寄存器简单介绍 在本次内容中将使用定时器0,定时器1的使用方式与定时器0大体相同,以下简单介绍一下将要使用到的几个中断寄存器,具体介绍请以官方数据手册为准: TMOD:定时器模式寄存器,大致分为4个模式: 00:定时器0或1选择13位定时/计数器模式,该模式下TL
[单片机]
51单片机ALE引脚的控制
ALE/PROG: 当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。 在FLASH编程期间,此引脚用于输入编程脉冲。 在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。 当访问外部存储器时,ALE作为锁存扩展地址的低8位字节的控制信号。当访问外部数据存储器时,ALE以十二分之一振荡频率输出正脉冲,同
[单片机]
单片机定时器初值计算举例
定时器初值计算举例 一、10MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。10ms=10000次 机器周期。 65536-10000=55536(d8f0) TH0=0xd8,TL0=0xf0 2.晶振11.0592M 11.0592MHz除12为921600Hz,就是一秒921600次机器周期,10ms=9216次机器周期。 65536-9216=56320(dc00) TH0=0xdc,TL0=0x00 二、50MS定时器初值的计算: 1.晶振12M 12MHz除12为1MHz,也就是说一秒=1000000次机器周期。50ms=50000
[单片机]
STM32平台下的FreeRTOS中断配置
Cortex-M 中断 Cortex-M 内核(STM32)的 MCU 提供了一个用于中断管理的嵌套向量中断控制器(NVIC)。Cotex-M3 的 NVIC 最多支持 240 个 IRQ(中断请求)、1 个不可屏蔽中断(NMI)、1 个 Systick(滴答定时器)定时器中断和多个系统异常。 Cortex-M 处理器有多个用于管理中断和异常的可编程寄存器,这些寄存器大多数都在 NVIC 和系统控制块(SCB)中,CMSIS 将这些寄存器定义为结构体。以 STM32F103 为例,打开 core_cm3.h,有两个结构体,NVIC_Type 和 SCB_Type,就存储了这些信息。 优先级分组定义 当多个中断来临的时候处理
[单片机]