#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与才对,哈哈。
上一篇:sbit和sfr到底是什么?
下一篇:LED闪烁代码 加循环和不加循环有什么区别
- 热门资源推荐
- 热门放大器推荐
- 使用 ON Semiconductor 的 FAN2518S 的参考设计
- LTC1530S8、3.3V/3A 稳压器
- 使用 ON Semiconductor 的 ADP3167 的参考设计
- 使用 Analog Devices 的 LT3420EDD 的参考设计
- 基于Kinetis® M的低成本单相电表参考设计
- LTC3708、具有上升/下降轨跟踪功能的 2.5V/15A 和 1.2V/15A 稳压器
- NXQ1TXH5插件板
- 应变仪仪表放大器
- WRL-13287,基于 ESP8266 802.11 无线局域网的 SparkFun Wi-Fi Shield
- 4.1W、3-LED 通用 LED 照明驱动器

现代雷达系统的信号设计
LTC6102HVHMS8

BFR340T






京公网安备 11010802033920号