单片机定时器问题

2019-03-24 18:16发布

用51单片机做个信号发生器,不知道频率怎么设。例如,要产生20HZ的频率,我的计算方法是:T=1/20=0.05s。即产生256个数的时间是0.05s,则产生每个电压的时间是0.05/256=195.3125us。那么所要赋的初值是(65536-195.3125)吗?晶振频率是12MHz。 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
chunyang
1楼-- · 2019-03-24 19:37
楼主的思路不对。要产生频率稳定的方波首先要考虑系统功能和资源,如果只有输出该方波的期间只可能有这一个任务,那么可以用纯软件延时法,即用一个循环或一组循环嵌套对在对一个或数个变量进行累加时执行一个固定执行周期的代码段,同时要考虑前述指令本身的执行时间。该方法的本质是使用指令执行时间进行凑数。
如果在输出方波时还可能有其它任务或有中断发生,那么就需要使用定时器中断,这里存在对定时器进行时间常数设置的问题,但也未必是255溢出,同样可以用循环变量累加法,而且也要考虑相关代码的执行时间。该法因中断响应的时间不一定是常数,所以可能存在轻微误差,看你要求的精度了。
Li_Lei
2楼-- · 2019-03-25 00:56
12M如果1t定时器时钟50ms时间:
50ms/(1/12M)=60000000
ahshmj
3楼-- · 2019-03-25 01:09
 精彩回答 2  元偷偷看……
吴鉴鹰.
4楼-- · 2019-03-25 06:23
不对,你要按照晶振的频率来算
dj狂人
5楼-- · 2019-03-25 09:19
用定时/计数器 做的话,比如方波占空比50%,那么T=0.05S的时候,用定时/计数器每过0.025S使某个引脚电平翻转

一周热门 更多>