流水灯 c 程序

2019-07-15 17:38发布

不管怎么弄  num5的值就是不变  程序不按照 规定的输出


希望能帮我解决  


#include <reg52.h>                    //52系列单片机头文件
#include <intrins.h>
#define uint unsigned int                 //宏定义
#define uchar unsigned char
sbit IO=P0^0;
sbit IO2=P0^1;                                        //模式选择
sbit IO3=P0^2;                                        //定时加
sbit IO4=P0^3;                                        //定时减
void delayms(uint);                                //声明子函数

uchar aa,num,num3,num2,num4,flag,num5; //全局变量
uchar table[9]={0x00,0x01,0x03,0x07,0x0f,0x1f,0x3f,0x7f,0xff};          //显视数组  
void keyscan()         //键盘检测
{
if(IO==0)
  {
  num++;
  num3=num%9;

  while(IO);
  aa=table[num3];                          //P1口的值

  if(num>9)
   num=0;
  }



                 
if((IO3==0)||(IO4==0))           //延时
{if(IO3==0)
  {        delayms(30);
   if((IO3==0)&&(num2<6))
   num2++;

  }
  if((IO4==0)&&(num>2-1))
  {        delayms(30);
   if((IO4==0)&&(num>2-1))
   num2--;

  }

  }
  num4=300+num2*30;
}


void main()                                      //主函数
{
       
        num=0;
        num2=0;
        P1=0x00;
        while(1)                                          //大循环
        {  keyscan();
                 
         
           if(num5==0){          P1=aa;
                                        delayms(num4);             //延时500毫秒
                                        aa=_crol_(aa,1);        //将aa循环左移1位后再赋给aa
                               
                           }
           if(num5==1){        P1=aa;
                                        delayms(num4);             //延时500毫秒
                                        aa=_cror_(aa,1);        //将aa循环右移移1位后再赋给aa
                               
                                }
           if(num5==2){        P1=aa;
                                         delayms(num4);                          //闪烁
                                          P1=0x00;
                                       
                           }
           if(num5==3){        P1=aa;
                                          delayms(num4);
                                     P1=0x00;
                                       
                                }
           if(IO2==0)
   {
          
         if(IO2==0)
          {
           num5++;
           while(!IO2);
           if(num5==4);
           num5=0;
          }

   }
           }  
                  
       
               
       
               
               
}
void delayms(uint xms)                               
{
        uint i,j;
        for(i=xms;i>0;i--)                      //i=xms即延时约xms毫秒
                for(j=110;j>0;j--);
}


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。