#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闪烁代码 加循环和不加循环有什么区别
推荐阅读最新更新时间:2024-11-09 11:07
设计资源 培训 开发板 精华推荐
- 使用 NXP Semiconductors 的 PTN5100 的参考设计
- 极客掌机
- LT3470AEDDB 2.5V 降压转换器的典型应用电路
- 使用 NXP Semiconductors 的 MPC862 的参考设计
- DC696A,用于 LT5546EUF、500MHz IF 接收器、VGA 和 I/Q 解调器以及宽 BB BW 的演示板
- 神之眼挂件V1.2_ESP32U
- EVAL-AD7674CB1,基于 18 位、2.5 LSB INL、800Ksps SAR ADC 的开发工具
- DC1317A-F,使用 LT1952EGN-1 的演示板,Vin=9V 至 36V,Vout=3.3V,22A 单开关同步正向控制器
- 重绘zigbee2mqtt项目pcb
- LTC2945HMS 隔离式宽范围 I2C 功率监视器的典型应用