打印

关于流水灯延时的问题

[复制链接]
2700|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
shiwilson|  楼主 | 2010-12-2 20:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是关于流水灯的程序,请教大家一下,为什么延时函数 delay1ms之后还要加个500
这个程序还有什么需要改进的地方。谢了
#include<reg52.h>
#include<intrins.h>
void delay1ms(unsigned int i)
{
unsigned char j;
while(i--)
{
for(j=0;j<115;j++)   //1ms基准延时程序
{
  ;
}
}
  
}
void main()
{
P0=0xfe;
P1=0x7f;  // 0111 1111
  while(1){
          P0=_crol_(P0,1);
          P1=_cror_(P1,1);
          delay1ms(500);
      }
}

相关帖子

沙发
shiwilson|  楼主 | 2010-12-2 20:08 | 只看该作者
补充一个问题,为什么还要一个while(i--)

使用特权

评论回复
板凳
hexinxing| | 2010-12-2 20:50 | 只看该作者
while(i--)
{
for(j=0;j<115;j++)  

这个整体才是一毫秒延时程序

使用特权

评论回复
地板
ningling_21| | 2010-12-2 20:54 | 只看该作者
LZ要知道C延时程序变成汇编以后是什么语句,每条语句执行的时间,延时程序总共要执行多久...

使用特权

评论回复
5
liang7143| | 2010-12-3 09:35 | 只看该作者
这个具体的看汇编是什么样子的

使用特权

评论回复
6
chenczy| | 2010-12-3 09:36 | 只看该作者
这好像是C的最基本功的程序写法,看来LZ还得多学一下C。

使用特权

评论回复
7
ayb_ice| | 2010-12-3 09:59 | 只看该作者
delay1ms(500); --> 表示延时500个1MS=500MS

使用特权

评论回复
8
shiwilson|  楼主 | 2010-12-3 11:23 | 只看该作者
朋友们,我们学校开的课程是直接学C,不学汇编,请问我需要去自学吗?如果不学的话,是不是就不能深刻理解单片机寄存器的各种功能,谢了

使用特权

评论回复
9
寻他千百| | 2010-12-3 11:29 | 只看该作者
反汇编

使用特权

评论回复
10
zjswuyunbo| | 2010-12-3 20:24 | 只看该作者
呵呵

使用特权

评论回复
11
必有我师| | 2010-12-4 19:26 | 只看该作者
要是学习单片机的话,就只用C就可以了,不用汇编,要是用DSP的话,就要学学了,其实C比汇编要应用的广。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

154

帖子

0

粉丝