void jinzhi(){//按下禁止按钮后四个方向都禁止(都为红灯) 且时间显示为99 P2 = shuzi[9]; //段码 tube(); delay(); ew_red = 0; ew_yellow = 1; ew_green = 1; sn_red = 0; sn_yellow = 1; sn_green = 1; delay(); } void panduan(){//按键的判断 int k; if(P3_3 == 0){//按下时切换到南北绿灯刚亮起的时间段 s = 1; } else if(P3_4 == 0){//按下时切换到循环之外的时间段 实现全部禁止(恢复通行需要按下南北通行或东西通行) k=0; } if(k == 0){ if(m>0&&m<=15){ if ( m % 2 == 0 ){ sn_green = 1; } else{ sn_green = 0; } sn_wait(); } else if(m>0&&m<=15){ if ( m % 2 == 0 ){ ew_green = 1; } else{ ew_green = 0; } ew_wait(); } } } 通过按键Key1红灯方向不变化,数码管显示为“99”,保持不变。而绿灯方向开始闪烁3S,数码管显示为“99”;闪烁完毕后熄灭,黄灯亮3S;黄灯3S后熄灭,红灯亮;按下Key2,恢复绿灯继续倒数,时间恢复原设定,南北为60S,东西为40S使代码符合要求
时间: 2024-01-30 13:04:05 浏览: 72
你的代码中存在一些问题,需要进行修改:
1. 在 jinzhi() 函数中,你需要将时间显示为 99,而你现在的代码中只设置了红灯亮起。你需要在设置红灯亮起后,再次设置数码管显示为 99。
2. 在 panduan() 函数中,你需要在按下 Key2 后恢复绿灯继续倒数,但是你的代码中只有在按下 Key1 时才进行判断。你需要添加 Key2 的判断语句,并在其中恢复绿灯继续倒数。
下面是修改后的代码:
```
void jinzhi(){
P2 = shuzi[9]; //段码
tube();
delay();
ew_red = 1;
ew_yellow = 0;
ew_green = 0;
sn_red = 1;
sn_yellow = 0;
sn_green = 0;
P2 = shuzi[9]; //段码
tube();
delay();
}
void panduan(){
int k = 1; // 初始化为1,表示未按下 Key2
if(P3_3 == 0){
s = 1;
}
else if(P3_4 == 0){
k = 0;
}
if(k == 0){
if(m > 0 && m <= 15){
if(m % 2 == 0){
sn_green = 1;
}
else{
sn_green = 0;
}
sn_wait();
}
else if(m > 15 && m <= 55){ // 修改条件判断
if(m % 2 == 0){
ew_green = 1;
}
else{
ew_green = 0;
}
ew_wait();
}
}
else{ // 恢复绿灯倒数
if(s == 0){
m = 40;
}
else{
m = 60;
}
ew_green = 0;
sn_green = 0;
delay_1s();
ew_yellow = 1;
sn_yellow = 1;
delay_1s();
ew_yellow = 0;
sn_yellow = 0;
ew_red = 1;
sn_red = 1;
delay_1s();
}
}
```
阅读全文