AT89S51为用户供给两个外部中止恳求输入端INT0(的反)和INT1(的反),实践的使用体系中,两个外部中止恳求源往往不够用,需对外部中止源进行扩大。下面介绍一种扩大外部中止源的办法。
如下图所示,若体系中有5个外部中止恳求源IR0~IR4,它们均为高电平恳求有用,这时可按中止恳求的轻重缓急进行排队,把其间第一流其他中止恳求源IR0直接接到AT89S51的一个外部中止恳求源IR0输入端INT0,其他的4个中止恳求源IR1~IR4按下图所示的办法经过各自的OC门(集电极开路门)连到AT89S51的另一个外中止源输入端INT1,一起还连到P1口的P1.0~P1.3脚,供AT89S51查询。各外部中止恳求源的中止恳求由外部设备的硬件电路发生。选用如下图所示的电路,除了IR0的中止优先权等级最高外,其他4个外部中止源的中止优先权取决于查询次序,这儿假定查询次序为P1.0~P1.3,因而,中止优先权由高到低的次序依次为IR1,…,IR4。中止优先权的高、低取决于查询次序。
假定上图的4个外部设备中有一个外部设备提出为高电平有用的中止恳求信号,则中止恳求经过4个集电极开路OC门的输出公共点,即INT1脚的电平就会变低。那么究竟是哪个外部设备提出的中止恳求,还要经过程序查询P1.0~P1.3引脚上的逻辑电平来确认。本例假定某一时刻只能有一个外部设备提出中止恳求,并设IR1~IR4这4个中止恳求源的高电平可由相应的中止服务子程序清0,则处理INT1的中止服务子程序如下:
查询法扩展外部中止源比较简单,可是扩展的外部中止源个数较多时,查询时刻稍长。