·上一文章:用multiSIM2001求解电学习题的心得体会
·下一文章:介绍几款适宜自制的高清晰彩投的液晶屏
二、用软件扩展外部中断
大家知道,51单片机的外部中断只有2个,书本上曾介绍了一种扩展外部中断源的方法,但是需增加硬件开销(见上图)。经或非门引入外中断源输入端(/INTO或/INT1),同时又连到某1/0口。这样,每个“源”都可能引起中断,在中断服务程序中通过软件查询便可确定哪一个是正在申请的中断源,其查询的次序则由中断源优先级决定,这就可实现多个外部中断源的扩展。
这种方法尽管扩展了外部中断源,但也有不尽人意之处,如设计一个具有8个中断源的电路,则需一个8输入端的或非门(或门),显然,对体积与成本都不利。这里介绍笔者设计的扩展外部中断源的方法,由纯软件实现,不添加一个元件(见下图)。
程序解释:无按键按下时,P3.0的发光管闪亮,作程序状态显示。主程序初始化时,置P2口为全O,置P3.2为高电平,同时置INTO为边沿触发,并开放中断。8个按键的任一个按下时都会引起INTO中断,进入中断服务子程序后,首先关闭中断,然后置P3.2为低电平,置P2口为全1,再读取P2口状态至m,通过查询m的状态字即可知道正在申请的中断源。这里我们采用的方法是将m输出至PO口点亮LED作指示。退出中断时,重新开放中断。