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