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灯根据随机数的大小变化,可是只有第一个灯一直暗,其他的全亮。 展开
#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灯根据随机数的大小变化,可是只有第一个灯一直暗,其他的全亮。 展开
1个回答
展开全部
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; ,直接看一看随机数是多少。
改成:
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; ,一看便知。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询