㈠ 怎麼在單片機中時鍾延時兩秒
可以根據單片機的時鍾和指令執行時間延時
void
delay
(int
m)
{
while(m--)
{_NOP();}
}
也可以用單片機的定時器延時,設置timer的時鍾源,設置溢出計數,然後再中斷里處理。
如果延遲2秒,最好用定時中斷。
㈡ 單片機 延遲一秒程序怎麼寫延遲2秒我是初學者,想請教一下。
你好!
你要先寫一個延時基準(50毫秒),在延時1秒就是做20次基準,2秒就是40個基準!
也可以用定時器,定時50毫秒,定時器中斷計數,計數20就是1秒,計數40次就是2秒(推薦用定時器!)
僅代表個人觀點,不喜勿噴,謝謝。
㈢ 89C51單片機,假定單片機晶振頻率6MHz,試編寫延時2ms的程序
單片機晶振頻率6MHz的時鍾周期是0.166uS,89C51的指令周期是12個時鍾周期,約等於2uS。
以下是常式:
匯編
DELAY: MOV Rn,#200 循環200次 *10uS = 2mS
LOOP: NOP 一個指令周期
NOP
NOP
DJNZ Rn,LOOP 二個指令周期,一次循環總共5個指令周期耗時10uS
RET
C語言 #define NOP _nop_(),_nop_(),_nop_()
for(int i = 200;i!=0;i-- )NOP;
㈣ 跪求MSP430單片機在32768晶振下的精準延時2ms的方法
32768和500的最大公約數是4,所以將定時器設為計數4次中斷一次,同時在中斷里把一個計數用的全局變數加1.當這個變數增加到125,將其清零同時執行你想以2ms周期執行的任務。中斷服務如下
int cnt=0;
void interrupt_hadler(void){
cnt++;
if(cnt>125){
cnt=0;
do_your_task();
}
}
㈤ 如何利用單片機匯編指令編程實現延時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
㈥ 請教一個51單片機C語言的延時時間問題
應該是1-2ms,因為中斷來臨的時間不確定,有可能count剛被清零中斷就來了,這時其實延時最接近1ms。然而如果在count清零之前剛執行過中斷的話,那麼延時最接近2ms。
㈦ 請幫忙在51系列單片機系統中,編寫一個延時1ms的子程序。謝謝。。
1、首先,在電腦中打開keil軟體,創建好工程,然後添加c文件,如下圖所示。