當前位置:編程學習大全網 - 編程語言 - Keil c51晶振是11.0592mhz我寫的是delay(uchi ri){ while(-I);}這要耽誤多少時間?

Keil c51晶振是11.0592mhz我寫的是delay(uchi ri){ while(-I);}這要耽誤多少時間?

誰知道妳的我是什麽?唉,這個沒人知道。可以用keil模擬直接得到答案,也可以參考下面的自我修正。

以下是單片機的延時程序(包括asm和C程序,是我在學習單片機的過程中用到的)。在單片機的延時程序中,要考慮所用晶振的頻率。在51系列單片機中,我們常用11.0592MHz和12.0000MHz的晶振,而在AVR單片機中。

軟件延遲:(asm)

晶體振蕩器12MHZ,延遲1秒。

該過程如下:

延時:MOV 72H,#100

第三環路:MOV 71H,#100

loop 1:MOV 70H # 47

LOOP0:DJNZ 70H,LOOP0

nototherwiseprovided(for)除非另有規定

DJNZ 71H,LOOP1

MOV 70H,46號

回路2:DJNZ 70H,回路2

nototherwiseprovided(for)除非另有規定

DJNZ 72H,LOOP3

MOV 70H,48號

LOOP4:DJNZ 70H,LOOP4

計時器延遲:

晶振為12MHZ,延時為1s,定時器0的工作模式為1。

DELAY1:MOV R7,# 0AH;晶體振蕩器12MHZ,延時0.5秒。

AJMP延遲

延時2:MOV R7,# 14H;;晶體振蕩器12MHZ,延遲1秒。

延遲:CLR EX0

MOV TMOD,# 01H;將定時器的工作模式設置為模式1。

MOV TL0,# 0B0H設置計時器的初始計數值。

MOV TH0,#3CH

SETB TR0;啟動計時器

這裏:JBC TF0,NEXT1

我是SJMP

NEXT1:MOV TL0,#0B0H

MOV TH0,#3CH

DJNZ R7,這裏

CLR TR0定時器應通過軟件清零。

SETB EX0

浸水使柔軟

c語言延遲程序:

10毫秒延遲子程序(12MHZ)

無效延遲10毫秒(無效)

{

無符號字符I,j,k;

for(I = 5;我& gt0;我-)

for(j = 4;j & gt0;j -)

for(k = 248;k & gt0;k-);

}

1s延遲子程序(12MHZ)

無效延遲1s(無效)

{

無符號字符h,I,j,k;

for(h = 5;h & gt0;h -)

for(I = 4;我& gt0;我-)

for(j = 116;j & gt0;j -)

for(k = 214;k & gt0;k-);

}

200毫秒延遲子程序(12MHZ)

無效延遲200毫秒(無效)

{

無符號字符I,j,k;

for(I = 5;我& gt0;我-)

for(j = 132;j & gt0;j -)

for(k = 150;k & gt0;k-);

}

500ms延時子程序:(12MHZ)

無效延遲500毫秒(無效)

{

無符號字符I,j,k;

for(I = 15;我& gt0;我-)

for(j = 202;j & gt0;j -)

for(k = 81;k & gt0;k-);

}

以下是使用8.0000MHZ晶振(使用timing 0 1工作模式)的幾種延時程序:

(1)延遲0.9毫秒

無效延遲_ 0 _ 9毫秒(無效)

{

TMOD = 0x 01;/*定時器0工作在1模式(16位計數器)*/

TH0 = 0xfd

TL0 = 0xa8

TR0 = 1;/*啟動定時器*/

while(TF0 = = 0);

TR0 = 0;

}

(2)延遲1毫秒

無效延遲_ 1毫秒(無效)

{

TMOD = 0x 01;/*定時器0工作在1模式(16位計數器)*/

TH0 = 0xfd

TL0 = 0x65

TR0 = 1;/*啟動定時器*/

while(TF0 = = 0);

TR0 = 0;

}

(3)延遲4.5毫秒

無效延遲_ 4 _ 5毫秒(無效)

{

TMOD = 0x 01;/*定時器0工作在1模式(16位計數器)*/

TH0 = 0xf4

TL0 = 0x48

TR0 = 1;/*啟動定時器*/

while(TF0 = = 0);

TR0 = 0;

}

  • 上一篇:c語言通訊錄編寫
  • 下一篇:木門噴漆選用哪種噴塗設備比較合適
  • copyright 2024編程學習大全網