51单片机中断系统实验
一、实验内容
INT0端接单次脉冲发生器。按一次脉冲产生一次中断,CPU使P1.0状态发生一次反转,P1.0接LED灯,以查看信号反转。
根据实验内容编写一个程序,并在实验系统上调试和验证。

二、仿真图


三、代码


C语言实现

sbit LED=P1^0;
void INT0_IN();

void main()
{
    LED=0;
    INT0_IN();
    while(1) ;

}

 void INT0_IN()
{
   EA=1;//总中断打开
   EX0=1;//外部中断0 打开
   IT0=0;//负边沿触发
}

void exter0() interrupt 0
{
    IE0=0;
    LED=~LED;
}

汇编实现:

        LED     BIT   P1.0
        LEDBUF  BIT   20H
        ORG 0000H
        LJMP START
        ORG 0003H
        LJMP INT00
        ORG 0030H

START:  MOV SP,#60H
        CLR LEDBUF  //清0
        CLR LED	  //清0	   
        MOV TCON, #01H   ; 外部中断0下降沿触发
        MOV IE,   #81H       ; 打开外部中断允许位(EX0)及总中断允许位(EA)
OK:     LJMP OK

INT00:  PUSH     PSW          ; 保护现场
        CPL     LEDBUF      ; 取反LED
        MOV     C, LEDBUF
        MOV     LED, C
        POP     PSW          ; 恢复现场
        RETI
        END