原创 6

2007-11-21 21:12 2566 4 4 分类: MCU/ 嵌入式
摘自“中原孔海洋”
MCS-51系列单片机具有5个中断源,2个中断优先级,可以实现2级中断服务程序嵌套。5个中断源分别为:两个外部输入中断源INT0(P3.2)和INT1(P3.3),中断请求标志分别为IE0和IE1;2个内部定时器/计数器的溢出中断源T0(计数时P3.4输入)和T1(计数时P3.5输入),中断请求标志分别为TF0和TF1;串口中断请求源,其中断请求标志为RI或TI。
 
中断请求标志位分布在特殊功能寄存器TCON(IE0、IE1、TF0、TF1)和SCON(RI、TI)中。与中断有关的特殊功能寄存器除它们以外还有中断允许寄存器IE和中断优先级寄存器IP。这些寄存器都能够进行位寻址。此处不再对它们进行详细的探讨。关于它们的详细情况和具体功能以及中断的其他知识请参阅相关参考文献,此处我们从略。 
事实上,关于中断我们在上一篇文章中讨论定时器/计数器时已经对T0、T1的相关中断进行过较为详尽的讨论和举例。而关于串口中断,我们会在下节讲解串口时进行相应的讨论,所以本节我们只简单讨论一下外部中断INT0和INT1,并举例分析。 
例1.外部中断INT0和INT1同时存在。和上篇文章中的例3一样,P1口连接8个LED发光二极管,两个按键分别接到外部中断INT0和INT1。正常情况下,8个LED闪烁发光。当INT0发生中断时,使P1口的8个LED做一个灯的左移右移两次;当INT1发生中断时,使P1口的8个LED做两个灯的左移右移两次。 
此例的源程序如下图所示: 

点击看大图

点击看大图
源文件编辑结束以后,将源文件保存为汇编文件,然后进行编译/汇编,并产生相应的源代码以便下面仿真使用。 
下面我们在Proteus中绘制电路,此例电路图和上篇文章中最后一例的电路图大体相同,只不过将接在P3.5的按键改为接在P3.2和P3.3的INT0和INT1的中断请求输入端。绘制好的电路图如下图所示: 

点击看大图
电路设计好以后,我们就可以将上面生成的源代码装入单片机,然后进行仿真了。可以看到,仿真开始时,8个LED作大约0.2S间隔的闪烁;当我们按下INT0口的按键时,LED作一个灯的左移右移两次;当我们按下INT1口的按键时,LED作两个灯的左移右移两次。完全达到了我们预期的设计目的。仿真中的一个画面如上图所示。 

  • 上一篇: 7
  • 下一篇: 5
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
4
关闭 站长推荐上一条 /3 下一条