下面是电路图和程序:
目前程序:按依次按下SW1-SW2-SW3,D1-D2-D3 依次常亮,最后D6亮,顺序错 D5亮。
我想在此程序上增加2个功能:
1. K1 为低电平时, D4 常亮, 此时 K1 为低电平时(如K1为高电平,程序不工作),此程序才能工作。
2. K1为低电平变为高电平时,D4 灭。程序恢复为初始状态。
帮忙的朋友帮写一下,谢谢
#include <reg52.h> //包含单片机寄存器的头文件
#define uint unsigned int
#define uchar unsigned char
sbit D1=P1^0;
sbit D2=P1^1;
sbit D3=P1^2;
sbit D4=P1^3;
sbit D5=P1^5;
sbit D6=P1^7;
sbit SW1=P3^4;
sbit SW2=P3^5;
sbit SW3=P3^6;
sbit SW4=P3^7;
sbit K1=P3^3;
//--------------------------------------------
void delay(int x) //函数功能:延时一段时间
{
int i;
while(x--)for(i=115;i>0;i--);
}
//--------------------------------------------
void main()
{
D1=D2=D3=D5=D6=1; //关闭
while(1)
{
//------------------------------------------------------------------------
D1=D2=D3=1; //关闭
while(1)
{
while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键
delay(10); //延时
if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环
}
if (SW1==0)
{
D1=0;while(SW1==0); //D1亮、等待释放
}
else
{
D5=0;while((SW2==0)||(SW3==0)||(SW4==0)); //D5亮、等待释放
}
//------------------------------------------------------------------------
D1=D2=D3=1; //关闭
while(1)
{
while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键
delay(10);
if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环 //加上一个延时
}
if (SW2 == 0)
{
D2=0;while(SW2==0); //D2亮、等待释放
}
else
{
D5=0;while((SW1==0)||(SW3==0)||(SW4==0)); //D5亮、等待释放
}
//------------------------------------------------------------------------
D1=D2=D3=1; //关闭
while(1)
{
while((SW1==1)&&(SW2==1)&&(SW3==1)&&(SW4==1)); //等待按键
delay(10);
if((SW1==0)||(SW2==0)||(SW3==0)||(SW4==0))break; //有任意一个按键,就跳出循环 //加上一个延时
}
if (SW3==0)
{
D3=0;while(SW4==0);D6=0; //D3亮、等待释放、D6亮
}
else
{D5 =0;while((SW1==0)||(SW2==0)||(SW3==0));} //D5亮、等待释放
//------------------------------------------------------------------------
}
}
是去年你给编的,用着可好了。谢谢