JinsnHS 2021-11-13 17:40 采纳率: 58.3%
浏览 33
已结题

单片机编程中怎么优化下面的c代码呢?

最近在学习单片机,而c语言比java难亿点点,所以想问问怎么实现类似Led后跟随循环自动与数字结合,比如while中写一个for'循环,y=1开始循环,里面就自动赋值一个Led1,y=2,则变成Led2,这样就可以不用重复写相同的代码了。字符串拼接我也做过,不知是不是方式不对。
附上图和代码

  1. 图:

    img

  2. 代码如下:

#include<reg51.h>

sbit Led1 = P2^0;
sbit Led2 = P2^1;
sbit Led3 = P2^4;
sbit Led4 = P2^5;

int w,x,y;       

dalay(int a);

int main(){
     while(1){
       
         Led1 = 0;
         dalay(10);
         Led1 = 1;
         dalay(10);

         Led2 = 0;
         dalay(10);
         Led2 = 1;
         dalay(10);

         Led3 = 0;
         dalay(10);
         Led3 = 1;
         dalay(10);

         Led4 = 0;
         dalay(10);
         Led4 = 1;
         dalay(10);
    }
}

int dalay(int a){
     for(w = 1;w<=a;w++){
     for(x = 0;x<=1000;x++){}
    }
}

求优化,这个问题困扰我很久了,蟹蟹!

  • 写回答

1条回答 默认 最新

  • 老皮芽子 2021-11-13 19:15
    关注
    
    #include<reg51.h>
    sbit Led1 = P2^0;
    sbit Led2 = P2^1;
    sbit Led3 = P2^4;
    sbit Led4 = P2^5;
    void dalay(int a);
    void set_led(int x,bit var);
    int main(){
       int x=0;
       bit c=0;
         while(1){
             set_led(x/2,c);
             x=x+1;
             c=c+1;
             dalay(10);
        }
    }
    void dalay(int a){
         int w,x;
         for(w = 1;w<=a;w++){
         for(x = 0;x<=1000;x++){}
        }
    }
    void set_led(int x,bit var)
    {
        switch(x)
        {
            case 0:
                Led1 = val;
                break;
            case 1:
                Led2 = val;
                break;
            case 2:
                Led3 = val;
                break;
            case 3:
                Led4 = val;
                break;
            default :
                break;
           }
    }
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 11月22日
  • 已采纳回答 11月14日
  • 修改了问题 11月13日
  • 修改了问题 11月13日
  • 展开全部

悬赏问题

  • ¥15 python的qt5界面
  • ¥15 无线电能传输系统MATLAB仿真问题
  • ¥50 如何用脚本实现输入法的热键设置
  • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
  • ¥30 深度学习,前后端连接
  • ¥15 孟德尔随机化结果不一致
  • ¥15 apm2.8飞控罗盘bad health,加速度计校准失败
  • ¥15 求解O-S方程的特征值问题给出边界层布拉休斯平行流的中性曲线
  • ¥15 谁有desed数据集呀
  • ¥20 手写数字识别运行c仿真时,程序报错错误代码sim211-100