找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1582|回复: 2
打印 上一主题 下一主题
收起左侧

单片机流水灯问题 c 语言 不管怎么调试 num5 的值都没变 是逻辑与问题吗

[复制链接]
跳转到指定楼层
楼主
ID:103595 发表于 2016-1-17 18:51 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
不管怎么调试  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--);
}




                 
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)
   {
           delayms(10);
         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--);
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:97249 发表于 2016-1-18 08:57 | 只看该作者
if(num5==4);把后面这个分号去掉就好了!!!
回复

使用道具 举报

板凳
ID:102585 发表于 2016-1-18 12:41 | 只看该作者
楼上正解
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表