找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2704|回复: 2
收起左侧

单片机红绿灯程序里有一个while(j--)为什么要加他?

[复制链接]
ID:501283 发表于 2019-4-1 19:25 | 显示全部楼层 |阅读模式
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar led[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar delay(int i)
{uchar a,b,c;
        for(i;i>0;i--)
        {for(c=167;c>0;c--)
          for(b=171;b>0;b--)
        for(a=16;a>0;a--);
    _nop_;  
}}
void delay1(uchar j)
{while(j--);
}
void huangdeng(uchar i)
{while(i--)
{
P1=0X12;          //0001 0010
delay(1);
P1=0X00;          //0000 0000
delay(1);
}
}
void dongxi(uchar a)
{uchar j=1000;
for(a;a>0;a--)
{
while(j--)
{P1=0X24;
P0=0XFE;
P2=led[a/10];
delay1(1000);
P0=0XFd;
P2=led[a%10];
delay1(1000);
}}
P0=0XFF;
}
void nanbei(uchar a)
{uchar j=1000;
for(a;a>0;a--)
{
  while(j--)
   {
P1=0X09; //南北方向红灯亮东西方向绿灯亮
P0=0XFE;        //P00为低电平P01为高电平  低电平通
P2=led[a/10];
delay1(1000);
P0=0XFd;          //第二个数码管点亮
P2=led[a%10];
delay1(1000); }

P0=0XFF;
} }
main()
{
while(1)
{dongxi(30);
huangdeng(3);
nanbei(30);
huangdeng(3);
}
}

回复

使用道具 举报

ID:81075 发表于 2019-4-1 20:35 | 显示全部楼层
while是循环语句,while(j--)意思是j这个变量自减到0之前会一直循环,你这段程序的意思应该是用j这个变量来控制交通灯的时间
回复

使用道具 举报

ID:487821 发表于 2019-4-1 23:46 | 显示全部楼层
用来在红绿灯转换时闪几下提醒要变灯了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表