[問題] 8051組語 精準控制IO時間
各位板上大家好,
再用組語寫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
→
05/15 08:33, , 1F
05/15 08:33, 1F
推
05/16 20:44, , 2F
05/16 20:44, 2F
ASM 近期熱門文章
PTT數位生活區 即時熱門文章
3
11