×
单片机 > 单片机程序设计 > 详情

80C51单片机程序(2)

发布时间:2020-08-31 发布时间:
|
//80C51程序——单片机的流水灯显示

//发光二极管的闪烁

-------------------------------------------------------------------

#include    //包含reg52.h头文件

#define uint unsigned int    //宏定义uint的数据类型为unsigned int型
sbit D1=P1^2;     //定义P1^2位
void main()
{

    uint num=50000;    //定义num数据类型,并附初值
    D1=0;     //点亮发光二极管

    while(num--);    //延时

    num=50000;    //定义num数据类型,并附初值
    D1=1;     //点亮发光二极管

    while(num--);    //延时
}

--------------------------------------------------------------------

//发光二极管的闪烁

--------------------------------------------------------------------

#include     //包含reg52.h头文件
#define uint unsigned int     //宏定义uint的数据类型为unsigned int型
#define uchar unsigned char    //宏定义uchar的数据类型为unsigned char型 
sbit D1=P1^0;     //定义P1^0位
void delay(uint);   //声明延时子函数
void main()
{
     while(1)     //进入死循环
     {
          D1=0;    //点亮
          delay(100);    //延时(注:由于软件延时误差比较大,这里不写具体时间,大家可以在keil里调试测出)
          D1=1;    //熄灭
          delay(100);    //延时 
     }
}
void delay(uint z)
{
     uint x;    //在子函数中定义局部变量x
     uchar y;    //在子函数中定义局部变量y
     for(x=z;x>0;x--)
         for(y=20;y>0;y--);     //进入一次嵌套循环

}

-------------------------------------------------------------------

//流水显示

-------------------------------------------------------------------

#include    //包含reg52.h头文件
#include      //包含intrins.h头文件
#define uint unsigned int    //宏定义uint的数据类型为unsigned int型 
#define uchar unsigned char    //宏定义uchar的数据类型为unsigned char型 
uchar temp,num,num1;    //定义temp,num1,num2
void delay(uint);    //声明延时子函数

void main()
{
      temp=0xfe;      //定义临时变量temp
      while(1)    //进入死循环
     
           for(num1=0;num1<3;num1++)    //循环三个来回
             
                  for(num=0;num<8;num++)     //每一趟亮八次
                      {
                           P1=temp;    //点亮第一个灯,即给P1^0低电位
                           delay(100);    //延时
                           temp=_crol_(temp,1);   //用左移函数左移一位
                           P1=0xff;     //关闭灯
                           delay(100);     //延时 
                      }
              }
           for(num1=0;num1<3;num1++)    //循环三个来回
              
                  for(num=0;num<8;num++)     //每一趟亮八次
                      {
                           P1=temp;     //点亮第一个灯,即给P1^0低电位
                           delay(100);    //延时
                           temp=_cror_(temp,1);    //用右移函数右移一位
                           P1=0xff;    //关闭灯
                           delay(100);    //延时 
                       }
              }
           while(1);    //以上程序死循环
    }
}

void delay(uint z)     //延时子函数
{
    uint x,y;
    for(x=z;x>0;x--)
        for(y=110;y>0;y--);    //进入一次嵌套程序
}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
基于arm的指纹识别门禁系统是如何设计的