看板 ASM 關於我們 聯絡資訊
各位板上大家好, 再用組語寫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
kdjf:你算對的有給算法,算錯的反而沒給,怎麼幫你看啦 XD 05/15 08:33
wuliou:通常要精準控制時間都是直接用晶片內的timer來寫的... 05/16 20:44