LED灯随机亮起几个灯

发布时间: 2024-08-16
来源: 电子工程世界

#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与才对,哈哈。


文章来源于: 电子工程世界 原文链接

本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。