找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2025|回復(fù): 4
打印 上一主題 下一主題
收起左側(cè)

我要輸出100HZ方波,用單片機(jī)定時器0溢出作為PCA的輸入源,可怎么也書不出100HZ方波

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:169891 發(fā)表于 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初始化函數(shù),初始占空比為0
{
        AUXR  =   0x80;        // 定時器T0速度是8051單片機(jī)定時器速度的12倍,即不分頻
        TMOD  =   0x01;        // T0 16位定時器/計數(shù)器 0000 0001
        TH0 = Pca_Sys_Clock / 256;        //Timer0 Load
        TL0 = Pca_Sys_Clock % 256;
        TF0 = 0;                //清除TF0標(biāo)志
        ET0 = 1;                //Timer0 Interrupt Enable
        CMOD=0x04;         //0000 0100 空閑時不計數(shù),不產(chǎn)生中斷,時鐘源為定時器T0
        CCAPM1=0x42; //0100 0010,比較模式  PWM P3.5
        CL=0x00;                //PCA計數(shù)器清零
        CH=0x00;
        CCAP1L = 256-(256*50/100);                              
   CCAP1H = 256-(256*50/100); //占空比為50
        CR = 1;          //開啟PCA計數(shù)器
        TR0 = 1;                //Timer0 Run
        EA = 1;                        //打開總中斷
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:491577 發(fā)表于 2022-4-2 14:41 | 只看該作者
簡單的問題復(fù)雜化了,輸出方波直接用定時器就好了,定時器 設(shè)置5ms定時,中斷函數(shù)輸出方波。比如P0.0輸出方波,只要一句:P00=~P00;
回復(fù)

使用道具 舉報

板凳
ID:161164 發(fā)表于 2022-4-2 15:02 來自手機(jī) | 只看該作者
既然是1T單片機(jī),一定有時鐘輸出腳,直接弄個5ms的定時器就可輸出100Hz方波,搞什么PAC
回復(fù)

使用道具 舉報

地板
ID:213173 發(fā)表于 2022-4-2 16:47 | 只看該作者
要輸出固定頻率方波采用沙發(fā)建議為佳,如果要用PCA輸出可調(diào)頻率和可調(diào)占空比方波不需要開中斷。
  1. void Init()                                                //@12MHz
  2. {
  3.         AUXR |= 0x80;                                //定時器時鐘1T模式
  4.         TMOD &= 0xF0;                                //設(shè)置定時器自動重裝模式
  5.         Pca_Sys_Clock=65536-(12000000/256/設(shè)計頻率);//計算頻率重裝值
  6.         TL0 = Pca_Sys_Clock;                //設(shè)置定時初始值
  7.         TH0 = Pca_Sys_Clock>>8;                //設(shè)置定時初始值
  8.         TR0 = 1;                                        //定時器0開始計時

  9.         CCON = 0;                                        //初始化PCA控制寄存器
  10.         CL = 0;                                //復(fù)位PCA寄存器
  11.         CH = 0;                         //復(fù)位PCA寄存器
  12.         CMOD = 0x04;                                 //設(shè)置PCA時鐘源T0,PWM頻率=T0溢出率/256
  13.         CCAP1H=CCAP1L=256-(占空比*2.56);//計算占空比重裝值
  14.         CCAPM1 = 0x42;                                //PCA模塊1工作在8位PWM模式
  15.         CR = 1;                                                //PCA定時器開始工作
  16. }
復(fù)制代碼
回復(fù)

使用道具 舉報

5#
ID:123289 發(fā)表于 2022-4-2 17:41 | 只看該作者
100Hz,T=10ms
做個5ms的定時中斷,中斷后將P1.0求反,P1.0就輸出100Hz方波了,非常簡單。
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表