作者hkui2000 (home2000)
看板ASM
標題[問題] 8051組語 精準控制IO時間
時間Tue May 15 02:26:44 2012
各位板上大家好,
再用組語寫8051碰到一些問題..
我用89c2051 震盪器為12MHz
是這樣的
小弟的認知是每個指令有固定的機械週期
例如:mov P1,#0FFH;機械週期為2us (12MHz震盪器)
因此..
使用每個機械週期的方式,去寫IO腳的PWM頻率跟責任週期
第一個程式碼
------------------
loop1:
MOV P1,#0FFH; (t_on=2us)
MOV R6,#2; (t_on=2us)
CALL D1; (t_on=2+R6*(2+2)+2=12us)
MOV P1,#000H; (t_off=2us)
JMP loop1 (t_off=2us)
D1:
MOV R7,#1;
DJNZ R6,D1;
RET;
------------------
實際用示波器去看t_on=16us t_off=4us 很準確
但在改了D1迴圈後,計算與實際量測不符
------------------
D1:
MOV R7,#1;
D2:
DJNZ R6,D2;
DJNZ R7,D1;
RET;
------------------
出來的結果少1us
這延遲時間副程式,要怎麼精準達到時間控制.?
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.118.220.69
1F:→ kdjf:你算對的有給算法,算錯的反而沒給,怎麼幫你看啦 XD 05/15 08:33
2F:推 wuliou:通常要精準控制時間都是直接用晶片內的timer來寫的... 05/16 20:44