标题:
求解单片机红绿灯程序一直跳不出循环,一直在9-4循环
[打印本页]
作者:
as87asda
时间:
2020-6-16 00:40
标题:
求解单片机红绿灯程序一直跳不出循环,一直在9-4循环
#include<reg51.h>
#define p1 P1
#define uchar unsigned char
#define uint unsigned int
sbit gr0=P2^0;
sbit ye0=P2^1;
sbit re0=P2^2;
sbit gr1=P2^3;
sbit ye1=P2^4;
sbit re1=P2^5;
code unsigned shu[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
code unsigned shux[]={0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09};
uchar type=1,flash=0;
uchar temp,red=10;
void delay(uint x)
{
uchar i;
while(x--)
for(i=0;i<120;i++);
}
void main()
{
switch(type)
{
case 1:
re0=0;ye0=0;gr0=1;
re1=1;ye1=0;gr1=0;
temp=red;
while(temp--)
{
P1=shu[temp];
delay(1000);
if(temp==4)break;
}
type=2;
break;
case 2:
gr0=0;
if(++flash!=6) return;
while(temp--)
{
ye0=~ye0;
P1=shu[temp];
delay(1000);
if(temp==4)
break;
}
type=3;
break;
case 3:
re0=1;ye0=0;gr0=0;
re1=0;ye1=0;gr1=1;
temp=red;
while(temp--)
{
P3=shux[temp];
delay(1000);
if(temp==4)break;
}
type=4;
case 4:
gr1=0;
if(++flash!=6)return;
while(temp--)
{
ye1=~ye1;
P3=shux[temp];
delay(1000);
}
flash=0;
type=1;
}
}
51hei截图_20200616003931.png
(64.56 KB, 下载次数: 53)
下载附件
2020-6-16 00:40 上传
作者:
epson009
时间:
2020-6-16 12:49
程序有点小问题,会导致*** error 65: access violation at C:0x020A : no 'execute/read' permission。
建议你将switch结构放到while里面,然后将case 2 和case 4中的 if(++flash!=6) return; 这个语句改写成其他形式。
作者:
lovezjf234
时间:
2020-6-16 13:23
if(temp==4)break;自己不是设置到从9~4自动跳出么? 代码写的可读性真差。
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1