zoukankan      html  css  js  c++  java
  • 流水灯

    #include<reg52.h>
    sbit  led1=P1^0;  //将P1口的第一位赋值给sbit 型的变量led1
    void main(){
        while(1){   //使表达式始终为真
            led1=0;  //将P1口的第一位置零 ,即电路连通,点亮第一个发光二级管
                    }
    }
    流水灯就是使二极管一会亮,一会暗从而产生闪烁的效果
    二极管高电平时灭,低电平时亮,程序如下
    #include<reg52.h>
    sbit  led1=P1^0;  //将P1口的第一位赋值给sbit 型的变量led1
    void main(){
    unsigned int a;
        a=5000;             //数据随便定义
        while(1){         //使表达式始终为真
            led1=0;       //将P1口的第一位置零 ,即电路连通,点亮第一个发光二级管
            while(a--);   //做延迟使用
            a=5000;
            led1=1;       //将P1口的第一位置1 ,即电路断开,熄灭第一个发光二级管
            while(a--);   //做延迟
            a=5000;
                    }
    }
    第一个二极管就闪烁了
    为了方便调用,我们可以写一个延时的函数
    如下:
    void delay(){
        unsigned int  a;
        a=10000;
            while(a--);    
    }
    或者
    void   delay(){
        unsigned  int  x,y;
        for(x=100;x>0;x--)
            for(y=100;y>0;y--)
            {};
    }
    我们也可以给延时函数加上参数,由我们自己来控制亮灭的时间
    void   delay(unsigned  int  x, unsigned  int  y){
        for(x=100;x>0;x--)
            for(y=100;y>0;y--)
            {};
    }
    第一个的亮灭我们已经搞定,接下来的也很easy了,只要调用函数,多写几个,流水灯就出来了
    我的流水灯如下
    #include<reg52.h>
    #define uint unsigned int             //宏定义
    #define uchar unsigned char       //宏定义
    sbit led1=P1^0;
    sbit led2=P1^1;
    sbit led3=P1^2;
    sbit led4=P1^3;
    sbit led5=P1^4;
    sbit led6=P1^5;
    sbit led7=P1^6;
    sbit led8=P1^7;
    void delay();
    void main (){
            
          while(1) {
              led1=0;
              delay();
              led1=1;
              led2=0;
              delay();
              led2=1;
              led3=0;
              delay();
              led3=1;
              led4=0;
              delay();
              led4=1;
              led5=0;
              delay();
              led5=1;
              led6=0;
              delay();
              led6=1;
              led7=0;
              delay();
              led7=1;
              led8=0;
              delay();
              led8=1;

                  }
        
    }
    void  delay(){
        uint x,y;
        for(x=100;x>0;x--)
            for(y=100;y>0;y--)    
                {};    

    }
    看上去很长,其实很简单,都是一些重复性的工作
    当然对于做流水灯,我们也可以调用c 库里的函数_crol_()
    语法:
    #include <intrins.h>

    unsigned char _crol_ (
      unsigned char c,        /* character to rotate left */
      unsigned char b);       /* bit positions to rotate */


    _crol_(char  a,2)
    即将一个字符型变量循环左移2位
    char  a,b;
    a=cxA5;   //10100101
    b=_crol_(a,3);  //左移三位 ,多出的三位补到右边
    b=0X2D ;   //00101101
    由此函数可得流水灯如下

    #include<reg52.h>
    #include<intrins.h>
    #define uint unsigned int             //宏定义
    #define uchar unsigned char       //宏定义
    void delay();
    void main(){
        unsigned char a;
        a=0xFE;
        P1=a;
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
        P1=_crol_(P1,1);
        delay();
    }
    void  delay(){
        uint x,y;
        for(x=100;x>0;x--)
            for(y=100;y>0;y--)    
                {};    

    }
    流水灯完成
    带参数的延时函数
    void delay(unsigned int time){
            unsigned int   j,i;
            for(j=time;j>0;j--)
                for(i=115;i>0;i--);
            }
    当time为1时,延时1毫秒。当time为500时延时500毫秒。当time为1000时,延时1秒

  • 相关阅读:
    veil-evasion免杀处理
    对程序"加料"
    堆栈溢出
    ICMP隧道 ptunnle
    socat流量操控
    DNS隧道 iodns
    dns隧道 dns2tcpd
    ssh X协议转发
    ssh动态端口转发
    ssh远程端口转发
  • 原文地址:https://www.cnblogs.com/tuteng/p/2943312.html
Copyright © 2011-2022 走看看