zoukankan      html  css  js  c++  java
  • LED灯随机亮起几个灯

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

    这篇还有一个东西要说就是 P2 以及之前的sbit,今天找到了资料,明天写一写。

    http://www.keil.com/support/man/docs/c51/c51_le_sbit.htm

    这里有个特殊的用法P2=XX

    可以参考我写的一篇文章。sbit和sfr到底是什么

    总之特殊寄存器是可以直接把名字来操作数据的。

  • 相关阅读:
    Django URL
    django初识
    django 相关配置(pycharm)
    mysql数据库语言分类
    css常用
    Django—BBS注册页面
    Django—Auth认证模块
    Django—中间件
    Django—form组件,cookie和session
    Django—AJAX
  • 原文地址:https://www.cnblogs.com/yfish/p/10854043.html
Copyright © 2011-2022 走看看