導航:首頁 > 操作系統 > 單片機延時10ms子程序

單片機延時10ms子程序

發布時間:2023-11-03 05:40:03

㈠ pic單片機 實現10ms定時的簡單程序

這個可以用幾種辦法:
1、直接用軟體延時,如用以下的DELAY()延時
子程序
,如要延時5ms,直接調用DELAY(5)就好了,但這種是純軟體的延時。
//======延時(n)ms,在4MHz
晶振
下!!!
void
DELAY(uint
n)
{
uint
j;
uchar
k;
for
(j=0;j<n;j++)
for
(k=246;k>0;k--)
NOP();
}
2、用定時器延時,要通過計算延時的時間來確定延時的常數(
分頻
比和定時器初值)。

㈡ 求匯編語言延時程序,延時10毫秒的延時程序

首先明確機器執行一條指令耗時大概是1us那麼延時10ms的程序如下:MOV AX,50L1:MOV BX,100L2:DEC BX JNZ L2DEC AXJNZ L1執行完之後時間大約為10ms多一點

㈢ 51單片機編程題,要求每條語句寫出注釋。求解答。

單片機P2口分別接8個發光二極體的陰極,陽極已經接+5V電源,試編寫8燈閃爍的程序(閃爍時間間隔500ms)。

程序如下

#include <reg51.h>

//延時10ms子程序

void Delay10ms(unsigned int c)

{

unsigned char a, b;

for (;c>0;c--)

{

for (b=38;b>0;b--)

{

for (a=130;a>0;a--);

}

}

}

void main()

{

while(1)

{

P2=0x00;//P2口8個燈全亮

Delay10ms(50);//延時500ms

P2=0xff;//P2口8個燈全滅

Delay10ms(50);//延時500ms

}

}

模擬圖

㈣ pic單片機 實現10ms定時的簡單程序

這個可以用幾種辦法:
1、直接用軟體延時,如用以下的DELAY()延時子程序,如要延時5ms,直接調用DELAY(5)就好了,但這種是純軟體的延時。
//======延時(n)ms,在4MHz晶振下!!!
void DELAY(uint n)
{ uint j;
uchar k;
for (j=0;j<n;j++)
for (k=246;k>0;k--) NOP();
}

2、用定時器延時,要通過計算延時的時間來確定延時的常數(分頻比和定時器初值)。

㈤ 1、 已知單片機的晶振為12M,請以子函數形式寫出10毫秒延時程序。該怎麼寫啊用C語言寫。

下面有你要的 選一個吧

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

軟體延時:(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

C語言延時程序:

10ms延時子程序(12MHZ)

void delay10ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=4;j>0;j--)

for(k=248;k>0;k--);

}

1s延時子程序(12MHZ)

void delay1s(void)

{

unsigned char h,i,j,k;

for(h=5;h>0;h--)

for(i=4;i>0;i--)

for(j=116;j>0;j--)

for(k=214;k>0;k--);

}

200ms延時子程序(12MHZ)

void delay200ms(void)

{

unsigned char i,j,k;

for(i=5;i>0;i--)

for(j=132;j>0;j--)

for(k=150;k>0;k--);

}

500ms延時子程序程序: (12MHZ)
void delay500ms(void)
{
unsigned char i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}

下面是用了8.0000MHZ的晶振的幾個延時程序(用定時0的工作模式1):

(1)延時0.9MS

void delay_0_9ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xfd;
TL0=0xa8;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

(2)延時1MS

void delay_1ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xfd;
TL0=0x65;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

(3)延時4.5ms

void delay_4_5ms(void)
{
TMOD=0x01; /*定時器0工作在模式1下(16位計數器)*/
TH0=0xf4;
TL0=0x48;
TR0=1; /*啟動定時器*/
while(TF0==0);
TR0=0;
}

㈥ 如何利用單片機匯編指令編程實現延時10ms利用匯編指令設計多重循環編程實現20ms延時

這是調用一個延時10毫秒的延時子程序 當然,子程序的名字可以自己定 DELY1MS: 這個名字一定要與調用中出現的名字一樣,否則的話,調用的就不是這個子程序了

DELAY10MS:
MOV R2,#20
DELAY10MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY10MS1
RET

這是調用一個延時20毫秒的延時子程序 當然,子程序的名字可以自己定 DELY1MS: 這個名字一定要與調用中出現的名字一樣,否則的話,調用的就不是這個子程序了

DELAY20MS:
MOV R2,#40
DELAY20MS1:
MOV R3,#250
DJNZ R3,$
DJNZ R3,DELAY20MS1
RET

RETRET的作用是子程序返回。調用一個子程序,當單片機執行到RET語句的時候,單片機就會返回到調用的地方並繼續向下執行。

下面給你一個常式:

閃爍燈

ORG 00H

AJMP START

ORG 30H

START:

MOV P0,#00H

LCALL DELY;調用延時子程序

MOV P0,#0FFH

LCALL DELY;調用延時子程序

AJMP START

DELY:

MOV R7,#250

DL1:MOV R6,#250

DJNZ R6,$

DJNZ R7,DL1

RET

閱讀全文

與單片機延時10ms子程序相關的資料

熱點內容
如何給app重命名 瀏覽:603
怎麼幽默調侃程序員 瀏覽:285
忘記密碼解壓視頻 瀏覽:911
運城機場春運加密 瀏覽:287
安卓手機如何關閉app後台 瀏覽:154
安卓數字密碼忘記怎麼破解 瀏覽:252
pythonzmq模式 瀏覽:180
linux運行php網站 瀏覽:865
實驗室無油壓縮機 瀏覽:805
哪裡可以免費看動畫app 瀏覽:53
文本加密咋解 瀏覽:485
tomcat做伺服器怎麼設置 瀏覽:252
非對稱加密會增大網路包嗎 瀏覽:703
為什麼不能編譯c 瀏覽:261
數據伺服器不能啟動是什麼意思 瀏覽:556
java以什麼開頭 瀏覽:820
蘋果手機相冊文件夾如何清理 瀏覽:405
伺服器雲電腦搭建教程 瀏覽:410
eco怎麼搭建伺服器 瀏覽:468
周轉材料核演算法 瀏覽:358