四、外部中断的扩充
尽管89C51的外部中断数不应超过两个,但有方法可以使其外部中断数超过5个。有两个简单的方法:①把定时/计数器中断做成外部中断;②把串行口中断做成外部中断。


扩展外部中断最简单的方法就是把定时/计数器设置为计数模式,然后把信号接到计数器相应的引脚上(T0或T1)。为了使每出现一个从高到低的脉冲时都产生中断,可以把定时器设置为自动重装模式,令重装值为0x FF。当计数器检测到从高到低的脉冲时,定时器将溢出并产生一个中断请求。实现以上过程的C语言主程序清单如下:

使用串行口作为外部中断的方法是将RXD引脚变成输入信号,检测从高到低的电平跳变。把串口设置为模式2,当检测到从高到低的电平跳变时,8为数据传输时间过后将产生中断,当中断发生后通过软件将RI清零。