51函数参数?51单片机多参数函数怎么写的啊

seosqwseo2个月前 (09-25)测评日记32

一、51单片机C语言

朋友,很简单啊,看我的:

第一个错误:在unsigned char array[7]={0xFE,0xFD,0xFA,0xF7,0xEF,0xEF,0xDF,0xAF,0x7F}

中,定义了7个元素,但在大括号中有9个元素,

第二个错误:就上面那个unsigned char array[7]={0xFE,0xFD,0xFA,0xF7,0xEF,0xEF,0xDF,0xAF,0x7F},后面有个分号,即为:unsigned char array[7]={0xFE,0xFD,0xFA,0xF7,0xEF,0xEF,0xDF,0xAF,0x7F};

第三个错误:延时函数定义错误:缺少形参名,应该定义为:

void msec(unsigned int Dlay);

后面定义为: void msec(unsigned int Delay){

unsigned char j;

while((x--)!=0){

for(j=0,j<=125;j++)

{;}

}

}

Delay你也可换其它的名字,

后结果为:

#include<reg51.h>

void msec(unsigned int Delay);

void main()

{

unsigned char array[8]={0xFE,0xFD,0xFA,0xF7,0xEF,0xEF,0xDF,0xAF};

unsigned int i;

for(i=0;i<=7;i++)

{

P1=array[i];

msec(100);

}

}

void msec(unsigned int Delay)

{

unsigned int j;

while((Delay--)!=0)

for(j=0;j<=125;j++)

{;};

}

朋友,你还不把分给我,我就服了你了:void msec(unsigned int x)

{

unsigned char j;

while((x--)!=0)

for(j=0;j<=125;j++)

{;};

}

for(j=0;j<=125;j++)

j=0;后面有个分号

二、C51函数是如何调用

在你原来的函数基础上,加上三个参数,分别是:

1要*作的PORT口

2要进行的*作

3要*作的引脚

当然,如果你的目标很明确,可以把以上三个参数裁剪掉一些,利于系统的效率提高.

下面是我写的示例程序,你可能参考一下:

#include<reg52.h>

#define Pin0 0x01

#define Pin1 0x02

#define Pin2 0x04

#define Pin3 0x08

#define Pin4 0x10

#define Pin5 0x20

#define Pin6 0x40

#define Pin7 0x80

#define OPT_CPL 0x00//----取反某位*作

#define OPT_CLR 0x01//----清零某位*作

#define OPT_SET 0x02//----置一某位*作

void Operate(

/*这里写你原来的参数,*/

unsigned char Port_Num,

unsigned char Opr_Style,

unsigned char Pins

)

{

//----如果在单片机PORT口范围之内,刚读取当前PORT口的状

//----如果不在范围之内,死循环

//----注意,为了效率起见,这个部分可以根据实际应用进行裁剪

if(Port_Num== 0)

{

Port_Num= P0;

}

else if(Port_Num== 1)

{

Port_Num= P1;

}

else if(Port_Num== 2)

{

Port_Num= P2;

}

else if(Port_Num== 3)

{

Port_Num= P3;

}

else

{

while(1);

}

//----如果是取反相应位,进行异或*作

//----如果清零相应位,则位与*作

//----如果置位相应位,则位或*作

//----如果都不在范围之内,则死循环

//----这段代码也根据实际情况裁剪

if(Opr_Style== OPT_CPL)

{

Port_Num ^= Pins;

}

else if(Opr_Style== OPT_CLR)

{

Port_Num&=~Pins;

}

else if(Opr_Style== OPT_SET)

{

Port_Num|= Pins;

}

else

{

while(1);

}

//----如果在单片机PORT口范围之内,刚读取当前PORT口的状

//----如果不在范围之内,死循环

//----注意,为了效率起见,这个部分可以根据实际应用进行裁剪

if(Port_Num== 0)

{

P0= Port_Num;

}

else if(Port_Num== 1)

{

P1= Port_Num;

}

else if(Port_Num== 2)

{

P2= Port_Num;

}

else if(Port_Num== 3)

{

P3= Port_Num;

}

else

{

while(1);

}

//----以上的内容,可根据实际情况进行裁剪,以实现程序优化

//----添加你的功能的其他代码---------------

}

void main(void)

{

//----使用示例:函数功能的同时,置位P2口的P2.0,P2.5,P2.7

Operate(/*这里写你原来的参数*/2,OPT_SET,(Pin0|Pin5|Pin7));

//----使用示例:函数功能的同时,清零P1口的P1.2,P1.5,P2.6

Operate(/*这里写你原来的参数*/1,OPT_CLR,(Pin2|Pin5|Pin6));

}

三、51单片机多参数函数怎么写的啊

51单片机C程序中子函数是可以有多个形参的,第二个参数y也要声明类型的,应该写成(uint x,uint y)。但是就你的流水灯程序,没必要写那么麻烦,延时函数带一个参数就够了,第二个循环变量放在函数中声明并且固定初值,你这是自找麻烦了。曾经回答过这种提问,因这种两个形参的延时函数在编译时会产生错误,变成弄巧成拙了,延时没有效果了。

四、51单片机用c语言怎么写延时函数

延时时间的计算与单片机的晶振频率有关。若晶振频率为12Mhz,那么单片机每震动一次所需要的时间是1/12M s。那么再来看看单片机执行一次自减所需要的振动次数是96次,假如我们对时间要求不是特别精确的话,可以约等于100来计算。现在通过上面两个数据可以得出:单片机每执行一次自减所需要的时间是1/12M*100(s),即1/120000 s,逆向计算一下,每1ms需要自减多少次?120次对吧。所以一个简单的延时功能就诞生了,我们只需要自减120次,就可以延时1ms,如果我们要延时50ms呢,那就自减50*120=6000次。那么在程序上如何表达呢?我们可以用两套for循环

void delay(int i){

int x,y;

for(x=i;x>0;x--){

for(y=120;y>0;y--)

}

}

参数 i代表该函数延时多少ms

相关文章

长虹(CHANGHONG)A00DNY100英寸超高清4K防爆屏商用显示家用平板电视大屏显示无线网络TV智能好用吗

长虹(CHANGHONG)A00DNY100英寸超高清4K防爆屏商用显示家用平板电视大屏显示无线网络TV智能好用吗

很多小伙伴在关注长虹(CHANGHONG)A00DNY100英寸超高清4K防爆屏商用显示家用平板电视大屏显示无线网络TV智能怎么样?质量好不好?使用测评如何?本文综合已购用...

FFALCON雷鸟鹏6质量测评好不好

FFALCON雷鸟鹏6质量测评好不好

很多小伙伴在关注FFALCON雷鸟鹏6怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

Apple苹果耳机有线原装线控手机耳机13/14耳塞入耳式XR有线耳机耳麦iPhone12ProMax/11/SE/8p/earpods质量好吗

Apple苹果耳机有线原装线控手机耳机13/14耳塞入耳式XR有线耳机耳麦iPhone12ProMax/11/SE/8p/earpods质量好吗

很多小伙伴在关注Apple苹果耳机有线原装线控手机耳机13/14耳塞入耳式XR有线耳机耳麦iPhone12ProMax/11/SE/8p/earpods怎么样?质量好不好?...

适马(SIGMA)Art85mm质量测评好不好

适马(SIGMA)Art85mm质量测评好不好

很多小伙伴在关注适马(SIGMA)Art85mm怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧...

AppleWatch价格多少钱

AppleWatch价格多少钱

很多小伙伴在关注AppleWatch怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...

文石BOOXLeaf2口碑好不好

文石BOOXLeaf2口碑好不好

很多小伙伴在关注文石BOOXLeaf2怎么样?质量好不好?使用测评如何?本文综合已购用户的客观使用分享和相应的优惠信息,为大家推荐一款高性价比的产品,一起来看看吧。...