ps:P0口接八位LED管,低电平点灯;
程序1:
#include<reg52.h> sbit D1=P0^0; void delay_while_s(unsigned int ns) {while(ns) {unsigned int i=51177; while(i--); ns--;} } void main() { delay_while_s(1); D1=0; delay_while_s(1); }
程序2: #include<reg52.h> sbit D1=P0^0; void delay_for_ms(unsigned int xms) {unsigned int i,j; for(i=xms;i>0;i--) for(j=110;j>0;j--); } void main() { delay_for_ms(500); D1=0; delay_for_ms(500); }
现象如下:程序一烧录51单片机中,led1管每1s钟亮灭循环(即一直循环闪烁); 而程序二中,则先灭后亮,不闪烁,点亮后一直保持点亮状态; 从上述程序中可以看出for,和while语句都是作为延时功能作用,为什么会发生两种不同的现象?
望高手解答下~本人不胜感激。。
[此贴子已经被作者于2010-1-26 14:34:22编辑过]
|