当前位置: 首页 > article >正文

51单片机快速入门之左移右移流水灯 2024年10/15

51单片机快速入门之左移右移流水灯

左移操作:

  1.   <<1   每次往左移动一位
  2. 假设一个八位数为0000 1111   
  3. 当这个数左移一次之后   0   0001 1110
  4. 当这个数左移两次之后 00   0011 1100

注意观察   橙色  数字

Python代码如下: 0b表示这是一个二进制  注意这里前置0被省略了

右移操作:

  1.   1>>  每次往右移动一位
  2. 假设一个八位数为 1111  0000 
  3. 当这个数右移一次之后    0111 1000  0
  4. 当这个数右移两次之后  0011 1100    00

注意观察   橙色  数字

Python代码如下: 0b表示这是一个二进制  注意这里前置0被省略了

51单片机代码

 (注意 要移动的=要移动的 <<1  等同于  要移动的 <<=1)

理解了左移右移,我们开始51单片机 代码,以下是完整代码:


void main()
{
    unsigned char i,TMP;
    P1=0x01;//这里我的led 为低电平点亮 所以0000 0001 p1.0 会熄灭 其余灯点亮


   
    for(; i<8; i++) {
				 P1 <<=1;
        delay(60000);
      
    }

}

void delay(unsigned int t)
{
    while(--t);

}

 
// 第一次移动之后:
// 二进制: 0000 0010
// LED状态: p1.1会熄灭, p1.0点亮

// 第二次移动之后:
// 二进制: 0000 0100
// LED状态: p1.2会熄灭, p1.1点亮

// 第三次移动之后:
// 二进制: 0000 1000
// LED状态: p1.3会熄灭, p1.2点亮

// 第四次移动之后:
// 二进制: 0001 0000
// LED状态: p1.4会熄灭, p1.3点亮

// 第五次移动之后:
// 二进制: 0010 0000
// LED状态: p1.5会熄灭, p1.4点亮

// 第六次移动之后:
// 二进制: 0100 0000
// LED状态: p1.6会熄灭, p1.5点亮

// 第七次移动之后:
// 二进制: 1000 0000
// LED状态: p1.7会熄灭, p1.6点亮
						

        


以上代码有时候会遇到一个很严重的问题:

当我们直接操作P1时,程序有很大概率会跑飞,也就是说实际体现上不会执行移位效果,所以我们这里运用一个中间变量,先运算后应用以下是关键代码:

void delay(unsigned int t);//延时函数声明


void main()
{
    unsigned char i,TMP;
    TMP=0xff;

    i=0;

         for(;i<8;i++)
    {     P1=TMP;//把中间变量赋值给 P1
        delay(60000);//延迟一会
      TMP<<=1;//变化中间变量,进入下一个循环
        
    }
   

}

void delay(unsigned int t)
{
    while(t--);

}

往右移动

void delay(unsigned int t);//延时函数声明


void main()
{
    unsigned char i,TMP;
    TMP=0x7f;

         for(;i<8;i++)
    {      P1=TMP;
        delay(60000);
      TMP>>=1;
        
    }
   
 

}

void delay(unsigned int t)
{
    while(t--);

}


http://www.kler.cn/news/357764.html

相关文章:

  • 【npm问题】报错信息
  • Android15之解决gdb:Remote register badly formatted问题(二百三十六)
  • 架构设计笔记-21-案例分析
  • unity 音频和文字转换工具分享
  • RAII - 安卓中的智能指针
  • CTF(五)
  • 闯关leetcode——136. Single Number
  • 软件开发的项目管理的风险有哪些?
  • 深度学习的全面解析
  • 数学考研高分突破:解题思维与速度的双重修炼
  • 38岁老Mac“复工”,被改造上网!
  • Qt第十三天:网络编程:TCP和UDP的使用
  • 高效图书管理:基于Spring Boot的进销存系统
  • 洛谷 AT_abc373_d [ABC373D] Hidden Weights 题解
  • 019_基于python+django食品销售数据分析系统2024_4032ydxt
  • cpp详解:string
  • 基于单片机的 16 键多功能电子琴硬件设计
  • 人工智能公司未达到欧盟人工智能法案标准
  • Sentinel 快速入门
  • 网络安全有关法律法规