能在138控制部分简化下程序吗?

2019-07-14 21:44发布

刚学习STM32,想用一片164芯片和一片138控制64个LED,实现跑马灯效果,以下是自己写的程序,请问,能在138控制部分简化下程序吗?IO是用GPIOB控制的。


//164部分
for(i=0;i<8;i++)
      {
         GPIO_ResetBits(GPIOB,GPIO_Pin_14);//CLK==0

      if((data&&0x80)==0x00)
     {
       GPIO_ResetBits(GPIOB,GPIO_Pin_13);
     }
     else
     {
      GPIO_SetBits(GPIOB,GPIO_Pin_13);
      
          }
         
            GPIO_SetBits(GPIOB,GPIO_Pin_14);//CLK==1
      
//138部分      
            GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12);//A=0,B=0,C=0
       delay_ms(100);
       GPIO_SetBits(GPIOB,GPIO_Pin_10);//A=1
         GPIO_ResetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);//B=0,C=0
       delay_ms(100);
       GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_12);//A=0,C=0
         GPIO_SetBits(GPIOB,GPIO_Pin_11);//B=1
         delay_ms(100);
       GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);//A=1,B=1
         GPIO_ResetBits(GPIOB,GPIO_Pin_12);//C=0
       delay_ms(100);
       GPIO_ResetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11);//A=0,B=0
         GPIO_SetBits(GPIOB,GPIO_Pin_12);//C=1
      delay_ms(100);
      GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_12);//A=1,C=1
         GPIO_ResetBits(GPIOB,GPIO_Pin_11);//B=0         
      delay_ms(100);
      GPIO_ResetBits(GPIOB,GPIO_Pin_10);//A=0
         GPIO_SetBits(GPIOB,GPIO_Pin_11|GPIO_Pin_12);//B=1,C=1
      delay_ms(100);
      GPIO_SetBits(GPIOB,GPIO_Pin_10|GPIO_Pin_11|GPIO_Pin_12);//A=1,B=1,C=1
      delay_ms(100);

       data=data<<1;
      //delay_ms(2000);
      
        }
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。