单片机C语言程序设计
发布网友
发布时间:2022-04-23 19:50
我来回答
共2个回答
热心网友
时间:2023-09-18 17:40
按你的程序的结构,不做大的变动,又能理解的方法:
四个程序合并成一个,当然就只能有一个主程序了,一个while(1)了,凡是while(1)以上的程序只保留一个就行了。四个程序的while(1)以下的都合并写在一个while(1)下面,分为四段。
有四个按键,判断按键被按下的程序会写吧?
那判断每个按键的if 语句的下面分别放那上面说的四段程序就行了。
热心网友
时间:2023-09-18 17:41
#include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar aa;
uchar bb;
sbit BY1=P3^4; //根据实际自己定义按键的IO口
sbit BY2=P3^3;
sbit BY3=P3^2;
sbit BY4=P3^1;
void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}
void main()
{
aa=0xfe;
bb=1;
while(1)
{
//判断按键
if(BY1==0)
{
while(!BY1);//按键防抖
bb=1;
}
if(BY2==0)
{
while(!BY2);
bb=2;
}
if(BY3==0)
{
while(!BY4);
bb=3;
}
if(BY4==0)
{
while(!BY4);
bb=4;
}
//4种情况
switch(bb)
{
case 1: aa=0xfe;
P1=aa;
aa=_cror_(aa,1);
delayms(500);
break;
case 2: aa=0xfe;
P1=aa;
aa=_crol_(aa,1);
delayms(500);
break;
case 3: aa=0xe7;
P1=aa;
delayms(1000);
aa=0xdb;
P1=aa;
delayms(1000);
aa=0xbd;
P1=aa;
delayms(1000);
aa=0x7e;
P1=aa;
delayms(1000);
break;
case 4: aa=0x7e;
P1=aa;
delayms(1000);
aa=0xbd;
P1=aa;
delayms(1000);
aa=0xdb;
P1=aa;
delayms(1000);
aa=0xe7;
P1=aa;
delayms(1000);
break;
}
}
}