找回密码
 立即注册

QQ登录

只需一步,快速开始

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

我要输出100HZ方波,用单片机定时器0溢出作为PCA的输入源,可怎么也书不出100HZ方波

[复制链接]
跳转到指定楼层
楼主
ID:169891 发表于 2022-4-2 11:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
void Pwm_tm0_isr() interrupt 1
{TH0 = Pca_Sys_Clock / 256;        //Timer0 Load
        TL0 = Pca_Sys_Clock % 256;
}

void Pwm_Init() //PWM初始化函数,初始占空比为0
{
        AUXR  =   0x80;        // 定时器T0速度是8051单片机定时器速度的12倍,即不分频
        TMOD  =   0x01;        // T0 16位定时器/计数器 0000 0001
        TH0 = Pca_Sys_Clock / 256;        //Timer0 Load
        TL0 = Pca_Sys_Clock % 256;
        TF0 = 0;                //清除TF0标志
        ET0 = 1;                //Timer0 Interrupt Enable
        CMOD=0x04;         //0000 0100 空闲时不计数,不产生中断,时钟源为定时器T0
        CCAPM1=0x42; //0100 0010,比较模式  PWM P3.5
        CL=0x00;                //PCA计数器清零
        CH=0x00;
        CCAP1L = 256-(256*50/100);                              
   CCAP1H = 256-(256*50/100); //占空比为50
        CR = 1;          //开启PCA计数器
        TR0 = 1;                //Timer0 Run
        EA = 1;                        //打开总中断
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:491577 发表于 2022-4-2 14:41 | 只看该作者
简单的问题复杂化了,输出方波直接用定时器就好了,定时器 设置5ms定时,中断函数输出方波。比如P0.0输出方波,只要一句:P00=~P00;
回复

使用道具 举报

板凳
ID:161164 发表于 2022-4-2 15:02 来自手机 | 只看该作者
既然是1T单片机,一定有时钟输出腳,直接弄个5ms的定时器就可输出100Hz方波,搞什么PAC
回复

使用道具 举报

地板
ID:213173 发表于 2022-4-2 16:47 | 只看该作者
要输出固定频率方波采用沙发建议为佳,如果要用PCA输出可调频率和可调占空比方波不需要开中断。
  1. void Init()                                                //@12MHz
  2. {
  3.         AUXR |= 0x80;                                //定时器时钟1T模式
  4.         TMOD &= 0xF0;                                //设置定时器自动重装模式
  5.         Pca_Sys_Clock=65536-(12000000/256/设计频率);//计算频率重装值
  6.         TL0 = Pca_Sys_Clock;                //设置定时初始值
  7.         TH0 = Pca_Sys_Clock>>8;                //设置定时初始值
  8.         TR0 = 1;                                        //定时器0开始计时

  9.         CCON = 0;                                        //初始化PCA控制寄存器
  10.         CL = 0;                                //复位PCA寄存器
  11.         CH = 0;                         //复位PCA寄存器
  12.         CMOD = 0x04;                                 //设置PCA时钟源T0,PWM频率=T0溢出率/256
  13.         CCAP1H=CCAP1L=256-(占空比*2.56);//计算占空比重装值
  14.         CCAPM1 = 0x42;                                //PCA模块1工作在8位PWM模式
  15.         CR = 1;                                                //PCA定时器开始工作
  16. }
复制代码
回复

使用道具 举报

5#
ID:123289 发表于 2022-4-2 17:41 | 只看该作者
100Hz,T=10ms
做个5ms的定时中断,中断后将P1.0求反,P1.0就输出100Hz方波了,非常简单。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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