51單片機延時30s的程序c語言,51單片機延時子程序延時10ms

本文目錄一覽:

單片機C語言延遲程序

下面的延時的基本程序(中斷加計數器)

********

void

T0_int(void)

interrupt

1

{

TH0

=

0x4C;

//重新裝載,50MS定時器初值

TL0

=

0x00;

T0_count++;

if(T0_count==20)

//1S到

{

T0_count

=

0;

//在這寫程序

}

}

main()

{

TMOD

=

0x01;//定時器0,工作方式1,16位計數

TH0

=

0x4C;

//50MS定時器初值

TL0

=

0x00;

IE

=

0x82;

//開總中斷,開T0中斷

EA

=

1;

ET0

=

1;

TR0

=

1;

T0_count

=

0;

i

=

0;

loop:

goto

loop;

}

還有:

for(us=0;us60;us++);

/*延時500us*/

for(us=0;us1;us++);

/*

延時15微秒*/

for(us=0;us5;us++);

/*

延時51微秒*/

51單片機用c語言怎麼寫延時函數?

延時時間的計算與單片機的晶振頻率有關。若晶振頻率為12Mhz,那麼單片機每震動一次所需要的時間是1/12M s。那麼再來看看單片機執行一次自減所需要的振動次數是96次,假如我們對時間要求不是特別精確的話,可以約等於100來計算。現在通過上面兩個數據可以得出:單片機每執行一次自減所需要的時間是1/12M *100(s),即1/120000 s,逆向計算一下,每1ms需要自減多少次?120次對吧。所以一個簡單的延時功能就誕生了,我們只需要自減120次,就可以延時1ms,如果我們要延時50ms呢,那就自減50*120=6000次。那麼在程序上如何表達呢?我們可以用兩套for循環

void delay(int i){

int x,y;

for(x=i;x0;x–){

for(y=120;y0;y–)

}

}

參數 i 代表該函數延時多少ms

51單片機求10微秒的延時函數 C語言(晶振11.0592MHz)

1、下面幾個是單片機的延時程序(包括asm和C程序,都是我在學單片機的過程中用到的),在單片機延時程序中應考慮所使用的晶振的頻率,在51系列的單片機中我們常用的是11.0592MHz和12.0000MHz的晶振,而在AVR單片機上常用的有8.000MHz和4.000MH的晶振所以在網上查找程序時如果涉及到精確延時則應該注意晶振的頻率是多大。

2、軟體延時:(asm)

晶振12MHZ,延時1秒

程序如下:

DELAY:MOV

72H,#100

LOOP3:MOV

71H,#100

LOOP1:MOV

70H,#47

LOOP0:DJNZ

70H,LOOP0

NOP

DJNZ

71H,LOOP1

MOV

70H,#46

LOOP2:DJNZ

70H,LOOP2

NOP

DJNZ

72H,LOOP3

MOV

70H,#48

LOOP4:DJNZ

70H,LOOP4

定時器延時:

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

DELAY1:MOV

R7,#0AH

;;晶振12MHZ,延時0.5秒

AJMP

DELAY

DELAY2:MOV

R7,#14H

;;晶振12MHZ,延時1秒

DELAY:CLR

EX0

MOV

TMOD,#01H

;設置定時器的工作方式為方式1

MOV

TL0,#0B0H

;給定時器設置計數初始值

MOV

TH0,#3CH

SETB

TR0

;開啟定時器

HERE:JBC

TF0,NEXT1

SJMP

HERE

NEXT1:MOV

TL0,#0B0H

MOV

TH0,#3CH

DJNZ

R7,HERE

CLR

TR0

;定時器要軟體清零

SETB

EX0

RET

3、C語言延時程序:

10ms延時子程序(12MHZ)

void

delay10ms(void)

{

unsigned

char

i,j,k;

for(i=5;i0;i–)

for(j=4;j0;j–)

for(k=248;k0;k–);

}

1s延時子程序(12MHZ)

void

delay1s(void)

{

unsigned

char

h,i,j,k;

for(h=5;h0;h–)

for(i=4;i0;i–)

for(j=116;j0;j–)

for(k=214;k0;k–);

}

200ms延時子程序(12MHZ)

void

delay200ms(void)

{

unsigned

char

i,j,k;

for(i=5;i0;i–)

for(j=132;j0;j–)

for(k=150;k0;k–);

}

500ms延時子程序程序:

(12MHZ)

void

delay500ms(void)

{

unsigned

char

i,j,k;

for(i=15;i0;i–)

for(j=202;j0;j–)

for(k=81;k0;k–);

}

51單片機兩個鍵分別控制P2.1口延時10秒和P2.0口延時30秒

下面這個程序裡面有你要的東西,自己找找。 #include”reg51.h” void delay(int n); sbit K1=P3^3; //LED左移按鍵 sbit K2=P3^5; //LED右移按鍵 sbit K3=P3^6; //開啟手動按鍵 sbit K4=P3^7; //開啟自動按鍵 bit mark1=0; bit mark2=0; unsigned char a,b,c,d; int x; void pulse(void); void main() { a=0xfe;b=0xff; c=0x7f;d=0xff; while(K4) {P2=a; P0=b; if(!K1!mark1) //如果K1按下且mark1=0 {delay(10); //延時 if(!K1) //檢查K1還是按下 { mark1=1; //mark1=1 if((a0x80)(a!=0xff)) //如果a=1*******(“*”號為0或者1(最高位為1))並且a不等於0xff { a=(a1)|0x01;pulse();} //讓a向左移後邊會拉出0,然後與00000001相與(最後一位補1) else if(a==0x7f) {a=0xff;b=0xfe;pulse();} else if((b0x80)(b!=0xff)) {b=(b1)|0x01;pulse();} else if(b==0x7f) {a=0xfe;b=0xff;pulse();} // {a/a左移一位讓P2^7的值跳到P2^0上 } } else if(K1) {mark1=0;} if(!K2!mark2) { delay(10); if(!K2) { mark2=1; if((a!=0xff)(a!=0xfe)) { if(a0x01) { a=(a1)|0x80;pulse();} } else if(a==0xfe) {a=0xff;b=0x7f;pulse();} if((b!=0xff)(b!=0xfe)) { if(b0x01) { b=(b1)|0x80;pulse();} } else if(b==0xfe) {a=0x7f;b=0xff;pulse();} } } else if(K2) mark2=0; } while(K3) { if(!K1!mark1) {delay(10); if(!K1) {mark1=1; for(x=0;x=16;x++) { P0=a;P2=b; delay(100); if((a0x80)(a!=0xff)) {a=(a1)|0x01;} else if(a==0x7f) {a=0xff;b=0xfe;} else if((b0x80)(b!=0xff)) {b=(b1)|0x01;} else if(b==0x7f) {b=0xff;a=0xff;} } } } else if(K1) {mark1=0;} if(!K2!mark2) {delay(10); if(!K2) {mark2=1; for(x=0;x1)|0x80;} else if(c==0xfe) {c=0xff;d=0x7f;} else if((d0x01)(d!=0xff)) {d=(d1)|0x80;} else if(d==0xfe) {d=0xff;c=0xff;} } } } else if(K2) {mark2=0;} } } void delay(int n) { int i,j; for(i=0;i=n;i++) for(j=0;j=320;j++); } void pulse(void) { P1=0xfe; delay(100); P1=0xfd; delay(100); P1=0xfb; delay(100); P1=0xf7; delay(100); P1=0xff; }

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/198447.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-04 10:25
下一篇 2024-12-04 10:25

相關推薦

  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智慧、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • python強行終止程序快捷鍵

    本文將從多個方面對python強行終止程序快捷鍵進行詳細闡述,並提供相應代碼示例。 一、Ctrl+C快捷鍵 Ctrl+C快捷鍵是在終端中經常用來強行終止運行的程序。當你在終端中運行…

    編程 2025-04-29
  • Python程序文件的拓展

    Python是一門功能豐富、易於學習、可讀性高的編程語言。Python程序文件通常以.py為文件拓展名,被廣泛應用於各種領域,包括Web開發、機器學習、科學計算等。為了更好地發揮P…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python購物車程序

    Python購物車程序是一款基於Python編程語言開發的程序,可以實現購物車的相關功能,包括商品的添加、購買、刪除、統計等。 一、添加商品 添加商品是購物車程序的基礎功能之一,用…

    編程 2025-04-29
  • 爬蟲是一種程序

    爬蟲是一種程序,用於自動獲取互聯網上的信息。本文將從如下多個方面對爬蟲的意義、運行方式、應用場景和技術要點等進行詳細的闡述。 一、爬蟲的意義 1、獲取信息:爬蟲可以自動獲取互聯網上…

    編程 2025-04-29
  • Python被稱為膠水語言

    Python作為一種跨平台的解釋性高級語言,最大的特點是被稱為”膠水語言”。 一、簡單易學 Python的語法簡單易學,更加人性化,這使得它成為了初學者的入…

    編程 2025-04-29
  • Vb運行程序的三種方法

    VB是一種非常實用的編程工具,它可以被用於開發各種不同的應用程序,從簡單的計算器到更複雜的商業軟體。在VB中,有許多不同的方法可以運行程序,包括編譯器、發布程序以及命令行。在本文中…

    編程 2025-04-29

發表回復

登錄後才能評論