|
小弟第一次发帖 能得到你们的帮助 真是感到很幸运 谢谢 下面是我的程序 还是那个问题
(我用P1_0——P1_3作为第一组开关(4个开关),
P1_4——P1_7作为第二组开关(4个),
P2_0——P2_2作为第三组开关(3个开关),
P0_0——P0_2作为立刻亮的那三盏灯(1,2,3号),
P0_3——P1_5作为延时亮的那三盏灯(4,5,6号),所有的开关和灯都是低电平有效.....
#include
#include
unsigned char status=0;
unsigned long time1=0,time2=0,time3=0;
unsigned int flag1=0,flag2=0,flag3=0;
void delay(void){
for(;flag1==1||flag2==1||flag3==1;){
if(flag1==1){
time1--;
if(time1==0){
flag1=0;
P0_0=0;
}
}
if(flag2==1){
time2--;
if(time2==0){
flag2=0;
P0_1=0;
}
}
if(flag3==1){
time3--;
if(time3==0){
flag3=0;
P0_2=0;
}
}
}
}
void t0(void) interrupt 1
{
if((P1_0==0||P1_1==0||P1_2==0||P1_3==0)&&flag1==0){
P0_3=0;
flag1=1;
time1=50000;
}
if((P1_4==0||P1_5==0||P1_6==0||P1_7==0)&&flag2==0){
P0_4=0;
flag2=1;
time2=50000;
}
if((P2_0==0||P2_1==0||P2_2==0)&&flag3==0){
P0_5=0;
flag3=1;
time3=50000;
}
}
void main(void)
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1){
delay();
}
}
我也看了 一点实时多任务的程序设计,虽然不是很懂,不过它们都是分优先级 而我的任务 我不太懂该怎么分 因为是哪一组开关先按哪一个的优先级高 如果同时按 那大家都应该一样 而且互不干扰 希望大虾们能给些更具体的建议 !谢谢! |
|