#include<reg52h>
sbit key1=P2^4;
sbit D1=P1^0;
void delay(unsigned char y)
{
unsigned char j,k;
for(j=y;j>0;j--)
for(k=0;k<57;k--);
}
void keyo()
{
if(key1==0)
{
delay(5);
if(key1==0)
{
D1=0;
}
}
}
void keyc()
{
if(key1==0)
{
delay(5);
if(key1==0)
{
D1=1;
}
}
}
void main()
{
while(1)
{
keyo();
delay(10);
key1=1;
delay(10);
keyc();
delay(10);
}
}
最简单的程序了,由于延时程序的问题,不保证你下载到板子上后成功率100%一次性控制成功,自己摸索着改一下延时的时常,效果会好很多。 程序已经测试过,没有问题。
确实是初学呀,P0,P1,P2都有8个IO口,所以暂且给你都安排在第一个口吧。
#include<reg51h>
#define uchar unsigned char
sbit key=P0^0;
sbit pluse1=P1^0;
sbit pluse2=P2^0;
void delay(int ms)
{
uchar i ;
while(ms--)for(i=0;i<120;i++);
}
main()
{
uchar num;
while(1)
{
if(key==0)
{
delay(10);
if(key==0)
{
while(key==0);
num++;
num%=2;
if(num==1)
{
pluse1=0;
delay(500);
pluse1=1;
}
else
{
pluse2=0;
delay(500);
pluse2=1;
}
}
}
}
}
Private Sub Command1_Click()
If Label1Left <> 0 Then
Label1Left = Label1Left - 500
End If
End Sub
Private Sub Command2_Click()
If Label1Left + Label1Width < MeWidth - 200 Then
Label1Left = Label1Left + 500
End If
End Sub
Private Sub Form_Load()
Label1Caption = ""
Label1BackStyle = 0
Label1BorderStyle = 1
Label1Appearance = 0
Label1Move 0, 0, 500, 500
MeMove 0, 0, 4115, 4000
End Sub
char t;
t=getchar();
if((t>='a'&&t<='z')||(t>='A'&&t<='Z')) printf("字母键");
else if(t>='0'&&t<='9') printf("数字键");
else printf("其他键");
//标点符号的ASCII码有点乱,你真的要的话就弄个table慢慢判断
key1 equ p10
key2 equ p11
keyscan:
jb key1,key01 ;键1如果没按下转
jnb key1,$ ;键1如果按下,等待抬起
ljmp fun1 ;转fun1
key01:
jb key2,keyrtn ;键2如果没按下转
jnb key2,$ ;键2如果按下,等待抬起
ljmp fun2 ;转fun2
keyrtn:
ret
fun1:
fun2:
以上就是关于最简单c5l独立按键控制led灯亮灭程序全部的内容,包括:最简单c5l独立按键控制led灯亮灭程序、求一个简单的51单片机程序 (一个按键控制两个口输出)、请大神发我一个超简单的VB程序,只有两个按键,一个是向左移动,一个向右,每次移动距离较短等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)