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編輯過]
|