单片机能否输出变化的高频信号?

2019-07-16 02:49发布

本帖最后由 benshao 于 2013-1-9 14:05 编辑

        我想通过写程序让单片机定时器0按顺序输出20khz、30khz、40khz、50khz、60khz的高频方波,占空比50%,每个频点持续5秒钟左右,能做到吗?想通过改变定时器初值来做,但这程序该怎么写?用switch 语句么?
         大家有没有好的想法?如果能实现这功能?
         开始时想改变tc0的值来实现,发现仿真出来的频率相差几倍,不行!       
                TH0=(65536-tc0)/256;                       TL0=(65536-tc0)%256;
                T0_out=~T0_out;
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
13条回答
benshao
1楼-- · 2019-07-16 08:26
有没有谁做过?
Tiger_Hu
2楼-- · 2019-07-16 11:16
 精彩回答 2  元偷偷看……
benshao
3楼-- · 2019-07-16 12:32
Tiger_Hu 发表于 2013-1-9 16:02
你用什么单片机?主频多少?输出频率精度要求多少?

stc89c52,12MHZ,精度不需要高,可以做到吗?
Tiger_Hu
4楼-- · 2019-07-16 15:37
这个单片执行单指令时间就要1微妙。60K用定时器做指令要非常简洁。若还要定时切换就更难。建议在要求精度的情况下,采用计算指令周期数的方法做。应该可以。
Tiger_Hu
5楼-- · 2019-07-16 18:30
不要求精度的情况
Tiger_Hu
6楼-- · 2019-07-16 20:02
while(1)
{
  for(i = 0; i < n20; i++);
  for(i = 0; i < n30; i++);
...
}

一周热门 更多>