[問題] 8051組語 精準控制IO時間

看板ASM (組合語言)作者 (home2000)時間13年前 (2012/05/15 02:26), 編輯推噓1(101)
留言2則, 2人參與, 最新討論串1/1
各位板上大家好, 再用組語寫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
你算對的有給算法,算錯的反而沒給,怎麼幫你看啦 XD
05/15 08:33, 1F

05/16 20:44, , 2F
通常要精準控制時間都是直接用晶片內的timer來寫的...
05/16 20:44, 2F
文章代碼(AID): #1FiKvd1F (ASM)
文章代碼(AID): #1FiKvd1F (ASM)