请帮忙看下下面的单片机终端程序

来源:百度知道 编辑:UC知道 时间:2024/06/23 00:42:26
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
sbit D9=P2^3;
void delay() ;
void main()
{
EA=1;//开总中断
EX0=1;//开外部中断0
TCON=0x00;

while(1)
{
D1=1;
delay();
D1=0;
delay();
}
}

void delay()
{
uint x,y;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++) ;
}

void exter0() interrupt 0
{
D9=0;
delay();
D9=1;
delay();

} 我运行了这个程式,发现工作在中断中,只显示D9不停的亮灭,怎么不运行主程式了? 请教

你用的是电平出发,也就是说只要INT0口为低电平就一直执行中断程序。所以D9就一直闪,你把TCON=0x00改成IT0=1(负跳沿触发)主程序就能执行了。

你的中断是不是不断在触发啊?要不D9不可能不停的闪。
如果中断不断触发,那主程序的死循环无法占用CPU。
主程序肯定运行了,要不你中断也不能初始化
其次是你有没有把D9跟D1弄错了?

你设置的时电平触发吧,把外中断0配置为沿触发就好了,只在下降沿时进入一次中断

你设置了低电平触发中断,而且你还在中断输入端,持续输入了低电平,那么结果就是这个样子。