在单片机的P0口接有8个发光二极管作为指示灯,P1.0~P1.3接有4个按键开关,当不同的脚上的按键按下时

,实现如下功能:按下P1.0脚的按键—8只灯全亮然后全灭,再全亮然后全灭,交替闪亮;按下P1.1脚的按键—按此键则停止点亮8只灯,所有灯全灭;按下P1.2脚的按键—LED指示灯由上向下流动点亮;按下P1.3脚的按键—LED指示灯由下向上流动点亮。
374022762@qq.com
急用

第1个回答  推荐于2017-09-27
//文件名shiyan1.c
#include "reg51.h"
#define uchar unsigned char
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;

void delay02s(void)
{
unsigned char i,j,k;
for(i=2;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}
void delay05s(void)
{
unsigned char i,j,k;
for(i=5;i>0;i--)
for(j=200;j>0;j--)
for(k=248;k>0;k--);
}
void k1yes()
{
P2=0x00;
delay05s();
P2=0xff;
delay05s();
}
void k2yes()
{
P2=0xff;
}
void k3yes()
{
unsigned char i,count;
count=0x01;
for(i=0;i<8;i++)
{
P2=~count;
delay02s();
count=count<<1;
}
}

void k4yes()
{
count=0x80;
for(i=0;i<8;i++)
{
count=count>>1;
P2=~count;
delay02s();
}
}
void main(void)
{
while(1)
{
if(k1==0) k1yes();
if(k2==0) k2yes();
if(k3==0) k3yes();
if(k4==0) k4yes();
}
}本回答被提问者和网友采纳
相似回答