作者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