51单片机c语言指令汇总现场保护参与哪些运算指令(c语言)的数据?

专业文档是百度文库认证用户/机構上传的专业性文档文库VIP用户或购买专业文档下载特权礼包的其他会员用户可用专业文档下载特权免费下载专业文档。只要带有以下“專业文档”标识的文档便是该类文档

VIP免费文档是特定的一类共享文档,会员用户可以免费随意获取非会员用户需要消耗下载券/积分获取。只要带有以下“VIP免费文档”标识的文档便是该类文档

VIP专享8折文档是特定的一类付费文档,会员用户可以通过设定价的8折获取非会員用户需要原价获取。只要带有以下“VIP专享8折优惠”标识的文档便是该类文档

付费文档是百度文库认证用户/机构上传的专业性文档,需偠文库用户支付人民币获取具体价格由上传人自由设定。只要带有以下“付费文档”标识的文档便是该类文档

共享文档是百度文库用戶免费上传的可与其他用户免费共享的文档,具体共享方式由上传人自由设定只要带有以下“共享文档”标识的文档便是该类文档。

}
标准的C语言中没有空语句但在單片机c语言指令汇总的C语言编程中,经常需要用几个空指令产生短延时的效果

这在汇编语言中很容易实现,写几个nop就行了

作用:对于延时很短的,要求在us级的采用“_nop_”函数,这个函数相当汇编NOP指令延时几微秒。
NOP指令为单周期指令可由晶振频率算出延时时间,对于12M晶振延时1uS。


对于延时比较长的要求在大于10us,采用C51中的循环语句来实现
在选择C51中循环语句时,要注意以下几个问题
第一、定义的C51中循環变量尽量采用无符号字符型变量。
第二、在FOR循环语句中尽量采用变量减减来做循环。
第三、在do…whilewhile语句中,循环体内变量也采用减減方法
这因为在C51编译器中,对不同的循环方法采用不同的指令来完成的。


其三:对于要求精确延时时间更长这时就要采用循环嵌套
嘚方法来实现,因此循环嵌套的方法常用于达到ms级的延时。
对于循环语句同样可以采用fordo…while,while结构来完
成每个循环体内的变量仍然采鼡无符号字符变量。
这三种方法都是用DJNZ指令嵌套实现循环的由C51编
译器用下面的指令组合来完成的
这些指令的组合在汇编语言中采用DJNZ指令來做延时用,
因此它的时间精确计算也是很简单假上面变量i的初
值为m,变量j的初值为n则总延时时间为:m×(n×T+T),
其中T为DJNZ指令执行時间(DJNZ指令为双周期指令)
这里的+T为MOV这条指令所使用的时间。
同样对于更长时间的延时可以采用多重循环来完成。
只要在程序设计循環语句时注意以上几个问题

采用软件定时的计算方法

我一直都是借助仿真软件编。一点一点试时间

C语言最大的缺点就是实时性差,我在網上到看了一些关于延时的讨论,其中有篇文章

写得不错,他是用while(--i);产生DJNZ 来实现精确延时,后来有人说如果while里面不能放其它语句,否则也不行,用do-while就可鉯,具体怎样我没有去试.所有这些都没有给出具体的实例程序来.还看到一些延时的例子多多少少总有点延时差.为此我用for循环写了几个延时的孓程序贴上来,希望能对初学者有所帮助.(晶振12MHz,一个机器周期1us.)

在精确延时的计算当中,最容易让人忽略的是计算循环外的那部分延时,在对时间要求不高的场合,这部分对程序不会造成影响.

}

我要回帖

更多关于 单片机c语言指令汇总 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信