proteus仿真时为什么灯不亮?

2019-07-16 20:41发布

#include<reg51.h>
sbit SNRED=P0^0;
sbit SNGREEN=P0^1;
sbit SNYELLOW=P0^2;
sbit EWRED=P0^3;
sbit EWGREEN=P0^4;
sbit EWYELLOW=P0^5;
void delayunit()
{
  unsigned int i,j;
        for(i=0;i<1000;i++);
        for(j=0;j<1000;j++);
}
void delay (unsigned int n)
{
  for( ;n!=0;n++);
        delayunit();
}
void main()
{
  while(1)
        {
          SNRED=1;SNGREEN=0;SNYELLOW=0;EWRED=0;EWGREEN=1;EWYELLOW=0;delay(15);
                SNRED=1;SNGREEN=0;SNYELLOW=0;EWRED=0;EWGREEN=0;EWYELLOW=1;delay(5);
                SNRED=0;SNGREEN=1;SNYELLOW=0;EWRED=1;EWGREEN=0;EWYELLOW=0;delay(15);
                SNRED=0;SNGREEN=0;SNYELLOW=1;EWRED=1;EWGREEN=0;EWYELLOW=0;delay(5);
        }
}


QQ图片20181026105050.jpg
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
ldliu
1楼-- · 2019-07-17 01:37
图太小了,有点看不清,看样子是个交通灯的电路,把原图传上来看下吧
dianziaihao88
2楼-- · 2019-07-17 05:18
for(i=0;i<1000;i++);
        for(j=0;j<1000;j++);
for( ;n!=0;n++);
        delayunit();
问题1:上面的第一行跟第三行的“;”应该是多余的,
问题二:看程序的意思第三行应该写成for( ;n!=0;n--)
建议先把C语言基础学好
石相康
3楼-- · 2019-07-17 10:18
程序有问题啊是烦烦烦烦烦烦烦烦烦烦烦烦烦烦烦
zxw12315
4楼-- · 2019-07-17 16:14
程序臃肿,命名规则混乱,无格式可读性差,循环语句冗余,LED灯不亮的原因很多,程序只是一方面,你还要了解晶振频率,和你delay时间有关系的,你写15,和不写的差别不大。

一周热门 更多>