|
我是初學(xué)的,有語(yǔ)法錯(cuò)誤也請(qǐng)見(jiàn)笑
我這個(gè)程序是想用按鍵控制幾個(gè)燈的狀態(tài),用數(shù)碼管顯示出不同的模式,現(xiàn)在數(shù)碼管顯示模式很正常,但全局變量tep控制不了LED燈的切換,請(qǐng)大師指點(diǎn)一下, ,本意是想控制一個(gè)無(wú)刷電機(jī),PWM還沒(méi)做,所以多了一個(gè)延時(shí)函數(shù)沒(méi)用
#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; //數(shù)據(jù)管的位
sbit LE=P1^0; //鎖存器的狀態(tài)開(kāi)關(guān)
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循環(huán)顯示,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() //主函數(shù)
{
P0=0x00;
LE=1;
D0=0;
while(1){
kanplay();
sandeng();}
}
|
|