keil 生成随机数的问题,帮忙看一下问题在哪

#include<reg52.h>#include<stdlib.h>unsignedcharc;sbitled1=P1^0;sbitled2=P1^1;sbitled3... #include <reg52.h>
#include <stdlib.h>
unsigned char c;
sbit led1=P1^0;
sbit led2=P1^1;
sbit led3=P1^2;
sbit led4=P1^3;
sbit led5=P1^4;
void delay()
{
unsigned char a,b;
for(b=221;b>0;b--)
for(a=207;a>0;a--);
}

void main()
{
while(1)
{
c=rand()*10+1;
if((c>1)&&(c<3))
{led1=0;delay();}
if((c>3)&&(c<5))
{led2=0;delay();}
if((c>5)&&(c<7))
{led3=0;delay();}
if((c>7)&&(c<9))
{led4=0;delay();}
if((c>9)&&(c<10))
{led5=0;delay();}
delay();
P1=1;
delay();
}
}
本来想让生成随机数后led灯根据随机数的大小变化,可是只有第一个灯一直暗,其他的全亮。
展开
 我来答
做而论道
高能答主

2014-07-25 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:1.2亿
展开全部
P1=1; !!! 只有第一个灯暗,其他的全亮。

改成:

P1 = 255;

再试试。
-----
另外,条件有些复杂,也太苛刻了:

if((c > 1) && (c < 3)) --就是 C==2
if((c > 3) && (c < 5)) --就是 C==4
if((c > 5) && (c < 7)) --就是 C==6
if((c > 7) && (c < 9)) --就是 C==8
if((c > 9) && (c < 10)) --就是不成立

不如用 P1 = c; ,直接看一看随机数是多少。
更多追问追答
追问
rand()*10+1只给出1到10十个整数么
追答
究竟是什么数,用 P1 = c; ,一看便知。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式