单片机延时函数问题。为什么调用无参数的延时函数的效果和调用有参数的延时函数效果不同?

作者&投稿:延点 (若有异议请与网页底部的电邮联系)
单片机的延时函数的问题?~

这个还是软件计算比较方便 毕竟不像AVR 的主频那样 好算

1、可以放参数,因为void Delay(unsigned char x) //x为形参例如:
a=3000*b/a;Delay(a); //带参数a到x,调用延时
2、delay函数是一般自己定义的一个延时函数。C语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。// 定义一个延时xms毫秒的延时函数
void delay(unsigned int xms) // xms代表需要延时的毫秒数{ unsigned int x,y; for(x=xms;x>0;x--) for(y=110;y>0;y--);}

C语言的延时时间,没有计算公式。
延时时间,是测试出来的。
楼主的试验,已经说明了这种情况。

使用汇编语言编程,才能准确的计算出延时时间。

无参数、有参数的函数,它们编译出来的汇编语言,肯定是不同的。


求大神支招!我电脑xp系统,光盘放进光驱显示“函数不正确”什么情况...
没有“函数不正确”的提示,并可以查看盘片所用及剩余空间;3、再切帐户到你所在有光驱错误提示的帐户,打开光盘就没有“函数不正确”的提示了,重启后一切搞定第四种解决方法:在设备管理器中将光驱卸载,再去控制面板里添加新硬件,重新驱动,如能正常工作,则是硬件驱动问题 ...

...怎么办?每次打开光驱是总显示:“无法访问G:\/,函数不正确。”请教高手...
光驱暂时还能用。。“不能播放,没有dvd解码器”只是软件问题,升级播放器就能解决了。能刻录cd或dvd,说明激光管刻录功能正常;“刻成vob的dvd可以打开”,说明光头读碟基本正常,但不排除老化问题存在。至于“函数不正确”的问题,windows不仅出现在光驱上,当初的软驱同样有出现。不能一出现这样的提示就...

请教FLASH AS2.0函数调用的二个疑问
moveBall_2()函数执行的时候小球向屏幕右上角运动,x和y轴上不同的增量当然会使得小球运动的距离不同了。如果希望小球向任意方向运动的距离都一样的话,应该使用三角函数值来实现,一会我用函数封装的形式给你例子。问题2:例子中的movieClip()函数是经过封装后的函数,我们编写自定义函数的时候应该像...

单片机怎么样可以同时执行两个任务?程序要怎么写?把两个程序一块写就 ...
定时,轮流执行,即可。比如,四个数码管,显示千、百、十、个四位数,每一位,显示1ms。可用定时器,定时1ms。每中断一次,就执行一个任务,显示一位数。人,看起来,四个数码管,就是同时发光。--- 当然,不用定时中断,也可。采用轮流查询的方法,也可以实现多任务。

单片机控制一个4位的共阴数码管通电的状态下显示时间的程序
void init()\/\/初始化函数设置中断寄存器的值。{ jishu=0;TMOD=0x01;TR0=1;ET0=1;EA=1;TH0=0x3c;TL0=0xb0;} void delay(x)\/\/延时函数。{ uint i,j;for(i=x;i>0;i--)for(j=120;j>0;j--);} void xian()\/\/把时分秒送到数码管显示。{ uint i;miaog=miao%10;miaos=miao...

用c语言写一个单片机控制小车走直线的程序,小车一共3个轮子,一个万向轮...
void delay(uint z) \/\/延时程序1 { uint x,y;for(x=z;x>0;x--)for(y=110;y>0;y--);} void delay1s(uchar t) \/\/1s延时函数 { uchar a,h,i,j,k;for(a=t;a>0;a--){ for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}...

如何使用 AfxBeginThread创建MFC线程对象和Win32线程对象
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond(){Sleep(6000); \/\/延时6秒} 编译并运行应用程序,单击“...

初中函数要点,和方程应用题。
初中函数要点,和方程应用题。1个回答 #热议# 生活中有哪些成瘾食物?匿名用户 2012-04-07 展开全部 销售问题8、某商场销售一批名牌衬衫,平均每天可售出20件,每件盈利40元,为了扩大销售量增加盈利,尽快减少库存,商场决定采取适当的降价措施,经调查发现,如果每件衬衫每降价1元,商场平均每天可多售2件,如果商场...

单片机C语言如何实现8个LED流水灯来回流动?
1、可以通过左移函数_crol_()和右移函数_cror_()来实现LED等的来回流动。2、具体实现方法可以参考如下程序:

为什么运行程序的时候不能干别的
一、问题的提出编写一个耗时的单线程程序: 新建一个基于对话框的应用程序SingleThread,在主对话框IDD_SINGLETHREAD_DIALOG添加一个按钮,ID为IDC_SLEEP_SIX_SECOND,标题为“延时6秒”,添加按钮的响应函数,代码如下:void CSingleThreadDlg::OnSleepSixSecond() {Sleep(6000); \/\/延时6秒} 编译并运行应用程序,单击“...

洛江区15335708655: 单片机延时函数问题.为什么调用无参数的延时函数的效果和调用有参数的延时函数效果不同? -
蒲念茵芪: C语言的延时时间,没有计算公式.延时时间,是测试出来的.楼主的试验,已经说明了这种情况.使用汇编语言编程,才能准确的计算出延时时间.无参数、有参数的函数,它们编译出来的汇编语言,肯定是不同的.

洛江区15335708655: 单片机c语言函数调用delay里能放参数吗? -
蒲念茵芪: 1、可以放参数,因为void Delay(unsigned char x) //x为形参 例如: a=3000*b/a; Delay(a); //带参数a到x,调用延时 2、delay函数是一般自己定义的一个延时函数. C语言定义延时函数主要通过无意义指令的执行来达到延时的目的.下面给出一个经典的延时函数. // 定义一个延时xms毫秒的延时函数void delay(unsigned int xms) // xms代表需要延时的毫秒数 {unsigned int x,y;for(x=xms;x>0;x--)for(y=110;y>0;y--); }

洛江区15335708655: 我写的单片机软件延时程序在arm中却不能用?? -
蒲念茵芪: 问题可能出在定义或者调用上:unsigned int ms 这说明函数的形参ms是一个无符号数,你是不是调用它时给它传递了一个有符号数?而且一个无符号数减到0的时候,再执行减一,也可能出现问题.比如while(ms--),当ms等于0时,退出while循环,但ms又减1了,你可以把函数这样修改试一下,如果还不行,兄弟也没法治了:( void Delay(int ms)//延时ms*1(ms) { unsigned char i; while(ms-->0) { for(i = 0; i} }

洛江区15335708655: 单片机延时程序 -
蒲念茵芪: 函数的入口参数,当你调用延时函数时,... delayms(10);... 目的要延时10ms,这是这个uint的无符号整形变量xms就被赋值为10,在进入delayms();函数后,i=xms即i=10,然后做for循环,根据系统的时钟周期做出相应时间的延时.如果没有xms,你的延时函数只能写成固定延时的,即在delayms内部确定好i的值,很不方便.有了入口参数,就能像上面说的那样随意延时了(数值范围要在uint定义内,即小于65536).

洛江区15335708655: 单片机小精灵里自动算出来的延时函数不会用!求指点. -
蒲念茵芪: ,那个延时是空函数,没有参数,所以不能赋值,直接调用是可以的

洛江区15335708655: STC单片机比较延时函数 -
蒲念茵芪: 看你说的意思,我的理解是:编写一个延时程序,以A作为输入形参 void delay(unsigned int A) {for(unsigned int i=0;i<A;i++)for(unsigned int j=0;j<num;j++) //注意这边的num是常值,选择合适的num值,使得这个for 的延时大概为1ms,具体看机器周期的计算nop(); } 希望能帮到你!

洛江区15335708655: 单片机的延时函数 -
蒲念茵芪: char类型的数据大小范围比int类型的小,相应的最大可延迟的时间也比较小.C语言语法规则中,有引用必须先声明.main在前面,而延时函数后面,相当于 调用的时候没有声明,故不可以;若延时函数定义在前面,main放在后面,则相当于 调用的时候已经事先声明了,故没有问题.

洛江区15335708655: 程序中没有调用的函数,会不会参与生成hex -
蒲念茵芪: 有延时函数声明和调用,但无延时函数,编译肯定会有警告的.虽然放到单片机运行时会出问题,但是Keil可以生成hex文件啊,是不是你设置问题

洛江区15335708655: 51单片机延时函数,进入延时函数后,不执行其他的函数 -
蒲念茵芪: 程序的结构有问题,初始化程序不应连续执行,只需开始时执行一次.就是 InitTime0() 这个函数

洛江区15335708655: 求助 我自己写的AVR单片机延时程序怎么出问题啦? -
蒲念茵芪: 开发环境是什么?winavr的话会将自定义的延时函数给优化掉,可以使用库函数中的_delay_ms()和_delay_us(),好象是通过调用汇编指令来进行延时的.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网