单片机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;
}
}
}

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com