51单片机中 void delay (uint z) 问题
#include<reg51.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedcharuch...
#include <reg51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar LED;
void delay (uint z);
void main ()
{
LED=0xfe;
P1=LED;
while (1)
{
LED=_crol_(LED,1);
delay (500);
P1=LED;
}
}
void delay (uint z)
{
uchar x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
} 这是一个很简单的C语言的流水灯程序,我有一个地方不是很明白...就是在延时程序void delay (uint z)这里开始 ,括号里的参数uint z有什么作用?在FOR循环中 for (x=z;x>0;x--)这句又是什么意思 望各位高手指点一二... 展开
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
uchar LED;
void delay (uint z);
void main ()
{
LED=0xfe;
P1=LED;
while (1)
{
LED=_crol_(LED,1);
delay (500);
P1=LED;
}
}
void delay (uint z)
{
uchar x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
} 这是一个很简单的C语言的流水灯程序,我有一个地方不是很明白...就是在延时程序void delay (uint z)这里开始 ,括号里的参数uint z有什么作用?在FOR循环中 for (x=z;x>0;x--)这句又是什么意思 望各位高手指点一二... 展开
7个回答
2013-03-28
展开全部
void delay (uint z)
{
uchar x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
} 这个其实就是让单片机一直在那里执行空指令,达到延时的效果..函数参数z没有啥特别的意思..z的值给的越大,延时时间越长,越小的话,延时时间越短..为了防止出现意外,所以特意写成了uint ..也就是无符号的数,,防止给出的参数为负数的话,将会延时很久很久..因为在计算机中负数与正数的区别就是用符号位来区别...声明为无符号数的话,就可以避免了..
{
uchar x,y;
for (x=z;x>0;x--)
for (y=110;y>0;y--);
} 这个其实就是让单片机一直在那里执行空指令,达到延时的效果..函数参数z没有啥特别的意思..z的值给的越大,延时时间越长,越小的话,延时时间越短..为了防止出现意外,所以特意写成了uint ..也就是无符号的数,,防止给出的参数为负数的话,将会延时很久很久..因为在计算机中负数与正数的区别就是用符号位来区别...声明为无符号数的话,就可以避免了..
展开全部
void delay (uint z) //uint z 传递的是延时毫秒的数,比如延时10毫秒则为10
{
uchar x,y; //这里其实应该uint x,y;
for (x=z;x>0;x--) //这个循环是毫秒数
for (y=110;y>0;y--); //这个循环是1毫秒循环次数
}
{
uchar x,y; //这里其实应该uint x,y;
for (x=z;x>0;x--) //这个循环是毫秒数
for (y=110;y>0;y--); //这个循环是1毫秒循环次数
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
uint z其实就是unsigned int z,声明呗,上面有宏定义
for(x=z;x>0;x--)就是基本语法了,不过x是unsigned char类型
z是unsigned int 类型,数据类型对不上,就算赋值了也达不到效果,
x=z有问题,直接不用x,用for( ; z>0 ;z--)或者把x定义未unsigned int x
for(x=z;x>0;x--)就是基本语法了,不过x是unsigned char类型
z是unsigned int 类型,数据类型对不上,就算赋值了也达不到效果,
x=z有问题,直接不用x,用for( ; z>0 ;z--)或者把x定义未unsigned int x
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里z就是一个形式参数,当你调用函数时如delay (500) ,就相当于把500这个值传递给z这个形式参数;而调用函数后for (x=z;x>0;x--)这句的意思也就相当于for(x=500;x>0;x--)进行一个循环。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这里就是做两个循环,嵌套的,让单片机干点活,过一会再回来继续别的任务。 z是函数参数。 比如说你 delay(500) 这就调用了这个函数, 然后x=z 这样就改变了延时的长度, 随意定了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询