51C单片机延时语句问题

voiddelay(ucharx){ucharj;while((x--)!=0)//CPU执行x*12次{for(j=0;j<125;j++){;}}}51的一段延时程序... void delay(uchar x){ uchar j; while((x--)!=0) //CPU执行x*12次 { for(j=0;j<125;j++) {;} }}
51的一段延时程序如上,X这个量没在其它地方有声明过。。想问 X这个值,具体是多少?如何计算延时时间?
void delay(uchar x)
{ uchar j;
while((x--)!=0) //CPU执行x*12次
{ for(j=0;j<125;j++)
{;}
}
}
重新排一下这段程序好看一点
展开
 我来答
硬件开发88
2014-01-11 · TA获得超过8676个赞
知道大有可为答主
回答量:1757
采纳率:84%
帮助的人:599万
展开全部
哈哈哈,这个延迟是单片机的一个最基本的知识就是软件延时。

void delay(uchar x){ uchar j; while((x--)!=0) //CPU执行x*12次 { for(j=0;j<125;j++) {;} }}

你的延时程序具体应用如下:
int main(void)
{
while(1)
{
P1 = 0xFF;
delay(100); //X赋值100
P1 = 0x00;
delay(100);
}
}

这样你应该知道X的值是哪里来的吧,这延时是一个带形参的延时子函数,集体延时时间多久就看你的单片机晶振多少,没有准确的时间,只有通过单片机keil2软件仿真看看集体延时是多长时间。
一万光年MEGn0
2014-01-11 · TA获得超过3712个赞
知道大有可为答主
回答量:4602
采纳率:67%
帮助的人:1086万
展开全部
这个X是调用函数时,传递过来的参数值。

字符型,最大是255,最小是0.
当然值越大,延时越长。

具体延时时间,要看这个函数反汇编的代码,根据每条指令执行时间,算出总时间,就知道延时多久了。
或调用这个函数,用示波器量这个时间长短也可以。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
K暗黑破坏熊K
2014-01-11 · TA获得超过503个赞
知道答主
回答量:190
采纳率:0%
帮助的人:28.2万
展开全部

void  delay(uchar x),那你说uchar 是什么意思?(⊙_⊙)?uchar=unsigned char,是你前面写的声明的等效替代。把unsigned char用uchar表示了,怎么叫没有声明呢?这个不是声明吗?(⊙_⊙)?

  • 还有,X是个形式参量,也需要声明,从而规定输入这个函数的变量的类型要求。

  • 这个x只有程序运行到这个函数时才会出现:编译器会临时开辟一个内存空间来存这个量,取值为输入这个函数的变量,存储位置是随机的,存储在RAM里。算完后,系统就删掉那个临时空间,返回计算结果给原程序。所以,你不必管这个形参的存储位置与初值。(不运行这段程序时,X根本就不存在,也就没有所谓的初值)。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沐木牧木
2014-01-11 · 超过16用户采纳过TA的回答
知道答主
回答量:57
采纳率:0%
帮助的人:22.7万
展开全部
void delay(uchar x){
uchar j; while((x--)!=0) //CPU执行x*12次 {
for(j=0;j<125;j++) {
;
} }}
X值是你调用这个延时函数的时候给它赋的。
延时时间是根据你的单片机时钟周期计算,大概每四个机器周期程序执行一步。如果还不清楚可以看一下郭天祥写的那本书
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式