关于用C51设计流水灯的问题

我想用P3.2控制LED灯左循环,P3.3控制LED灯右循环。把它们分别封装在两个子函数中,在keil编译时有提示说symtax error near ‘void’这是怎么回事?
程序如下
#include<stdio.h>
#include<reg51.h>
#include<intrins.h>
void mDelay(unsigned int DelayTime)
{ unsigned int j=0;
for(;DelayTime>0;DelayTime--)
{for(j=0;j<125;j++) {;} }
}
void trip2(unsigned char OutData1)
{ while(1)
{ P3|=0x3c;
while((P3|0xf7)!=0xff)
{ P1=OutData1;
OutData1=_cror_(OutData1,1);
mDelay(1000);
}
}
}
void trip1(unsigned char OutData)
{ while(1)
{ P3|=0x3c;
while((P3|0xfb)!=0xff)
{ P1=OutData;
OutData=_crol_(OutData,1);
mDelay(1000);
}
}
void main()
{
if(P3=0xfb) trip1(unsigned char a);
else if(P3=0xf7) trip2(unsigned char b);
while(1);
}

第1个回答  2008-04-07
void trip1(unsigned char OutData)
{ while(1)
{ P3|=0x3c;
while((P3|0xfb)!=0xff)
{ P1=OutData;
OutData=_crol_(OutData,1);
mDelay(1000);
}
}
} //这少了个大刮号 ,不过加了这大刮号后,你提得问题解决了,
又有新问题 了,呵呵,你这程序能在单片机里面跑吗?
void main()

if(P3=0xfb) //你写这句是准备做什么?是赋值给P3吗?还是P3==0xfb ?

trip1(unsigned char a); //中的unsigned char a 你不准备赋值初始值给a吗?

单片机初始话的程序也没写阿

建议好好看看 C语言程序设计教程--谭浩强
和单片机基础方面的书。

上面写的不对的地方欢迎批评指正。C有一年没碰了。

我用keil c51编了一个流水灯程序,编译无误却只有第一和第二个灯亮了...
1 你的定时器没有重装,导致第一次中断和后面的中断时间不一样,第一次时间短,后面的时间一直是以65536个周期中断的.2 你在中断函数里用了 for 循环,for循环是一下子就执行完了的,而不是你想象的每中断一次才执行一次.for(a=0;a<8;a++){ P1=(P1<<1)+1; \/\/---这一句,使得你的第二...

C51 流水灯问题 编程并没有让流水灯永久循环,但是用protues仿真,就永久...
这种情况是程序跑飞,这是各中单片机自身决定的。有的单片机程序内如果没有循环程序,那它会从头执行到最后,然后返回最开始继续执行。一直重复。而有的单片机再执行一次之后,就会停止。有的则是执行完后可能会进入无序运行状态,就只不知道程序跑哪里去了! 所以,在写单片机程序的时候,最好是加上while...

C51单片机流水灯程序问题定义无效
你用sbit定义的8行是小写字母p0~p7,可主程序中却又用了大写的P0~P7,这肯定错呀。C语言是区分大小写字母的。程序中必须用小写字母p0~p7,而不能用大写的P0~P7,因为P0~P3是单片机四个并行口,用户不能再定义了。其实,就一个流水灯的程序,很简单的,用不着写得这么复杂,这么费劲。给你一个典...

C51单片机,P1和P2口做为流水灯,P0口做为数码管输出,按键每按一次要求nu...
有点小问题:led1 = ~led; 这两个灯不变,也许你就要这个效果。程序就是这么编的。按键没有去抖,每次按下不一定是加一。初学不建议仿真,不是最好的学习方法,仿真实际电路是有差异的,这样你会误入歧途(言过了)。反正我是从不仿真。需要帮助加我 ...

c51单片机流水灯程序。求问大神他为什么把16进制数定义成unsign char...
同一个数字,可以用10进制表示、也可以用16进制表示,当然二进制、8进制等都可以,甚至你自己造个12进制都没问题。比如你给一个变量a赋值为0xfe,a=0xfe,这个效果与下面这2种完全一样,看准了,是完全完全完全一样!!对单片机来说没有任何影响:一、 a=254,(十进制的254等于16进制的fe)二...

帮我看一个C51流水灯的程序,看看为什么我总是跑到128步就从头跑了,应该...
char i = 0;上面这行定义错了, 这个是有符号变量, 最大只有127 定义成下面这样就对了 unsigned char i=0; 这个最大数量255

求一c51单片机,8位流水灯程序
下列程序调试成功。使用晶振为12M。\/\/软件延时,使P1口外接的8个发光二极管,以每秒1位的速度,轮流发光。\/\/发光顺序:0123,1234,2345,3456,4567,5670,6701,7012。循环。\/\/--- include<reg52.h> include<intrins.h> unsigned char a;void main(){ unsigned char i, j, k;a = 0x0f...

单片机原理流水灯实验报告
单片机原理流水灯实验报告: 一、实验目的:进一步熟习keil仿真软件、proteus仿真软件的使用。认识并熟习单片机I\/O口和LED灯的电路构造,学会建立简单的流水灯电路。掌握C51中单片机I\/O口的编程方法和使用I\/O口进行输入输出的注意事项。二、实验原理:MCS-51系列单片机有四组8位并行I\/O口,记作P0、P1、P2...

下面流水灯c51语言程序 如何改成分别两个一起亮
你的提问简直是太含糊了,没有办法帮你解决,你想两个LED一起亮,你又没有说清楚从那两个LED一起开始亮,我帮你把程序修改一下LED点亮顺序,是1和8、2和 7、3和6、4和5,然后再4和5、3和6、2和7、1和8这样两个LED等一起亮程序如下:include "reg51.h"\/\/unsigned char smg[11]={0xfe...

keil c51编写流水灯程序出现undefined identifier 求高手帮忙啊_百度知 ...
unsigned char led8[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};unsigned char led81[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};这些移到include的下面 另外 j跟 k要定义

相似回答
大家正在搜