本帖最后由 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);
- }
代码,请使用“添加代码文字”!
我是菜鸟,求大神解答下,谢谢!!!
|