例如shaduo36的问题。
while(1)
{
keyscan() //永久的运行,除非断电
}
void keyscan()
{
if(S1==0)
{
delayms(10) //延时10毫秒
if(S1==0) //2个if是用来消除键盘震荡的影响。S1=0时就是键盘按下(S1一端接地)
led=0 //给0就是亮,LED一端为VCC,一端接P0^0口。
while(S1==0)//检查S1是否放下。如果一直按着,S1一直为0,则一直在这循环
led=1 //既然上面的while过了,S1当然就没被按住,所以让灯灭
}
首先搞清LED管是高电平导通还是低电平导通。如果是低电平导通,P2赋0x00时,发光管全亮,0xff时,全灭。
具体程序:
#define uint unsigned int
#define uchar unsigned char
void delay(uint time_out)
{
uint i,j
for(i=0i<time_outi++)
{
for(j=0j<110j++)
{}
}
}
void main(){
while(1)
{
P2=0xfe//第1个管亮
delay(500)
P2=0xfd//第2个管亮
delay(500)
P2=0xfb//依次类推
delay(500)
P2=0xf7
delay(500)
P2=0xef
delay(500)
P2=0xdf
delay(500)
P2=0xbf
delay(500)
P2=0x7f
delay(500)
}
}
程序大致如此,delay函数负责延迟500ms.有问题自己再调试调试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)