单片机学习

学习目标:

  • 点亮一个灯
  • 实现八个流水灯的四种点亮方式

学习内容:

  1. IO口的总线控制方式 单片机对IO口有两种控制方式(1)位控制:单独对每个IO口进行控制 例:led=0;(位定义sbit)  (2)对八个IO口同时进行控制 例:P1=0xFE;
  2. 实现一个灯的点亮
    #include<reg52.h>
    //sfr  P1=0X90;//定义p1寄存器地址
    sbit led0=P1^0;	//led0第一个·发光二极管
    sbit led8=P1^7;	//led0第八个·发光二极管
    void main()
    {
      //第一种点亮
      //led0=0;  //led0给低电平 点亮led
      //while(1);	 //while死循环,让程序停在这里
      //第二种点亮
      while(1)
      {
       led0=0;//第1个发光二极管
       led7=0;//第8个发光二极管 
      }
    }

    3.流水灯的点亮第一种方法:(1)简单粗暴法

    #include<reg52.h>
    #include<intrins.h>
    void main()
    {
     unsigned int i;//定义延时程序变量
     while(1)
     {
     //方法一,简单粗暴
     P1=0xFE;//点亮第一个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P2=0xFD;//点亮第2个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P3=0xFB;//点亮第3个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P4=0xF7;//点亮第4个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P5=0xEF;//点亮第5个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P6=0xDF;//点亮第6个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P7=0xBF;//点亮第7个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P8=0x7F;//点亮第8个led
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序*/
     }
    }

    (2)方法二,运用左移简化程序

    #include<reg52.h>
    #include<intrins.h>
    void main()
    {
     unsigned int i;//定义延时程序变量
     unsigned char x;//定义左移位数变化
     while(1)
     {
     //方法二,运用左移简化程序
     P1=~(0x01<<x);
     x++;
     if(x>=8)
     {
      x=0;
     }
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     }
    }

    (3)方法三,利用库函数更简单实现

    #include<reg52.h>
    #include<intrins.h>
    void main()
    {
     unsigned int i;//定义延时程序变量
     P1=0XFE;
     while(1)
     {
     //方法三,利用库函数更简单实现
     i=65535;		//初始化延时程序变量值
     while(i--);//while延时程序
     P1=_crol_(P1,1);
     }
    }

    (4)方法四,利用数组灵活操作

    #include<reg52.h>
    #include<intrins.h>
    unsigned char code LED[8]={0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};//LED灯点亮数组
    void main()
    {
     unsigned int i;//定义延时程序变量
     unsigned char temp;//定义数组自加变量
     temp=0; 
     while(1)
     {
     //方法四,利用数组灵活操作
     P1=LED[temp++];
     if(temp>=8)
     {
     temp=0;
     }
     i=65535;		//初始化延时程序变量值 
     while(i--);//while延时程序
     }
    }

    这是我第一次学习总结后通过以博客的形式将学习的内容呈现出来,可能写的不够完整,后期我将通过学习不断的完善自我,将更好的博客内容呈现给大家


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值