我是初学的,有语法错误也请见笑
我这个程序是想用按键控制几个灯的状态,用数码管显示出不同的模式,现在数码管显示模式很正常,但全局变量tep控制不了LED灯的切换,请大师指点一下, ,本意是想控制一个无刷电机,PWM还没做,所以多了一个延时函数没用
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code display[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
uchar x,tep,b; //x是键值模式的变量
uchar y;
sbit D0=P2^4; //数据管的位
sbit LE=P1^0; //锁存器的状态开关
sbit K1=P3^6;
sbit K2=P3^7;
uchar j;
void delay()
{
for(j=0;j<2;j++)
{;}
}
void delay1ms(y)
{uchar a;
while(y--)
{for(a=0;a<115;a++)
{;}
}
}
void kanplay() //按键0~9循环显示,K1— K2+
{
while(1)
{
if(K2==0)
{delay1ms(15);
{if(K2==0)
{tep=++x;
P0=display[tep]; if(x==10){x=0;
tep=x;P0=display[tep];}
while(~K2);}}}
if(K1==0)
{delay1ms(15);
{if(K1==0)
{tep=--x;
P0=display[tep]; if(x==-1){x=9;
tep=x;P0=display[tep];}
while(~K1); } }} }}
void sandeng() //用键值传回的变量控制P1口的灯
{ b=tep;
if(b==0){P1=0xff;}
if(b==1){P1=0xfe;}
if(b==2){P1=0xfd;}
if(b==3){P1=0xfb;}
if(b==4){P1=0x7f;}
if(b==5){P1=0xbf;}
if(b==6){P1=0xdf;}
if(b==7){P1=0xef;}
if(b==8){P1=0xff;}
}
void main() //主函数
{
P0=0x00;
LE=1;
D0=0;
while(1){
kanplay();
sandeng();}
}
|