作者Deltaguita (贝纳颂)
看板ASM
标题[请益] 8051产生40K 38K 37K方波输出
时间Wed Apr 11 11:42:10 2012
各位前辈好 小弟想请教各位前辈一些问题
我想要使用标准8051产生40K 38K 37K方波输出
我目前可以单纯利用回圈以及NOP指令来达到精准输出
可是这样要个别写3种频率输出的副程式
现在我想改用计时器来精简程式,只要改变计时起始值就可以输出3种不同频率
只是输出有点问题 不管我怎麽调整 就是没办法调到我要的输出
a=246 得到41.7k
a=245 31.2K....
请问我该如何修改?
程式码如下:
;==============================================================
;P0. IR_output输出
;石英震荡器频率:12M HZ
;机械周期1/12 us ; 指令周期:1us
;$MOD51
IRoutput equ P2.0
org 000h ;rest
Jmp main
org 000bh ;TIME_IR1
Reti
main:
clr IRoutput
mov a,#246
mov TMOD,#02h
setb TR0
FOUT:
mov TL0,a ;2us
cpl IRoutput ;1us
RE: jbc TF0,FOUT ;2us
ajmp re
end
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.251.222.115
1F:推 wuonline:用硬体计数器做一个1k的基频,再用软体接力计数 04/11 13:13
请问怎麽做?
2F:推 lion21:1换振荡器2换高速51 04/11 13:14
请问有推荐的吗?
3F:推 ruemann:无法整除就没辨法直接得到精确的输出 04/11 14:30
4F:推 WolfLord:先求出所需的频率最小公因数,然後用他的倍数挑石英英体 04/11 16:14
目前一个指令约1us 25us
※ 编辑: Deltaguita 来自: 60.251.222.115 (04/12 09:33)
5F:推 ruemann:我想你弄错W大的意思了 04/12 13:57
6F:推 lion21:你的下一级不能容许一点误差吗? 04/12 23:21
7F:→ Deltaguita:我重写之後 解决了... 04/13 01:16