我做了個程序,你看看。
#include<reg52.h>
#include<intrins.h>
#define LED P2
sbit k1=P3^1;
sbit k2=P3^0;
void Delay10ms(unsigned char c)
{
unsigned char a,b;
for(;c>0;c--)
for(b=38;b>0;b--)
for(a=130;a>0;a--);
}
void main()
{
unsigned char i,a=50;
LED=0xfe;
Delay10ms(a);
while(1)
{
LED=_crol_(LED,1);
Delay10ms(a);
if(k1==0)
{
Delay10ms(1);
if(k1==0)
{
a=a+10;
while((i<50)&&(k1==0))
{
Delay10ms(1);
i++;
}
i=0;
}
}
if(k2==0)
{
Delay10ms(1);
if(k2==0)
{
a=a-10;
while((i<50)&&(k2==0))
{
Delay10ms(1);
i++;
}
i=0;
}
}
}
}
操作時,按鍵的時間稍長一點,不然單片機掃描不到按鍵,它的運行速度太快。
這類操作最好還是用外部中斷,用掃描法總是不怎么舒服。 |