我是初學的,有語法錯誤也請見笑
我這個程序是想用按鍵控制幾個燈的狀態,用數碼管顯示出不同的模式,現在數碼管顯示模式很正常,但全局變量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();}
}
|