找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2274|回复: 6
打印 上一主题 下一主题
收起左侧

单片机6MHZ晶振,如何产生精确的300HZ方波?

[复制链接]
跳转到指定楼层
楼主
ID:757824 发表于 2020-6-29 21:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:584814 发表于 2020-6-30 07:56 | 只看该作者
都可以通过中断来解决
回复

使用道具 举报

板凳
ID:612392 发表于 2020-6-30 09:33 | 只看该作者
PWM即可
回复

使用道具 举报

地板
ID:332444 发表于 2020-6-30 10:40 | 只看该作者
本帖最后由 xianfajushi 于 2020-7-1 06:59 编辑

没说明是虾米蛋骗鸡如果是C52的话就是12T可以计算预填值给定时器去产生准确的信号,6/12=0.5,1/0.5=2,2*555=1110。1110*3=3330,65536-1/300*1000*1000/2.
回复

使用道具 举报

5#
ID:793586 发表于 2020-6-30 10:52 | 只看该作者
放一堆nop,放一个翻转,放一个跳转指令。绝对能精确到一个机器周期

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

6#
ID:793586 发表于 2020-6-30 10:53 | 只看该作者
ORG 0
JMP MAIN
ORG 0BH
JMP TIMER0ISR
MAIN:
MOV TMOD,#02H
MOV TH0,#06H
MOV TL0,#06H
SETB EA
SETB ET0
SETB TR0
JMP $
TIMER0ISR:
CPL P1.1
RETI
回复

使用道具 举报

7#
ID:213173 发表于 2020-6-30 16:47 | 只看该作者
#include<reg52.h>
sbit PMW=P1^0;
unsigned char i;
void main()
{
        TMOD= 0x02;
        TH0 = 0x98;
        TL0 = 0x98;//6MHz晶振
        TF0 = 0;
        TR0 = 1;
        EA=1;
        ET0=1;
        while(1);
}
void timer0()interrupt 1
{
        if(++i>=8)
        {
                i=0;
                PMW=~PMW;
        }
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表