STC89C51——中断系统

 前言

           本文介绍基于常见的51单片机,即如下图的芯片:

STC89C51——中断系统_第1张图片

  • STC89C51具备5个中断源
    中断源 优先级 中断请求标志位 中断允许控制位
    外部中断0 0 IE0 EX0
    定时器中断0 1 TF0 ET0
    外部中断1 2 IE1 EX1
    定时器中断1 3 TF1 ET1
    串口中断 4 RI / TI /

    优先级数字越低,越优先得到CPU处理。配置中断时,需要将对应中断允许控制位置1。

  • 使用任何中断,都需要打开总中断,即程序语句 EA = 1 ;

  • 与中断相关的寄存器:IE 、TCON、SCON(此处只介绍了常用的)


一、中断相关寄存器介绍

1.IE:中断允许寄存器(可位寻址)

D7 D6 D5 D4 D3 D2 D1 D0
IE EA / / ES ET1 EX1 ET0 EX0

对寄存器位功能介绍如下:

①EA :CPU总中断允许控制位。EA=1,允许总中断;EA=0,屏蔽所有中断请求。

②ES:串口中断允许位。用到串口中断时需要置 1

③ET1:定时器1中断允许位。用到定时器1中断时需要置 1

④EX1:外部中断1中断允许位。用到外部中断中断时需要置 1

⑤ET0:定时器0中断允许位。用到定时器0中断时需要置 1

⑥EX0:外部中断0中断允许位。用到外部中断0中断时需要置 1

        实际应用中使用到中断的话,需根据对应中断将其中断允许位置 1,且EA也需置 1。

2.TCON:定时器/计数器控制寄存器(可位寻址)

D7 D6 D5 D4 D3 D2 D1 D0
TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

对寄存器位功能介绍如下:

①TF1: T1 溢出标志位。T1溢出后,硬件置1,硬件清0。
②TR1:T1 运行控制位。在 GATE=0时(此位功能见上文TMOD介绍),只要TR1=1 , T1开始工作。
③TF0:T0 溢出标志位。T0溢出后,硬件置1,硬件清0。
④TR0:T0 运行控制位。在 GATE=0时(此位功能见上文TMOD介绍),只要TR0=1 , T0开始工作。
⑤IE1:外部中断1请求标志位。硬件置1,硬件清0。
⑥IT1:外部中断1触发方式控制位。IT1=0,低电平触发;IT1=1,下降沿触发。
⑦IE0:外部中断0请求标志位。硬件置1,硬件清0。
⑧IT0:外部中断0触发方式控制位。IT0=0,低电平触发;IT0=1,下降沿触发。

        实际应用中,标志位不用配置,标志位是用来给CPU触发中断的;而控制位是在使用到任意中断时,需将对应的控制位置 1 。

3.SCON : 串行控制寄存器(可位寻址)

位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H
SCON / / / / / / T1 R1

下面对寄存器控制位进行介绍:

①TI:发送中断请求标志位。

②RI:接收中断请求标志位。

        以上2个标志位,大多用于串口通信时,用于发送或接收到数据时的判断,由硬件置1,软件清0。实际应用中,可以配合2个标志位对数据进行处理。

二、程序

        以下程序为外部中断0和外部中断1参考程序。

#include 
 void INT0( ) interrupt 0   //如果是外部中断1,中断号为2(即interrupt 2)
{
	//Something to do ;
}

void main( )
{
	IT0=1;		//中断触发方式,1为下降沿触发,0为低电平触发(如果是外部中断1,则为IT1)
	EX0=1;		//使能外部中断0(如果是外部中断1,则为EX1)
	EA=1;		//允许总中断
	while(1);		//
}

你可能感兴趣的:(STC15,STC89C51,嵌入式硬件,c#,单片机,1024程序员节)