#include 'reg52.h'
#include 'stdlib.h'
typedef unsigned int u16;
void delay(u16 i)
{
while(i--)
{};
}
void main()
{
srand(0);
while(1)
{
P2=rand()&0xff;
delay(60000);
}
}
rand的结果为什么要和0xff与一下,因为rand的结果可能会超过0xff,而我们P2最大值就是0xff,所以与一下就能拿到随机数的低八位,一个16进制位是4个二进制位。
我刚开始没想清楚,觉得应该是和0xff或一下,一测试发现D1到D8全灭,完全不是我想要的结果。后来才反应过来,任何数和0xff或之后的结果都是0xff
那么对应的二进制就是1111 1111 可不就是8个灯都灭吗。和0xff与才对,哈哈。
文章来源于:电子工程世界 原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。