微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 流水灯 c 程序

流水灯 c 程序

时间:10-02 整理:3721RD 点击:
不管怎么弄  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--);
}

这是51单片机的程序吧!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top