|
就是按照我的思路敲了一个代码,实现两路通行的,但是我的黄灯闪烁5次,只闪烁了3次就执行下一个函数了,为什么啊,赋值循环次数已经是5次了啊,是哪里冲突了吗?求大佬解答一下
单片机代码如下:
#include<reg51.h>
sbit P01=P0^1;
sbit P04=P0^4;
void delay1ms()
{
unsigned char i,j;
for(i=0;i<10;i++)
for(j=0;j<33;j++)
;
}
void delay(unsigned char n)
{
unsigned char i;
for(i=0;i<n;i++)
delay1ms();
}
void Level_Yellow() //水平黄灯闪烁
{ unsigned char k1;
P0=0XF5; //1111 1001 - 1111 1010闪烁
for(k1=0;k1<5;k1++) // 闪烁5次
{ P01=~P01;
delay(200);
}
}
void Level_Pass() //水平通行
{
unsigned char k3;
P0=0XF3;
for(k3=0;k3<10;k3++)
delay(200);
}
void Vertical_Pass() //垂直通行
{
unsigned char k4;
P0=0Xde;
for(k4=0;k4<10;k4++)
delay(200);
}
void Vertical_Yellow() //垂直黄灯闪烁
{ unsigned char k2;
P0=0XEE;
for(k2=0;k2<5;k2++)
{ P04=~P04;
delay(200);
}
}
void main(void)
{
while(1)
{
Level_Pass();
Level_Yellow ();
Vertical_Pass();
Vertical_Yellow();
}
}
|
-
到这里就闪3次
-
这里是函数段,已经赋值5次了啊
-
这里是主程序部分
-
-
led交通.zip
59.68 KB, 下载次数: 5
|