键盘、中断与定时器
定时器和中断

定时器和中断的应用前景
工业自动化
定时器和中断在工业自动化领域具有广泛 的应用前景,如生产线控制、机器人控制
等。
智能交通
在智能交通领域,定时器和中断可以实现 交通信号灯的智能控制和车辆的自动化调
度。
智能家居
在智能家居领域,定时器和中断可以实现 家电的智能控制和自动化管理,提高生活 品质。
医疗设备
在医疗设备领域,定时器和中断可以实现 医疗设备的自动化控制和精确计时,提高 医疗设备的可靠性和安全性。
定义
中断是一种硬件或软件事件,它能够打断正在执行的程序,并将其控制权交给 中断处理程序。
作用
中断是计算机系统中非常重要的机制,它使得CPU能够响应各种突发事件,如 硬件故障、外部信号、定时器超时等,从而实现多任务并发处理和实时性要求。
中断的分类
硬件中断
由硬件设备产生的中断,如键 盘输入、时钟中断等。
中断
用于需要实时响应的场景,如键盘输 入、串口通信等。
04
定时器的应用
BIG DATA EMPOWERS TO CREATE A NEW
ERA
定时器的使用场景
01
02
03
04
时间基准和同步
用于提供稳定的时间基准,如 系统时钟。
任务调度
用于安排任务在特定时间执行 。
性能测试和测量
用于测量代码执行时间或系统 性能。
网络定时器
用于网络通信的定时器, 如用于数据包发送间隔控 制的定时器。
定时器的工作原理
硬件定时器工作原理
基于硬件电路的定时器通常由振荡器和计数器组成,振荡器产生固定频率的脉冲信号,计 数器对脉冲信号进行计数,当计数达到预设值时,产生中断或触发信号。
键盘接口技术

(2)训练任务
本项目要完成的任务是设计一个简易数字调节器。 用两位数码管显示数值,变化范围 00—59。开始时 显示 00,每按下 key1 键一次,数值加 1;每按下 key2 键一次,数值减 1;每按下 key3 键一次,数值 归零;按下 key4 键一次,利用定时器功能使数值开 始自动每秒加 1,再次按下 key4 键,数值停止自动 加 1,保持原来的数。Key1—key4 键均采用独立式 按键。 (3)任务引导
TR0=~TR0;
//启动或停止定时器T0
}
}
}
void main()
{
T0_init();
while(1)
{
keyscan();
display(num);
}
}
void T0_time() interrupt 1 //T0中断服务函数
{
TH0=(65536-50000)/256;
//重装初值
TL0=(65536-50000)%256;
1、矩阵式键盘结构
VCC 10k 10k 10k 10k
P1.0 P1.1 8051 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7
2、键盘扫描方式
(逐行)
置低电平,同时读入行(或列)的状态,如果行(
或列)的状态出现非全1状态,这时0状态的行、列
GND
2、独立式键盘接口
结构简单,每个按键接单片机的一条I/O线,通 过对输入线的查询,可以识别每个按键的状态。
I/O
I/O
8051
INT0 INT1
实验一 矩阵键盘检测

实验一矩阵键盘检测一、实验目的:1、学习非编码键盘的工作原理和键盘的扫描方式。
2、学习键盘的去抖方法和键盘应用程序的设计.二、实验设备:51/AVR实验板、USB连接线、电脑三、实验原理:键盘接口电路是单片机系统设计非常重要的一环,作为人机交互界面里最常用的输入设备。
我们可以通过键盘输入数据或命令来实现简单的人机通信。
1、按键的分类一般来说,按键按照结构原理可分为两类,一类是触点式开关按键,如机械式开关、导电橡胶式开关等;另一类是无触点式开关按键,如电气式按键,磁感应按键等。
前者造价低,后者寿命长.目前,微机系统中最常见的是触点式开关按键(如本学习板上所采用按键)。
按键按照接口原理又可分为编码键盘与非编码键盘两类,这两类键盘的主要区别是识别键符及给出相应键码的方法。
编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的识别.全编码键盘由专门的芯片实现识键及输出相应的编码,一般还具有去抖动和多键、窜键等保护电路,这种键盘使用方便,硬件开销大,一般的小型嵌入式应用系统较少采用。
非编码键盘按连接方式可分为独立式和矩阵式两种,其它工作都主要由软件完成.由于其经济实用,较多地应用于单片机系统中(本学习板也采用非编码键盘)。
2、按键的输入原理在单片机应用系统中,通常使用机械触点式按键开关,其主要功能是把机械上的通断转换成为电气上的逻辑关系。
也就是说,它能提供标准的TTL 逻辑电平,以便与通用数字系统的逻辑电平相容。
此外,除了复位按键有专门的复位电路及专一的复位功能外,其它按键都是以开关状态来设置控制功能或输入数据。
当所设置的功能键或数字键按下时,计算机应用系统应完成该按键所设定的功能。
因此,键信息输入是与软件结构密切相关的过程。
对于一组键或一个键盘,通过接口电路与单片机相连.单片机可以采用查询或中断方式了解有无按键输入并检查是哪一个按键按下,若有键按下则跳至相应的键盘处理程序处去执行,若无键按下则继续执行其他程序。
单片机矩阵键盘原理

单片机矩阵键盘原理单片机矩阵键盘是一种常见的输入装置,它可以实现对数字、字母、符号等不同类型的输入,是单片机控制系统中不可或缺的一部分。
下面详细介绍单片机矩阵键盘的原理。
1. 键盘的基本原理键盘是一种能够将人体按压的操作转换成电信号输出的输入设备。
它由按键、矩阵电路和接口电路等多个部分组成。
其中最关键的是矩阵电路,它起到了连接按键和接口电路的桥梁作用。
2. 矩阵电路的构成矩阵电路主要由行列式组成,其中行和列的数量决定了键盘能够输入的按键数量。
例如一个4行4列的矩阵电路可以连接16个按键。
3. 按键的工作原理按键的工作原理是利用按键触点的开闭状态来变换电路状态,进而实现输入信号的转换。
按键的触点现在主要分为二态和三态两种,二态触点只能够开闭两种状态,而三态触点则可以在按键未按下、按下瞬间和按下保持三个状态之间变换。
在设计矩阵电路时需要根据按键的触点类型进行对应的接线方式。
4. 矩阵键盘的工作流程单片机矩阵键盘的工作流程主要包括按键扫描、按键代码转换和按键响应处理三步。
按键扫描的原理是利用矩阵电路的行列结构来进行扫描,每次扫描只需要对一个行和一个列进行检测,判断当前按键是否被按下。
如果检测到按键被按下,则会对应生成相应的按键代码,并将其发送到单片机系统进行处理。
5. 按键的编程实现在单片机的程序中,实现矩阵键盘的输入需要用到外部中断和定时器两个功能模块。
其中定时器用于产生定时器中断,从而保证按键信号的稳定性和准确性;而外部中断则在扫描矩阵电路时检测按键是否被按下,用于触发中断并响应按键事件。
总的来说,单片机矩阵键盘的原理涉及到电路接线、按键触点类型、按键扫描算法以及编程实现等多个方面。
在设计和实现过程中需要考虑多种因素,才能确保键盘输入的可靠性和稳定性。
中断的触发方式有哪些?

中断的触发方式有哪些?中断是计算机系统中常见的一种通信机制,用于处理紧急事件或优先级较高的任务。
中断的触发方式多种多样,下面将介绍其中的几种常见触发方式。
一、外部中断外部中断是由外部设备或外部信号引发的中断。
例如,当键盘输入时,计算机系统会通过外部中断来处理输入的字符。
外部中断可以从物理设备或外部电路中引发,通过响应设备发出的中断请求信号,来实现与设备的交互。
1. 异常中断异常中断是由于程序执行过程中出现错误或异常情况而引发的中断。
比如,越界访问数组、除以零等错误会触发异常中断。
异常中断可以及时发现错误,并采取相应的措施进行处理,从而保证系统的稳定性。
2. 外部设备中断外部设备中断是由外部设备通过中断请求线向处理器发出中断请求,并由处理器对该请求进行响应。
例如,当打印机准备好打印时,会发出中断请求,通知处理器进行打印操作。
外部设备中断可以使系统在不干扰其他任务的情况下,进行设备的异步操作。
二、定时器中断定时器中断是通过系统中的定时器设备来触发的中断。
定时器中断可以周期性地产生中断请求信号,用于处理定时任务或周期性的操作。
例如,操作系统中的时钟中断就是一种定时器中断,它会周期性地触发操作系统的调度,以保证各个任务的正常执行。
1. 周期性定时器中断周期性定时器中断是指定时器设备周期性地产生中断请求信号。
这种中断可以用于定时周期性事件的触发,如操作系统的任务调度、定时数据采集等。
2. 单次定时器中断单次定时器中断是指定时器设备在设定时间到达后仅触发一次中断请求信号。
这种中断可以用于引发某些任务或事件,如定时提醒、定时报警等。
三、内部中断内部中断是由处理器内部的状态或条件引发的中断。
比如,当程序执行遇到条件跳转指令或中断指令时,会触发内部中断。
内部中断可以改变程序的执行流程,实现条件判断和程序的中断处理。
1. 条件中断条件中断是由程序执行中满足特定条件时触发的中断。
比如,当某个变量的值达到或超过设定的阈值时,可以触发条件中断,执行相应的中断处理程序。
定时器中断控制的独立式键盘扫描实验

函数功能:反向流水点亮 LED
**************************************************/
void backward(void)
{
P3=0x7f;
//第八个灯亮
led_delay();
P3=0xbf;
//第七个灯亮
led_delay();
P3=0xdf;
//第六个灯亮
void delay20ms(void)
{
unsigned char i,j;
for(i=0;i<100;i++)
for(j=0;j<60;j++)
;
}
/*************************************************
函数功能:正向流水点亮 LED
**************************************************/
TL0=(65536-1000)%256; //定时器 T0 赋初值
keyval=0;
//按键值初始化为 0,什么也不做
while(1)
{
switch(keyval)
{
case 1:forward();
break;
case 2:backward();
break;
case 3:stop();
break;
//定时器中断控制的独立式键盘扫描实验 #include<reg51.h> //包含 51 单片机寄存器定义的头文件
sbit S1=P1^4;
//将 S1 位定义为 P1.4 引脚
sbit S2=P1^5;
单片机控制系统按键的类型

012 3 0
456 7 1
8 9 10 11 2
12 13 14 15 3
0 123
图7.5 矩阵式键盘结构
+5 V
矩阵式键盘中,行、列线分别连接到按键开关的两 端,行线通过上拉电阻接到+5V上。当无键按下时,行 线处于高电平状态;当有键按下时,行、列线将导通, 此时,行线电平将由与此行线相连的列线电平决定。这 是识别按键是否按下的关键。然而,矩阵键盘中的行线、 列线和多个键相连,各按键按下与否均影响该键所在行 线和列线的电平,各按键间将相互影响,因此,必须将 行线、列线信号配合起来作适当处理,才能确定闭合键 的位置。
图7.8是一种简易键盘接口电路,该键盘是由8051 P1口 的高、低字节构成的4×4键盘。键盘的列线与P1口的高4位 相连,键盘的行线与P1口的低4位相连,因此,P1.4P1.7是 键输出线,P1.0P1.3是扫描输入线。图中的4输入与门用于 产生按键中断,其输入端与各列线相连,再通过上拉电阻接 至+5 V电源,输出端接至8051的外部中断输入端。
2. 矩阵式键盘按键的识别 识别按键方法很多,其中最常见的方法是扫描法。下 面以图7.5中8号键的识别为例来说明扫描法识别按键的过程。 按键按下时,与此键相连的行线与列线导通,行线在 无键按下时处在高电平。显然,如果让所有的列线也处在 高电平,那么,按键按下与否不会引起行线电平的变化, 因此,必须使所有列线处在低电平。只有这样,当有键按 下时,该键所在的行电平才会由高电平变为低电平。CPU 根据行电平的变化,便能判定相应的行有键按下。8号键按 下时,第2行一定为低电平。然而,第2行为低电平时,能 否肯定是8号键按下呢?
(3) 求按键位置。根据前述键盘扫描法,进行逐 列置0扫描。图7.6中,32个键的键值分布如下(键值 由4位十六进制数码组成,前两位是列的值,即A口数 据,后两位是行的值,即C口数据,X为任意值):
用C语言编写程序实现通过按键使LED灯周期闪烁

用C语言编写程序实现通过按键使LED灯周期闪烁(2010-02-24 21:12:44)标签:循环闪烁周期led灯按键杂谈一、设计题目二、程序功能:开机复位后,LED0到LED7全部点亮,所有LEDPort持续2S后熄灭,然后等待按键,按0键LED7以0.8S周期闪烁,按1键LEDPort以1S周期闪烁。
三、总体设计思想用中断方式实现定时器的定时,然后通过键盘中断程序实现通过对按键的操作来实现相应的周期闪烁。
在我编写的实验程序中我用到了定时器中断和外部中断。
程序共分为两个模块,一个为定时器模块,一个为键盘中断程序模块,在主函数中,首先实现所有LEDPort点亮,然后通过中断方式实现定时2S,在定时器num==20时,设定全局变量为标志位flag=1,然后再主函数中设定条件,通过标志位的变化实现所有LEDPort持续2S后熄灭。
然后进入循环,等待按键,在按键中断服务程序中使用switch语句实现通过改变num1的值来实现LED7的闪烁周期。
设定标志位b=0,在主函数中使用if语句通过判断b的值来改变LED7的亮灭情况,同时相应的b值会取反。
四、程序具体实现实验要求开机复位后,LED0到LED7全部点亮2S后熄灭。
在主函数中使用LEDPort=0x00;这条语句实现所有灯都亮,使用中断方式实现定时器定时2S,因为实验要求20ms溢出,所以设定num=100,在定时器中断服务程序中使用if语句判断条件,当num加到100,也就是说2S时间到时,执行flag=1;语句(先设定全局变量flag=0)。
然后在主函数中使用while语句规定只有在flag=0时才执行所有LEDPort点亮的操作。
2S时间到后,所有灯熄灭。
然后进入while循环,等待用户按键。
用户按键后,通过使用switch语句,实验按0键,num1=20,按1键,num1=50,。
而在主函数中,当按下0键或者1键时,num1就有了固定的值,通过if语句判断是否到达所要求的时间后,执行相应操作。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、按键输入一、按键的分类键盘分编码键盘和非编码键盘。
键盘上闭合键的识别由专用的硬件编码器实现,并产生键编码号或键值的称为编码键盘,如计算机键盘.而靠软件编程来识别的称为非编码键盘;在单片机组成的各种系统中,用的最多的是非编码键盘。
也有用到编码键盘的。
非编码键盘有分为:独立键盘和行列式(又称为矩阵式)键盘。
二、独立按键的检测当按键没按下时,CPU对应的I/O接口由于内部有上拉电阻,其输入为高电平;当某键被按下后,对应的I/O接口变为低电平。
只要在程序中判断I/O接口的状态,即可知道哪个键处于闭合状态。
(如下图所示)变化与否,得出按键是否被按下,从而做出相吗?◎现实并非理想在我们通过上面的按键检测原理得出上述的结论的时候,其实忽略了一个重要的问题:那就是现实中按键按下时候的电平变化状态。
我们的结论是基于理想的情况得出来的,就如同这幅按键按下时候对应电平变化的波形图一样。
而实际中,由于按键的弹片接触的时候,并不是一接触就紧紧的闭合,它还存在一定的抖动。
尽管这个时间非常的短暂,但是对于我们执行时间以us为计算单位的微控制器来说 ,它太漫长了。
于是就会造成上图所示的差别。
这样便存在这样一个问题。
假设我们的系统有这样功能需求:在检测到按键按下的时候,将某个I/O的状态取反。
由于这种抖动的存在,使得我们的微控制器误以为是多次按键的按下,从而将某个I/O的状态不断取反,这并不是我们想要的效果。
假如该I/O控制着系统中某个重要的执行的部件,那结果更不是我们所期待的。
于是乎有人便提出了软件消除抖动的思想,道理很简单,抖动的时间长度是一定的,只要我们避开这段抖动时期,检测稳定的时候的电平不就可以了吗。
于是这就产生了一种方法,就是通过延时来跳过这段抖动的时间,而实际上这样的效果还不错。
当然,还有其他的消抖方法,同学们请自己思考思考。
由于独立键盘的程序太简单,同学们请自行编写。
三、矩阵键盘1、为什么使用矩阵键盘当使用按键过多时,使用独立按键虽然编写程序简单,但是会大量占用IO口资源,为了节省IO资源,通常将键盘按照矩阵方式排列(如下图所示)。
0xfe低电平2、矩阵键盘检测原理一般矩阵键盘的检测方法有以下两种:方法一:逐行扫描:我们可以通过高四位轮流输出低电平来对矩阵键盘进行逐行扫描,当低四位接收到的数据不全为1的时候,说明有按键按下,然后通过接收到的数据是哪一位为0来判断是哪一个按键被按下。
方法二:行列扫描:我们可以通过高四位全部输出低电平,低四位输出高电平。
当接收到的数据,低四位不全为高电平时,说明有按键按下,然后通过接收的数据值,判断是哪一列有按键按下,然后再反过来,高四位输出高电平,低四位输出低电平,然后根据接收到的高四位的值判断是那一行有按键按下,这样就能够确定是哪一个按键按下了。
下面给出矩阵键盘逐行扫描函数的一部分(只扫描了第一行的四个按键),其余部分请自行添加,如有不懂的地方先查阅C语言课本或者自行百度。
二、89C51的中断系统一、中断的概念CPU在处理某一事件A时,发生了另一事件B的请求(中断请求);CPU暂时中断当前的工作,转去处理事件B(中断响应和中断服务);待CPU将事件B处理完毕后,再回到原来事件A被中断的地方继续处理事件A(中断返回),这一过程称为中断。
运行过程如下图所示:二、中断系统的结构引起CPU中断的根源,称为中断源。
中断源向CPU提出的中断请求。
CPU暂时中断原来的事务A,转去处理事件B。
对事件B处理完毕后,再回到原来被中断的地方(即断点),称为中断返回。
实现上述中断功能的部件称为中断系统(中断机构)。
整个中断系统如下图所示:TCON IE硬件查询中断源分类外部中断请求源:即外中断0和1,经由外部管脚引入的,在单片机上有两个管脚,名称为INT0、INT1,也就是P3.2、P3.3这两个管脚。
在内部的TCON中有四位是与外中断有关的。
IT0:INT0触发方式控制位,可由软件进和置位和复位,IT0=0,INT0为低电平触发方式,IT0=1,INT0为负跳变触发方式。
这两种方式的差异将在以后再谈。
IE0:INT0中断请求标志位。
当有外部的中断请求时,这位就会置1(这由硬件来完成),在CPU响应中断后,由硬件将IE0清0。
IT1、IE1的用途和IT0、IE0相同。
内部中断请求源TF0:定时器T0的溢出中断标记,当T0计数产生溢出时,由硬件置位TF0。
当CPU响应中断后,再由硬件将TF0清0。
TF1:与TF0类似。
TI、RI:串行口发送、接收中断,在串行口中再讲解。
三、中断响应的过程1、中断响应的条件:讲到这儿,我们依然对于计算机响应中断感到神奇,我们人能响应外界的事件,是因为我们有多种“传感器”――眼、耳能接受不一样的信息,计算机是如何做到这点的呢?其实说穿了,一点都不希奇,MCS51工作时,在每个机器周期中都会去查询一下各个中断标记,看他们是否是“1”,如果是1,就说明有中断请求了,所以所谓中断,其实也是查询,不过是每个周期都查一下而已。
这要换成人来说,就相当于你在看书的时候,每一秒钟都会抬起头来看一看,查问一下,是不是有人按门铃,是否有电话。
很蠢,不是吗?可计算机本来就是这样,它根本没人聪明。
了解了上述中断的过程,就不难解中断响应的条件了。
在下列三种情况之一时,CPU将封锁对中断的响应:CPU正在处理一个同级或更高级别的中断请求。
现行的机器周期不是当前正执行指令的最后一个周期。
我们知道,单片机有单周期、双周期、三周期指令,当前执行指令是单字节没有关系,如果是双字节或四字节的,就要等整条指令都执行完了,才能响应中断(因为中断查询是在每个机器周期都可能查到的)。
当前正执行的指令是返回批令(RETI)或访问IP、IE寄存器的指令,则CPU至少再执行一条指令才应中断。
这些都是与中断有关的,如果正访问IP、IE则可能会开、关中断或改变中断的优先级,而中断返回指令则说明本次中断还没有处理完,所以都要等本指令处理结束,再执行一条指令才能响应中断。
2、中断响应过程CPU响应中断时,首先把当前指令的下一条指令(就是中断返回后将要执行的指令)的地址送入堆栈,然后根据中断标记,将对应的中断入口地址送入PC,PC 是程序指针,CPU取指令就根据PC中的值,PC中是什么值,就会到什么地方去取指令,所以程序就会转到中断入口处继续执行。
这些工作都是由硬件来完成的,不必我们去考虑。
中断程序完成后,一定要执行一条RETI指令,执行这条指令后,CPU将会把堆栈中保存着的地址取出,送回PC,那么程序就会从主程序的中断处继续往下执行了。
四、中断的控制要想控制中断,首先得先了解一个概念——即控制寄存器。
顾名思义,控制寄存器是用于控制和确定处理器的操作模式以及当前执行任务的特性的特殊存储部件,一般由触发器组成,可通过程序来控制。
了解了寄存器的概念,就可以正式接触寄存器的控制了。
1、TCON寄存器IT0(TCON.0),外部中断0触发方式控制位。
当IT0=0时,为电平触发方式。
当IT0=1时,为边沿触发方式(下降沿有效)。
IE0(TCON.1),外部中断0中断请求标志位。
IT1(TCON.2),外部中断1触发方式控制位。
IE1(TCON.3),外部中断1中断请求标志位。
TF0(TCON.5),定时/计数器T0溢出中断请求标志位。
TF1(TCON.7),定时/计数器T1溢出中断请求标志位。
2、串行口控制寄存器SCONRI(SCON.0),串行口接收中断标志位。
当允许串行口接收数据时,每接收完一个串行帧,由硬件置位RI。
注意,RI必须由软件清除。
TI(SCON.1),串行口发送中断标志位。
当CPU将一个发送数据写入串行口发送缓冲器时,就启动了发送过程。
每发送完一个串行帧,由硬件置位TI。
CPU响应中断时,不能自动清除TI,TI必须由软件清除。
3、中断允许寄存器IEEX0(IE.0),外部中断0允许位;ET0(IE.1),定时/计数器T0中断允许位;EX1(IE.2),外部中断0允许位;ET1(IE.3),定时/计数器T1中断允许位;ES(IE.4),串行口中断允许位;EA (IE.7), CPU中断允许(总允许)位。
all4、中断优先级寄存器IP89C52单片机有四个中断优先级,即可实现四级中断服务嵌套。
每个中断源的中断优先级由中断优先级寄存器IP和IPH中的相应位的状态来规定的。
PX0(IP.0),外部中断0优先级设定位;PT0(IP.1),定时/计数器T0优先级设定位;PX1(IP.2),外部中断0优先级设定位;PT1(IP.3),定时/计数器T1优先级设定位;PS (IP.4),串行口优先级设定位;PT2 (IP.5),定时/计数器T2优先级设定位。
单片机处理中断时遵循下列三个原则:▪ CPU 同时接收到几个中断时,首先响应优先级别最高的中断请求。
▪ 正在进行的中断过程不能被新的同级或低优先级的中断请求所中断。
▪ 正在进行的低优先级中断服务,能被高优先级中断请求所中断。
下面为中断初始化的示例与中断函数的编写高电平触发方式P32 p33三、一、为什么使用定时器使用软件延时常常碰到下列问题:1)延时时间不精确;2)延时过程中,CPU 时间被占用,无法进行其他任务,导致系统效率降低。
为此,我们可以使用单片机内部的一个个小闹钟——定时器来解决这些问题。
二、定时器的结构与工作原理 1)结构定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。
TMOD(time )是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON(control)是控制寄存器,控制T0、T1的启动和停止及设置溢出标志(数计满了)。
T1方式外部中断相关位2)工作原理加1计数器输入的计数脉冲有两个来源,一个是由系统的时钟振荡器输出脉冲经12分频后送来;一个是T0或T1引脚输入的外部脉冲源。
每来一个脉冲计数器加1,当加到计数器为全1时,再输入一个脉冲就使计数器回零,且计数器的溢出使TCON中TF0或TF1置1,向CPU发出中断请求(定时/计数器中断允许时)。
如果定时/计数器工作于定时模式,则表示定时时间已到;如果工作于计数模式,则表示计数值已满。
可见,由溢出时计数器的值减去计数初值才是加1计数器的计数值。
设置为定时器模式时,加1计数器是对内部机器周期计数(1个机器周期等于12个振荡周期,即计数频率为晶振频率的1/12)。
计数值N乘以机器周期Tcy就是定时时间t 。
设置为计数器模式时,外部事件计数脉冲由T0或T1引脚输入到计数器。
在每个机器周期的S5P2期间采样T0、T1引脚电平。
当某周期采样到一高电平输入,而下一周期又采样到一低电平时,则计数器加1,更新的计数值在下一个机器周期的S3P1期间装入计数器。