一、中断
1.1 中断概述
51单片机有5个中断源。
所谓中断,就是该事件可以打破正在执行的程序,从而进入新的任务中。等处理该事件的任务完成之后,再重新执行刚才被打断的任务。
中断优先级低的任务可以被中断优先级更高的任务打断。平时没有中断时执行的程序优先级最低,可以被任何中断打断。
中断系统结构示意图:
该芯片是stc90c51,因此多了一个外部中断和定时器2的中断。
一般情况下,51单片机有2个定时器中断,2个外部中断和一个串口中断。
每一个中断,都有相应的一个中断使能位。只有中断使能位为1,系统才能响应该中断。
每一个中断,都有两个相应的优先级控制位,可以设置0~3的中断优先级。0为最低,3为最高。
两个优先级相同的中断同时发生时,根据上图的查询顺序来响应。
同优先级的中断不能被另一个中断打断。
中断程序的起始地址存在中断向量表中。
1.2 中断触发方式
当定时器寄存器THx/TLx(x = 0,1)溢出时,溢出标志位TFx(x = 0,1)会被置位,定时器中断发生。
当串行口接收中断请求标志位RI和串行口1发送中断请求标志位TI中的任何一个被置为1后,串行口中断都会产生。
外部中断既可低电平触发,也下降沿触发,采用何种触发方式由TCON寄存器里的控制位决定。
1.3 相关寄存器
IE里的EA位是所有中断的总开关,其他位都是针对每一个中断的使能开关。
IP和IPH控制每一个中断的优先级。
TCON里控制外部中断的触发方式,以及定时器溢出的标志位。
SCON里有串口中断的标志位。
二、编程示例
sdcc下初始化中断
#include <8051.h>
/* sfr IPH can not access by bit */
#define PX0H 0x01
#define PT0H 0x02
#define PX1H 0x04
#define PT1H 0x08
#define PSH 0x10
#ifdef USB_ISR
void isr_init()
{
EA = 1;
/* ir 0 int0 */
#ifdef ISR_INT0
EX0 = 1;
/* trigger */
#ifdef ISR_INT0_EDGE
IT0 = 1;
#endif
#ifdef ISR_INT0_LEVER
IT0 = 0;
#endif
/* priority */
#if (ISR_INT0_PR == 1)||(ISR_INT0_PR == 3)
PX0 = 1;
#endif
#if (ISR_INT0_PR == 2)||(ISR_INT0_PR == 3)
IPH = IPH | PX0H;
#endif
#endif
/* ir 1 timer0 */
#ifdef ISR_TIMER0
ET0 = 1;
/* priority */
#if (ISR_TIMER0_PR == 1)||(ISR_TIMER0_PR == 3)
PT0 = 1;
#endif
#if (ISR_TIMER0_PR == 2)||(ISR_TIMER0_PR == 3)
IPH = IPH | PT0H;
#endif
#endif
/* ir 2 int1 */
#ifdef ISR_INT1
EX1 = 1;
/* trigger */
#ifdef ISR_INT1_EDGE
IT1 = 1;
#endif
#ifdef ISR_INT1_LEVER
IT1 = 0;
#endif
/* priority */
#if (ISR_INT1_PR == 1)||(ISR_INT1_PR == 3)
PX1 = 1;
#endif
#if (ISR_INT1_PR == 2)||(ISR_INT1_PR == 3)
IPH = IPH | PX1H;
#endif
#endif
/* ir 3 timer1 */
#ifdef ISR_TIMER1
ET1 = 1;
/* priority */
#if (ISR_TIMER1_PR == 1)||(ISR_TIMER1_PR == 3)
PT1 = 1;
#endif
#if (ISR_TIMER1_PR == 2)||(ISR_TIMER1_PR == 3)
IPH = IPH | PT1H;
#endif
#endif
/* ir 4 uart */
#ifdef ISR_UART
ES1 = 1;
/* priority */
#if (ISR_UART_PR == 1)||(ISR_UART_PR == 3)
PS = 1;
#endif
#if (ISR_UART_PR == 2)||(ISR_UART_PR == 3)
IPH = IPH | PSH;
#endif
#endif
}
#endif
上一篇:单片机最小系统详解
下一篇:51单片机(三)——定时器/计数器
推荐阅读最新更新时间:2024-03-16 16:01