现在是接通电源后,流水灯直接亮,那如何修改让它接通电源后,按下按键P2.0后流水灯开始运行 /********************************************************** 霓虹灯模拟控制主程序 **********************************************************/ #include<AT89X52.h> unsigned char i10,i8,i6; unsigned charmod1,mod2; void main(void) { i10=10; //设置软件计数10次,每次100ms i8=8; //设置循环点亮阶段输出次数 i6=6; //设置间隔闪烁阶段输出次数 mod1=0x01; //设置循环点亮阶段控制码初值 mod2=0xAA; //设置间隔闪烁阶段控制码初值 F0=0; //设置循环点亮阶段标志,F0=0为循环点亮阶段 TMOD=0x10; //设置T1方式1定时 TH1=0x3C; //送100ms定时初值 TL1=0xB0; IE=0x88; //允许T1中断 P1_0=1 // TR1=1; //启动T1定时 while(1); //等待中断 }
/********************************************************** T1中断服务程序 **********************************************************/ void timer0(void) interrupt 3 using 1 { TH1=0x3C; //100ms时间到,重装定时初值 TL1=0xB0; i10--; if(i10==0) { i10=10; //1s到重设软件计数器 if(F0==0) { P1=~mod1; //循环点亮阶段控制码取反送P1口 mod1= mod1<<1; //mod1值左移一位 i8--; if(i8==0) { i8=8; //完成重设循环点亮阶段输出次数 F0=1; //设置间隔闪烁阶段标志 } } else { P1=mod2; //输出间隔闪烁阶段控制码 Mod2=~mod2; //控制码取反 i6--; if(i6==0) { i6=6; //完成重设间隔闪烁阶段输出次数 F0=0; //设置循环点亮阶段标志 } } } }
|