我是个单片机初学者,现在;利用51单片机做个多路自锁开关,参照书籍写了个C程序,对于P1.0那一路没问题,但是要控制六路的话不知道如何衔接代码,求会的朋友帮忙指点一下。
程序如下:端口定义已经写上了,K1~K6是六路微动开关输入,D1~D6是六路的输出。只写出来了一路,对于K1可以正常工作,但是下面不知如何衔接代码了。
#include <reg51.>"
sbit K1=P1^0;
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit D1=P0^0;
sbit D2=P0^1;
sbit D3=P0^2;
sbit D4=P0^3;
sbit D5=P0^4;
sbit D6=P0^5;
void DelayMS(n)
{
unsigned char i, j;
i = 5*n;
j = 218;
do
{
while (--j);
} while (--i);
}
void main()
{ P0=0xff;
P1=0xff;
while(1)
{
if(K1==1)
{
DelayMS(1);
if(K1==0)
{
D1=!D1;
}
}
}
}
你的意思是K1按下,D1输出低电平,再按一次K1,D1输出高电平?
这……这里的按键检测就不需要使用延时了,使用while不用怕会阻塞后面的程序执行。事实在公司写程序,在检测按键时我从来不用延时,当然也不是使用这种while等待按键松开的方式。有兴趣可以一起研究一下,呵呵
#include <reg51.h>