不管怎么弄 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--);
}
一周热门 更多>