本帖最后由 yueguang3048 于 2020-4-22 09:51 编辑
#include <reg51.h>
sbit LED=P3^7;
sbit LED1=P3^6;
unsigned char second;
unsigned char tcount ,t,a;
void delay(unsigned int c);
void time_int();
void main()
{
int d;
time_int();
a=1;
delay(100);
for(d=0;d<3;d++)
{
LED1=0;
LED=0;
delay(100);
LED1=1;
LED=1;
delay(100);
}
while(1);
}
void t0() interrupt 1 using 0
{
int i;
TH0=0Xd8; //重装50ms初值,TH0=(65536-50000)/256
TL0=0Xf0; // TL0=(65536-50000)/256
if(a==1)
{
while(1)
{
for(i=0;i<3;i++)
{
LED=0;
delay(1000);
LED=1;
delay(1000);
}
a=0; break;
}
if(a==0)
{ while(1) //本段程序功能为显示
{
LED1=0;
delay(1000);
LED1=1;
delay(1000);
break;
}
}
}
}
void time_int()
{
TMOD=0x01; //定时器0工作在工作方式1下
TH0=0Xd8; //设置50ms定时时计数器的初值,TH0=(65536-50000)/256
TL0=0Xf0; // TL0=(65536-50000)/256
EA=1; //CPU开总中断
ET0=1; //T0开中断
TR0=1; //启动T0
tcount=0;
second=0;
t=0;
}
void delay(unsigned int c)
{
unsigned int x,y;
for(x=c;x>0;x--)
for(y=110;y>0;y--);
}
这是一个中断的实验
当检测到a==1的时候,进入中断,当执行完中断的函数后,为何不能
执行主函数的
for(d=0;d<3;d++)
{
LED1=0;
LED=0;
delay(100);
LED1=1;
LED=1;
delay(100);
}
代码,请使用“添加代码文字”!
我是菜鸟,求大神解答下,谢谢!!! |