8051 使用C ,如何作 Delay 2秒? |
答題得分者是:mymj
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
請教各位前輩
8051 使用C ,如何作 Delay 2秒?
1.如何作隔離2秒亮一燈號P0_1=1
2.如用 P0及P1作四個7段顯示器,用掃描方式要如何作到隔離2秒?? #pragma oe db pw(80) SM SB CD
#include
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
|
kilo_amd
一般會員 發表:15 回覆:13 積分:10 註冊:2003-01-24 發送簡訊給我 |
因為我沒有使用過C來寫
都用組語的寫法 我是讓程式去跑空迴圈
所以要去考慮振蕩的頻率 恩~記得如果使用12Mhz的石英震盪器
那麼一個週期的指令碼
會消耗1us的時間 所以delay 2秒
迴圈就要跑1,000,000次 因為在組語中的佔存器只有八位元(最大即255)
因此2000000=250x200x40
所以需要三個站存器來使用
之後寫一個副程式
DELAY:
MOV R5,250
L1: MOV R6,200
L2: MOV R7,40
L3: DJNZ R7,L3
DJNZ R6,L2
DJNZ R5,L1
RET
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 用Timer去數Counter就好阿 然後如此用 msec=1000; while(msec); 中斷中如此寫 if(msec) --msec;我用中斷寫一個間隔1秒加一的程式, 但是結果快了很多不知那錯了 pragma oe db pw(80) SM SB CD #include |
mymj
版主 發表:132 回覆:486 積分:608 註冊:2002-10-25 發送簡訊給我 |
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |