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