标题:
新手交通灯代码 一直运行不起来,只有上下的灯能亮
[打印本页]
作者:
Banddddd
时间:
2018-3-19 23:26
标题:
新手交通灯代码 一直运行不起来,只有上下的灯能亮
不知道哪里出错了。。。一直运行不起来,只有上下的灯能亮
#include"reg51.h"
#define uint unsigned int
#define uchar unsigned char
sbit E_RED = P0^0;
sbit E_YELLOW = P0^1;
sbit E_GREEN = P0^2;
sbit N_RED = P0^3;
sbit N_YELLOW = P0^4;
sbit N_GREEN = P0^5;
sbit LEFT_E=P0^6;
sbit LEFT_N=P0^7;
uchar i,type = 1;
void Delay_Ms(unsigned int time)
{
unsigned char i ;
while (time--)
{
for(i=0;i<120;i++);
}
}
void traffic_light()
{
switch(type)
{
case 1:
E_RED = 1; E_YELLOW = 1;E_GREEN = 0;LEFT_E=1;
N_RED = 0; N_YELLOW = 1;N_GREEN = 1;LEFT_N=1;
Delay_Ms(2000);
type = 2;
break;
case 2:
for(i=0;i<6;i++)
{
E_RED = 0; E_YELLOW = 1;E_GREEN = 1;
N_RED = 0; N_YELLOW = 1;N_GREEN = 1;
Delay_Ms(300);
type =3;
break;
case 3:
E_RED = 0; E_YELLOW = 1;E_GREEN = 1;LEFT_E=0;
N_RED = 1; N_YELLOW = 1;N_GREEN = 0; LEFT_N=1;
Delay_Ms(2000);
type = 4 ;
break;
case 4:
for(i=0;i<6;i++)
{
N_RED = 1; N_YELLOW = ~N_YELLOW; N_GREEN = 1;
Delay_Ms(300);
}
type = 5;
case 5:
E_RED = 0; E_YELLOW = 1;E_GREEN = 1;LEFT_E=1;
N_RED = 1; N_YELLOW = 1;N_GREEN = 0; LEFT_N=1;
Delay_Ms(2000);
type = 6 ;
break;
case 6:
for(i=0;i<6;i++)
{
N_RED = 1; N_YELLOW = ~N_YELLOW; N_GREEN = 1;
Delay_Ms(300);
}
type = 7;
case 7:
E_RED = 0; E_YELLOW = 1;E_GREEN = 1;LEFT_E=1;
N_RED = 1; N_YELLOW = 1;N_GREEN = 1; LEFT_N=0;
Delay_Ms(2000);
type = 8 ;
break;
case 8:
for(i=0;i<6;i++)
{
N_RED = 1; N_YELLOW = ~N_YELLOW; N_GREEN = 1;
Delay_Ms(300);
}
type = 1;
} } }
void main()
{
while(1)
{
traffic_light();
}
}
复制代码
555.zip
2018-3-19 23:26 上传
点击文件名下载附件
692 Bytes, 下载次数: 5
作者:
ssd1008
时间:
2018-3-20 07:54
这么简单的程序最适合新手用来练习调试了,学会调试,很多问题都能自己解决,这才是有收获的技巧。
作者:
xdl932365660
时间:
2018-3-20 08:38
你贴这个代码丝毫没有卵用
作者:
999994
时间:
2018-3-20 09:09
这么简单的程序最适合新手用来练习调试了,学会调试,很多问题都能自己解决,这才是有收获的技巧。
作者:
zl2168
时间:
2018-3-20 09:19
去看看别人的成功案例吧!如果没有耐心,干脆不要学单片机!
作者:
MPgUp
时间:
2018-3-20 10:04
你把你的电路图贴上啊,怎么知道你啥是啥
作者:
zhangxiaozi
时间:
2018-3-20 10:10
程序在case 2 中for 循环错误
for(i=0;i<6;i++)
{
E_RED = 0; E_YELLOW = 1;E_GREEN = 1;
N_RED = 0; N_YELLOW = 1;N_GREEN = 1;
Delay_Ms(300);
}// 这里应该是6次循环,而你把}放到行112处,最好不要用循环语句,看你的目的是想延时1.8秒
//那就用Delay_Ms(1800)
type =3;
break;
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1