相关寄存器
中断允许寄存器IE
中断允许寄存器用来设定各个中断源的打开和关闭,IE 在特殊功能寄存器中,字节地址为A8H,位地址(由低位到高位)分别是A8H~AFH,该寄存器可进行位寻址,即可对该寄存器的每一位进行单独操作。单片机复位时IE全部被清0
中断优先级寄存器IP
中断优先级寄存器在特殊功能寄存器中,字节地址为B8H,位地址(由低位到高位)分别是B8H~BFH, IP用来设定各个中断源属于两级中断中的哪一级。该寄存器可进行位寻址即可对该寄存器的每一位进行单独操作。单片机复位时IP全部被清0
定时器/计数器控制寄存器TCON
定时器/计数器控制寄存器在特殊功能寄存器中,字节地址为88H,位地址( 由低位到高位)分别是88H~8FH,该寄存器可进行位寻址。TCON寄存器用来控制定时器的启、停,标志定时器溢出和中断情况。单片机复位时TCON全部被清0。
TFI、TRI、TF0和TR0位用于定时器/计数器
IE1、 ITl、IE0和IT0位用于外部中断
定时器/计数器工作模式寄存器TMOD
定时器/计数器工作方式寄存器在特殊功能寄存器中,字节地址为89H,不能位寻址,TMOD用来确定定时器的工作方式及功能选择。单片机复位时TMOD全部被清0
程序
代码
***********************************************************************
程序功能: 本程序为定时器的基本驱动示例,定时器工作于方式1。
下载程序后,隔三秒钟,第一个发光二极管被点亮。
**************************************************************************/
#include<reg52.h>
#define uint unsigned int
uint count;
sbit led=P1^0;
void main()
{
TMOD=0x01; //模式设置,00000001,可见采用的是定时器0,工作与模式1(M1=0,M0=1)。
TR0=1; //打开定时器
TH0=0Xff; //定时器设置,每隔100微秒发起一次中断。
TL0=0Xa4;
ET0=1; //开定时器0中断
EA=1; //开总中断
while(1)
{
if(count==30000)
{
led=!led;//时隔3s后,led被点亮。
count=0;
}
}
}
void time0() interrupt 1
{ TH0=0Xff;
TL0=0Xa4;
count++;
}
计算定时器初值
中断函数写法
例子
52单片机中断级别
部分文字和图片来自STC官方手册和51单片机教程(郭天祥版)