单片机C语言程序设计

单片机C语言程序设计大神,帮我看看下面的c语言程序设计出的问题在哪,设计的具有按键加一功能的,但老出错误。
四个按键分别控制4种流水灯,一:左移 二:右移 三:从中间向两边移动 四:从两边向中间移动
四个程序 我都有怎么加到一起
左移的:
#include<reg52.h>
#include<intrins.h>

#define uint unsigned int
#define uchar unsigned char

void delayms(uint);
uchar aa;

void main()
{
aa=0xfe;
while(1)
{
P1=aa;
delayms(500);
aa=_cror_(aa,1);
}
}

void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);

}

右移的:
#include<reg52.h>
#include<intrins.h>

#define uint unsigned int
#define uchar unsigned char

void delayms(uint);
uchar aa;

void main()
{
aa=0xfe;
while(1)
{
P1=aa;
delayms(500);
aa=_crol_(aa,1);
}
}

void delayms(uint xms)
{
int i,j;
for(i=xms;i>0;i--)
for(j=110;j>0;j--);
}

中间:
#include <reg51.h>
sbit M=P1^0;void delayms(unsigned char ms)
{
unsigned int i;
while(ms--)
{
for (i=0 ;i<100;i++);
}
}
main ()
{ unsigned char LED;
LED =0xff;
P1=LED;
while(1)
{ LED=0xe7;
P1=LED;
delayms(1000);

LED=0xdb;
P1=LED;
delayms(1000);

LED=0xbd;
P1=LED;
delayms(1000);

LED=0x7e;
P1=LED;
delayms(1000); 

}
}
两边:
#include <reg51.h>
sbit M=P1^0;void delayms(unsigned char ms)
{
unsigned int i;
while(ms--)
{
for (i=0 ;i<100;i++);
}
}
main ()
{ unsigned char LED;
LED =0xff;
P1=LED;
while(1)
{ LED=/*0xe7;*/0x7e;
P1=LED;
delayms(1000);

LED=/*0xdb;*/0xbd;
P1=LED;
delayms(1000);

LED=/*0xbd;*/0xdb;
P1=LED;
delayms(1000);

LED=/*0x7e;*/0xe7;
P1=LED;
delayms(1000); 

}
}

按你的程序的结构,不做大的变动,又能理解的方法:
四个程序合并成一个,当然就只能有一个主程序了,一个while(1)了,凡是while(1)以上的程序只保留一个就行了。四个程序的while(1)以下的都合并写在一个while(1)下面,分为四段。
有四个按键,判断按键被按下的程序会写吧?
那判断每个按键的if 语句的下面分别放那上面说的四段程序就行了。
温馨提示:内容为网友见解,仅供参考
第1个回答  2017-12-28
#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;
}
}
}

"如何使用PIC单片机C语言编译器进行程序开发与调试?"
开始学习PIC单片机C程序设计实践,首先了解一下基础:第1章:C语言简介 1.1 程序与计算机架构:计算机通过执行指令来完成任务,程序是指令的集合。1.2 数字系统:理解二进制和十六进制,为C语言操作提供基础。1.3 C语言介绍:C语言起源于汇编语言,具有高效、灵活等特点。第2章 PIC单片机基础:PIC概述 2...

AVR单片机C语言高级程序设计内容简介
本文以实践为导向,精心设计了一系列生动易懂的C语言程序示例,引领读者逐步深入理解AVR单片机的高级编程技术。首先,我们会深入讲解ICCAVR中C语言的基础知识,包括语法、数据类型和控制结构等,确保读者建立起坚实的理论基础。接着,我们将详述如何运用ICCAVR6.31AC编译器,从安装到使用,一步步指导读者掌握...

零基础学单片机C语言程序设计第2版目录
零基础学习单片机C51程序设计,从基础知识开始,首先了解单片机开发概述,包括单片机的定义、组成部分、引脚功能和广泛应用领域。接着,深入讲解开发流程,涉及系统分析、选型、程序设计、仿真测试和程序下载等步骤。第二章聚焦于构建C51集成开发环境,介绍51系列单片机的硬件系统、Keil m Vision3集成开发环境的...

AVR单片机GCC程序设计内容简介
接着,大量的实例程序展示了如何利用C语言高效地利用AVR单片机的内置功能模块。这些实例主要围绕ATmega8单片机展开,每个程序都经过实际硬件的严格测试,确保其功能的正确性和可靠性。这些精心设计的示例不仅有助于读者掌握C语言编程,而且对于理解和编程其他AVR系列芯片具有很高的实用价值。无论是对于初学者还是...

零基础学单片机C语言程序设计内容简介
首先,本书介绍了51系列单片机的基本结构以及单片机的开发概述。接着,讲解了单片机程序设计的C51语言。然后,结合单片机的硬件资源,讲解了如何应用C51语言进行编程操作。最后,讲解了在各个领域中常用到的一些典型案例,并供读者在学习和工作中参考,同时对所学知识融会贯通。本书适合广大单片机程序开发人员...

AT89S51单片机c语言程序在某引脚输出高电平的编程方法
在完成设置后,程序将进入一个死循环`While( 1 );`。这个循环类似于汇编语言中的`LOOP: goto LOOP;`指令,使得程序在执行一次输出高电平操作后,持续不断地循环下去。这种设计使得引脚持续保持高电平状态,直到外部中断或程序被重新初始化为止。需要注意的是,对于P0的每个引脚输出高电平时,由于其内部...

编写单片机程序用什么语言
虽然C51语言是一种专门为单片机设计的变种C语言,它在语法和功能上与标准C语言有所区别,但仍然保持了C语言的基本特性,如结构化编程、变量定义和控制流等。通过使用C51语言,开发者可以更加便捷地编写单片机程序,同时也能充分利用C语言的强大功能。此外,C51语言还提供了一些特殊的库函数和寄存器访问机制,...

单片机C语言程序设计实训100例内容简介
本书专为8051单片机C语言程序设计实践而编撰,以Keil μVision编程平台和Proteus硬件仿真平台为依托,精心构建了超过100个详实的案例。在基础设计部分,案例涵盖了基础的单片机操作,如端口编程、定时\/计数器的运用,以及中断管理和串口通信技术。这些内容为读者提供了深入理解8051单片机基本功能的实践平台。硬件...

零基础学单片机C语言程序设计图书信息
《零基础学单片机C语言程序设计》这本书由赵建领与薛园园共同撰写,于2009年4月1日由机械工业出版社出版,ISBN编号为9787111264514。开本为16开,定价为65.00元。本书专为初学者设计,旨在引导读者从零基础开始学习单片机C语言程序设计。作者通过丰富的实例和详细的解释,使得复杂的技术知识变得易于理解,...

单片机C语言程序设计实训100例--基于AVR+PROTEUS仿真内容简介
本书以AVR单片机C语言程序设计为核心,旨在通过AVRStudio+WinAVR(GCC)环境和Proteus硬件仿真平台,提供100个精心策划的实践案例。每一个案例都包含了详尽的C语言源程序,难度适中,旨在提升学习者的实际操作能力。基础设计部分涵盖了AVR单片机的基础内容,包括端口编程、定时\/计数器的运用、中断程序设计、A\/D...

相似回答