首先我们先来说一下中断,很多人都会把中断和定时器混淆,这里要强调的是,中断可以采用定时器(计数器)溢出的方式进行中断,这只是中断的一种方式,我们以89C52为例,可供选取的中断源一共有五个
INT0为外部中断,中断序号为0
T0为定时器(计时器)0中断,中断序号为1
INT1为外部中断,中断序号为2
T1为定时器(计时器)1中断,中断序号为3
TI /RI为串行口中断,中断序号为4
T2为定时器(计时器)2中断,中断序号为5
下面以外部中断0为例,介绍一下中断(一定要结合上图)
EA=0;
EX0=1;
IT0=1;
其中EA为全局中断,控制各个中断的响应
EX0为外部中断申请
IT0为外部中断0触发方式选择位,若IT0=0,表示低电平触发;IT0=1,表示跳变沿触发
图中IE0由硬件自动置1或清0,不需人为操作
以上就是外部中断的设置
继续介绍采用定时器(计数器)中断,它的实质是一个16位加1寄存器,由高8位和低8位两个寄存器组成,它们的结构框图如下
我们还是以继续介继续介绍采用定时器(计数器)中断,它的实质是一个16位加1寄存器,由高8位和低8位两个寄存器组成,它们的结构框图如下
我们还是以定时(计数)器0为例,TH0为高8位, TL0为低8位,具体工作方式为先累计第八位(一直到0xff),低8位清0,向高8位进1,直到高8位和低8位全记满(均为0xff),此时若再检测到一个有效脉冲,计数器就将清0,形成中断。
定时器和计数器有两个寄存器(如上图),分别为TCON(控制寄存器)和TMOD(方式选择寄存器),具体含义和操作请看结构图(这里以方式1为例)
首先图右侧为TMOD,主要选择计数的方式,高4位控制定时器1,低4位控制定时器0.
GATE为门控位
C/T为模式选择位,C/T=0为定时器模式,C/T=1为计数器模式
M1M0为工作方式选择位,每个定时器(计数器)都有4种工作方式
下面就介绍中断的申请,在此之前,还要确定定时器初值计算方法
设机器周期为T,定时器产生一次中断的时间为t,需要计数的个数N=t/T,装入TH0和TL0中的数为:TH0=(65536-N)/256 TL0=(65536-10000)%256,其中要说明的是计算机器周期需要知道单片机晶振频率。
具体代码如下
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;表示GATE为0,C/T为0,工作方式为方式1(01),具体工作流程:
GATE=0,取反变为1,经过或门电路(无论INT0为何值),最后都输出1,再经过或门电路,则需要TR0为1才能使电路导通,当定时器记满溢出则产生中断。
绍采用定时器(计数器)中断,它的实质是一个16位加1寄存器,由高8位和低8位两个寄存器组成,它们的结构框图如下
我们还是以定时(计数)器0为例,TH0为高8位, TL0为低8位,具体工作方式为先累计第八位(一直到0xff),低8位清0,向高8位进1,直到高8位和低8位全记满(均为0xff),此时若再检测到一个有效脉冲,计数器就将清0,形成中断。
定时器和计数器有两个寄存器(如上图),分别为TCON(控制寄存器)和TMOD(方式选择寄存器),具体含义和操作请看结构图(这里以方式1为例)
首先图右侧为TMOD,主要选择计数的方式,高4位控制定时器1,低4位控制定时器0.
GATE为门控位
C/T为模式选择位,C/T=0为定时器模式,C/T=1为计数器模式
M1M0为工作方式选择位,每个定时器(计数器)都有4种工作方式
下面就介绍中断的申请,在此之前,还要确定定时器初值计算方法
设机器周期为T,定时器产生一次中断的时间为t,需要计数的个数N=t/T,装入TH0和TL0中的数为:TH0=(65536-N)/256 TL0=(65536-10000)%256,其中要说明的是计算机器周期需要知道单片机晶振频率。
具体代码如下
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;表示GATE为0,C/T为0,工作方式为方式1(01),具体工作流程:
GATE=0,取反变为1,经过或门电路(无论INT0为何值),最后都输出1,再经过或门电路,则需要TR0为1才能使电路导通,当定时器记满溢出则产生中断。
定时(计数)器0为例,TH0为高8位, TL0为低8位,具体工作方式为先累计第八位(一直到0xff),低8位清0,向高8位进1,直到高8位和低8位全记满(均为0xff),此时若再检测到一个有效脉冲,计数器就将清0,形成中断。
定时器和计数器有两个寄存器(如上图),分别为TCON(控制寄存器)和TMOD(方式选择寄存器),具体含义和操作请看结构图(这里以方式1为例)
首先图右侧为TMOD,主要选择计数的方式,高4位控制定时器1,低4位控制定时器0.
GATE为门控位
C/T为模式选择位,C/T=0为定时器模式,C/T=1为计数器模式
M1M0为工作方式选择位,每个定时器(计数器)都有4种工作方式
下面就介绍中断的申请,在此之前,还要确定定时器初值计算方法
设机器周期为T,定时器产生一次中断的时间为t,需要计数的个数N=t/T,装入TH0和TL0中的数为:TH0=(65536-N)/256 TL0=(65536-10000)%256,其中要说明的是计算机器周期需要知道单片机晶振频率。
具体代码如下
TMOD=0x01;
TH0=(65536-45872)/256;
TL0=(65536-45872)%256;
EA=1;
ET0=1;
TR0=1;
TMOD=0x01;表示GATE为0,C/T为0,工作方式为方式1(01),具体工作流程:
GATE=0,取反变为1,经过或门电路(无论INT0为何值),最后都输出1,再经过或门电路,则需要TR0为1才能使电路导通,当定时器记满溢出则产生中断。