【51单片机学习过程记录】7 中断之 定时计数器0 操作前理解

发布者:cwk2003最新更新时间:2020-05-17 来源: eefocus关键字:51单片机  中断  定时计数器0 手机看文章 扫描二维码
随时随地手机看文章

声明:【51单片机学习过程记录】全是我自己学习、实践所记录的过程,我只是菜鸟,所有论点和观点仅代表我个人,不能确定是这个技术的真理。我的目的是学习和有可能成为可以向别人分享的经验,因此有错误我会虚心接受,并认真改正。


1 由数据手册可知,89c52rc单片机有六个中断,分别为 外部中断0 外部中断1定时计数器0 定时计数器1定时计数器2 以及串口中断,一共六个。

2 如何理解继而操作定时器0?


A大概了解:定时器,其实就是单片机的机器周期计数器,工作原理就是 当给计数器设定初始值并开启后,定时计数器会自动计算,到达设定的时间后会产生中断。(当然,更详细还是需要专门查看定时计数器去深入了解)

B操作:需要参考另外一个文档,上图,是来自另一个文档, programmer's guide。即程序员指南和指令表,暂且这样翻译,(另外,因为51和52中的中断,不同处是 51没有 定时计数器2,其他操作都相同)


查阅中断INTERRUPTS,对于使用中断有上述三点:1设置 IE(中断使能寄存器)中的EA(全部使能)位为1;   2在IE 寄存器中设置相应中断的使能位   3 在相应的中断矢量地址开启中断服务程序


[IE寄存器]

“使用中断需要执行的三步”中提及的寄存器IE,中断使能寄存器,可以位寻址。然后可以看到每一位的作用是什么,对于每一位,设置1 则为使能,设置 0则为相反,不使能。因为这文讲使用的是定时计数器0即T0,那么对于这个IE寄存器,使能位则是 EA 和 ET0 ,其他为则先全部设置为0。


[IP寄存器]

在IE寄存器后,programmer's guide继续给出其他与操作中断相关的寄存器。


从上图可以看到,内部中断优先级从高到低是:外部中断0---定时计算器0---外部中断1---定时计数器1---串口中断


IP,是中断优先级寄存器,可位寻址,当IP寄存器中指定位设置为1时,该中断为更高级。 例如,将PX1设置为1时,其他设置为0时,则外部中断1的为最高级,当没有外部中断1产生,则其他中断按照中断优先级去执行中断。


中断因为优先级可以嵌套执行,就是说,当低级的中断执行中,产生更高级的中断时,cpu会先执行更高级的中断,处理完更高级的中断服务后再接着处理原来低级的中断。


因为,此文只说明使用开启一个中断(定时计数器0),所以这个IP寄存器就不设置了。


[TCON寄存器]

TCON,定时计数器控制寄存器,其他的略过,只是T0有关的,在TCON寄存器中,TF0是定时器0的溢出标志,它的溢出标识和清楚都是由硬件自动操作;还有就是 TR0 ,定时计数器0 的运行控制位,用于开启和关闭 定时计数器0 ,它的设置和清除由 软件 完成,即由代码去控制。  


因为有标识 BIT ADDRESSABLE 都表示 可位寻址 ,所以代码中可以直接对 寄存器 的指定位 进行操作, 那么其他没有用到的位可以忽略。


[TMOD寄存器]




再有,就是上图所示的TMOD 定时计数器模式控制寄存器(注意,TMOD是不可以位寻址,就是说不可以单独对寄存器中的指定位进行设置)。


8位寄存器,高4位设置 定时计数器1   低4位设置 定时计数器0。  


根据描述,由 软件 控制定时计数器,设置 GATE位 为0;


C/T 为0时,为定时功能,加1计数器对内部时钟的脉冲 f 进行计数,每来一个脉冲,计数器加1,直到计时器TFX溢出;


C/T为1时,为计数功能,加1计数器对来自输入引脚T0和应交T1的外信号脉冲进行计数,每来一个脉冲,计数器加1,直到计时器TFX溢出。


因为此文使用定时功能,所以C/T设置为0。


然后 M1  M0就是设置定时器模式。即有M1M0为 0 时是13位的定时计数器。。。


除了上述的可以对T0 或者T1 选择作为TIMER或者是COUNTER 和相应的内部控制和外部控制外,文中还提及同时使用T0和T1,就是将TMOD中相应的值 或,


例如 60H or 09H 就是69H,TMOD中的60H表示设置T1为内部控制的COUNTER,T0为外部控制的TIMER。


3对于了解和操作 定时计数器0  操作前理解过程 的总结:


要使用 定时计数器0(定时功能)软件上(即代码)需要对


IE (可位寻址,EA 位  ET0位)


IP (可位寻址,看实际应用来配置)


TCON (可位寻址,TF0位由硬件控制  TR0位)


TMOD (不可位寻址,对整个寄存器进行配置)


上述几个寄存器进行配置。


PS:往后需要提及的在下一文 程序代码 中进行讲述。

关键字:51单片机  中断  定时计数器0 引用地址:【51单片机学习过程记录】7 中断之 定时计数器0 操作前理解

上一篇:51单片机的中断和定时(全面)
下一篇:51 单片机 时间/计数器中断

推荐阅读最新更新时间:2024-11-04 03:23

第八节:在定时中断函数里执行独立按键的扫描程序
开场白: 上一节讲了在主函数中利用累计定时中断的次数来实现独立按键的检测,但是如果在某些项目中,需要在主函数里间歇性地执行一些一气呵成的耗时任务,当主函数正在处理一气呵成的耗时任务时(前提是没有关闭定时器中断),这个时候如果有按键按下来,就有可能没有及时被响应到而遗漏了。在定时中断函数里处理独立按键的扫描程序,可以避免这个问题。要教会大家一个知识点:如何在上一节的基础上,略作修改,就可以在定时中断函数里处理独立按键的扫描程序。 具体内容,请看源代码讲解。 (1)硬件平台:基于朱兆祺51单片机学习板。用矩阵键盘中的S1和S5号键作为独立按键,记得把输出线P0.4一直输出低电平,模拟独立按键的触发地GND。 (2)实现
[单片机]
ARM 之FIQ(快速中断) IRQ(中断
IRQ,FIQ定义: 这就是个普通中断,当我们程序定义了该中断,并且在程序运行的时候产生了IRQ中断,则此时的芯片是这样运行的------中断处理器吧利用IRQ请求线来高速ARM,ARM就知道有个IRQ中断来了,然后ARM切换到IRQ模式运行。类似的如果该中断设置为FIQ,那么当该中断产生的时候,中断处理器通过FIQ请求线告诉ARM,ARM就知道有个FIQ中断来了,然后切换到FIQ模式运行。 那么问题来啦,为何要有这两个中断,或者说为何分成这两种中断,?、原因很简单,速度不同,FIQ 也就是快速中断的速度快,那么问题又来了,为何就FIQ速度快??? 原因:1:ARM的FIQ模式提供了更多的banked寄存器,r8到r14还
[单片机]
舵机速度控制的51单片机程序
本程序中用到的头文件12c5a.h下载: http://www.51hei.com/f/12c5a.rar #include 12c5a.H //STC12C5A系列单片机 #include intrins.h void delay(uint16 time); //软件延时函数 void Timer_init(); //定时器初始化函数 void Timer0(uint32 us); //定时器0定时函数 void qhuan(unsigned int ms50,char zushu); char n,a=101; int LK ={0},*K; int shuju = { //舵机动作数据 {2
[单片机]
试编写MCS-51单片机程序,计算∑i,I=1~100
试编写MCS-51单片机程序,计算∑i,I=1~100。 参考单片机汇编语言程序: org 000h ljmp main org 030h main: mov 45h,#011h mov 46h,#022h mov 47h,#033h mov 48h,#044h mov 49h,#00h mov r0,#45h mov r7,#5 mov r6,#4 acall yiwei sjmp $ yiwei: clr c loop2: mov a,@r0 rrc a mov @r0,a
[单片机]
MSP430F149单片机实现uart数据接收中断
/***************************************************** 程序功能:MCU不停向PC机发送数据,在屏幕上显示0~127对应 的ASCII字符 ------------------------------------------------------ 通信格式:N.8.1, 9600 ------------------------------------------------------ 测试说明:打开串口调试精灵,正确设置通信格式,观察屏幕 ******************************************************/ #incl
[单片机]
51单片机学习:定时0实验
实验名称:定时器0实验 接线说明: 实验现象:下载程序后,D1指示灯间隔1s闪烁 注意事项: ***************************************************************************************/ #include reg52.h typedef unsigned int u16; //对系统默认数据类型进行重定义 typedef unsigned char u8; //定义LED1管脚 sbit LED1=P2^0; /********************************************************************
[单片机]
51单片机入门 - SPI总线
UART、 I2C 和 SPI 是单片机系统中最常用的三种通信协议。 1、初步介绍 SPI 是一种高速的、全双工、同步通信总线,标准的 SPI 也仅仅使用 4 个引脚,常用于单片机和 EEPROM、FLASH、实时时钟、数字信号处理器等器件的通信。 SPI 通信原理比 I2C要简单,它主要是主从方式通信,这种模式通常只有一个主机和一个或者多个从机,标准的 SPI 是 4 根线,分别是 SSEL( 片选,也写作 SCS)、 SCLK( 时钟,也写作 SCK)、 MOSI( 主机输出从机输入Master Output/Slave Input) 和 MISO( 主机输入从机输出 Master Input/Slave O
[单片机]
51单片机驱动步进电机电路及程序
在这里介绍一下用51单片机驱动步进电机的方法。   这款步进电机的驱动电压12V,步进角为 7.5度 . 一圈 360 度 , 需要 48 个脉冲完成!!!      该步进电机有6根引线,排列次序如下:1:红色、2:红色、3:橙色、4:棕色、5:黄色、6:黑色。   采用51驱动ULN2003的方法进行驱动。      ULN2003的驱动直接用单片机系统的5V电压,可能力矩不是很大,大家可自行加大驱动电压到12V。   ;******************************************************************   ;******************
[单片机]
<font color='red'>51单片机</font>驱动步进电机电路及程序
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved