关于流水灯延时的问题

[复制链接]
 楼主| 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延时程序变成汇编以后是什么语句,每条语句执行的时间,延时程序总共要执行多久...
liang7143 发表于 2010-12-3 09:35 | 显示全部楼层
这个具体的看汇编是什么样子的
chenczy 发表于 2010-12-3 09:36 | 显示全部楼层
这好像是C的最基本功的程序写法,看来LZ还得多学一下C。
ayb_ice 发表于 2010-12-3 09:59 | 显示全部楼层
delay1ms(500); --> 表示延时500个1MS=500MS
 楼主| shiwilson 发表于 2010-12-3 11:23 | 显示全部楼层
朋友们,我们学校开的课程是直接学C,不学汇编,请问我需要去自学吗?如果不学的话,是不是就不能深刻理解单片机寄存器的各种功能,谢了
寻他千百 发表于 2010-12-3 11:29 | 显示全部楼层
反汇编
zjswuyunbo 发表于 2010-12-3 20:24 | 显示全部楼层
呵呵
必有我师 发表于 2010-12-4 19:26 | 显示全部楼层
要是学习单片机的话,就只用C就可以了,不用汇编,要是用DSP的话,就要学学了,其实C比汇编要应用的广。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

154

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

0

主题

154

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部