久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

STC12C5201AD單片機的PWM功能的應用總結

作者:劉佳喝   來源:本站原創   點擊數:  更新時間:2014年03月16日   【字體:

52xxAD系列單片機的內部集成了兩路可編程計數陣列模塊(PCA),可用于軟件定時器、外部脈沖的捕捉、高速輸出和脈寬調制輸出(PWM)。

這里主要是對PWM輸出功能進行介紹。
首先要清楚與PCA/PWM應用有關的特殊功能寄存器

符號
描述
地址
位地址及其符號
復位值
B7
B6
B5
B4
B3
B2
B1
B0
CCON
PCA control register
D8H
CF
CR
 
 
 
 
CCF1
CCF0
00xx,xx00
CMOD
PCA mode register
D9H
CIDL
 
 
 
CPS2
CPS1
CPS0
ECF
0xxx,0000
CCAPM0
PCA module 0 mode register
DAH
 
ECOM0
CAPP0
CAPN0
MAT0
TOG0
PWM0
ECCF0
X000,0000
CCAPM1
PCA module 1 mode register
DBH
 
ECOM1
CAPP1
CAPN1
MAT1
TOG1
PWM1
ECCF1
X000,0000
CL
PCA base time low
E9H
 
 
 
 
 
 
 
 
0000,0000
CH
PCA base time high
F9H
 
 
 
 
 
 
 
 
0000,0000
CCAP0L
PCA module_0 captureregister  low
EAH
 
 
 
 
 
 
 
 
0000,0000
CCAP0H
PCA module0 capture register high
FAH
 
 
 
 
 
 
 
 
 
CCAP1L
PCA module_1 capture register low
EBH
 
 
 
 
 
 
 
 
0000,0000
CCAP1H
PCA module_1 capture register high
FBH
 
 
 
 
 
 
 
 
0000,0000
PCA_PWM0
PCA PWM mode auxiliary register 0
F2H
 
 
 
 
 
 
EPC0H
EPC0L
Xxxx,xx00
PCA_PWM1
PCA PWM mode auxilia
F3H
 
 
 
 
 
 
EPC1H
EPC1L
Xxxx,xx00

1、 PCA工作模式寄存器CMOD
CIDL:空閑模式下是否停止PCA計數的控制位
      當CIDL=0時,空閑模式下PCA計數器繼續工作
      當CIDL=1時,空閑模式下PCA計數器停止工作
CPS2\CPS1\CPS0:pca計數器脈沖源選擇控制位。
0     0     0     0,系統時鐘SYSCLK/12
0     0     1     1,系統時鐘SYSCLK/2
0     1     0     2,定時器0的溢出脈沖。由于定時器0可以工作在1T模式,所以可以達到計一個時鐘就溢出,從而達到最高頻率CPU工作時時鐘SYSCLOCK,通過改變定時器0的溢出率,可以實現可調頻率的PWM輸出。
0     1     1     3,ECI/P1.2(或P1.4)腳輸入的外部時鐘(最大速率=SYSCLK/2)
1     0     0     4,系統時鐘 SYSCLK
1     0     1     5,系統時鐘/4,sysclk/4
1     1     0     6, 系統時鐘/6,
1     1     1     7, 系統時鐘/8
2、 PCA控制寄存器CCON
CF:PCA計數器陣列溢出標志位。當PCA計數器溢出時,CF由硬件置位。如果CMOD寄存器的ECF位置位,則CF標志可用來產生中斷。CF位可通過硬件或軟件置位,但只可通過軟件清零。
CR:PCA計數器陣列運行控制位,該位通過軟件置位,用來啟動計數器陣列計數,通過軟件清零,用來關閉PCA計數器。
CCF1:pca模塊1中斷標志。當出現匹配或捕獲時該位由硬件置位,必須通過軟件清零
CCF0:PCA模塊0中斷標志。
3、 PCA比較/捕獲寄存器CCAPM0和CCAPM1
ECOM0:允許比較器功能控制位。為1,允許
CAPP0:正捕獲控制位。為1,允許
CAPN0:負捕獲控制位。為1,允許
MAT0:匹配控制位。
      為1時,PCA計數值與模塊的比較/捕獲寄存器的值的匹配將置位CCON寄存器的中斷標志位CCF0。
TOG0:翻轉控制位。當tog0=1時,工作在PCA高速輸出模式,PCA計數器的值與模塊的比較/捕獲寄存器的值的匹配將使CEX0腳翻轉。(CCP0/PCA0/PWM0/P1.3)
PWM0:脈沖調節模式
       當PWM0=1時,允許CEX0腳用作脈寬調節輸出(CCP0/PCA0/PWM0/P1.3)
ECCF0:時能CCF0中斷。使能寄存器CCON的比較/捕獲標志CCF0,用來產生中斷。
4、 PCA的16位寄存器——低8位CL和高8位CH
用于保存PCA的裝載值。
5、 PCA捕捉/比較寄存器——CCAPnL(低位字節)和CCAPnH(高位字節)
當PCA模塊用于捕獲或比較時,它們用于保存各個模塊的16位捕捉計數值;當PCA模塊用于PWM模式時,它們用來控制輸出的占空比。其中,n=0、1,分別對應模塊0和模塊1.復位值均為00H,對應的地址分別為:
CCAP0_EAH\ CCAP0H_FAH:
CCAP1_EBH\CCAP1H_FAH;
 
PCA模塊的工作模式設定表如下:
ECOMn  CAPPn   CAPNn   MATn   TOGn    PWMn   ECCFn      模塊功能
   0     0        0        0      0        0        0     無此操作
   1     0        0        0      0        1        0     8位PWM,無中斷
   1     1        0        0      0        1        1     8位PWM輸出,由低變高可產生中斷
   1     0        1        0      0        1         1    8位PWM輸出,由高變低可產生中斷
   1     1        1        0      0        1         1     8位PWM輸出,由低變高或者有高變低均可產生中斷
   X     1        0        0      0        0         x     16位捕獲模式,由CCPn/PCAn的上升沿觸發
   X     0        1        0      0        0         x     16位捕獲模式,由CCPn/PCAn的下降沿觸發
   X     1        1        0      0        0         x     16位捕獲模式,由CCPn/PCAn的跳變觸發
   1     0        0        1      0        0         x     16位軟件定時器
   1     0        0        1      1        0        x      16位高速輸出
6、     PCA的16位計數器——低8位CL和高8位CH
用于保存PCA的裝載值。
7、     PCA捕捉/比較寄存器CCAPnL(低位字節)和CCAPnH(高位字節)
當PCA 模塊用于捕獲或比較時,它們用于保存各個模塊的16位捕捉計數值;當PCA模塊用于PWM模式時,它們用來控制輸出的占空比。其中,n=0,1分別對應模塊0和模塊1.復位值均為00H。它們對應的地址分別為:
CCAP0L_EAH\   CCAP0H_FAH:模塊0的捕捉/比較寄存器
CCAP1L_EBH\   CCAP1H_FBH:模塊1的捕捉/比較寄存器。
脈寬調節模式
Plus width modulation 是一種使用程序來控制波形占空比、周期、相位波形的技術,在三相電機驅動,D/A轉換等場合有廣泛的應用。
STC12C5201AD系列的PCA模塊可以通過程序設定,使其工作于8位PWM模式。
由于所有的模塊共用僅有的PCA定時器,所有它們的輸出頻率相同。各個模塊的輸出占空比是獨立變化的,與使用的捕捉寄存器EPCnL,CCAPnL有關。當寄存器CL的值小于EPCnL,CCAPnL時,輸出為低;當寄存器CL的值大于等于EPCnL,CCAPnL的值時,輸出為高。當CL得值由FF變為00溢出時,EPCnH,CCAPnH的內容裝載到EPCnL,CCAPnL中,這樣就實現無干擾的更新PWM 。要使用PWM模式,模塊CCAPMn寄存器的PWMn和ECOMn位必須置位。
由于PWM是8位的,故PWM的頻率=PCA時鐘輸入源頻率/256
PCA時鐘輸入源可以從以下的幾種進行選擇:SYSCLK SYSCLY/2 SYSCLK/4 SYSCLK/6 SYSCLK/8 SYSCLK/12 定時器0的溢出,ECI/P3.4的輸入。
如果要實現可調頻率的PWM 輸出,可選擇定時器0的溢出率或則ECI腳的輸入作為PCA/PWM的時鐘輸入源
當EPCnL=0及CCAPnL-00H時,PWM固定輸出高
當EPCnL=1及CCAPnL=FFH時,PWM固定輸出低
當某個I/O口作為PWM使用時,改口的狀態
PWM之前口的狀態           PWM輸出時口的狀態
弱上拉/準雙向          強推挽輸出/強上拉輸出,要加輸出限流電阻1K-10K
強推挽輸出/強上拉輸出  強推挽輸出/強上拉輸出,要加輸出限流電阻1K-10K
僅為輸入/高阻           PWM無效
開漏                     開漏
下面便是STC手冊中的一個C語言例子
#include<reg51.h>
#include “intrins.h”
#define FOSC 12000000L
Typedef unsigned int WORD;
Typedef unsigned char BYTE;
sfr CCON=0xd8;//PCA control register
sbit CCF0=CCON^0;//PCA module_0 interrupt flag
sbit CCF1=CCON^1;//pca module_1 interrupt flag
sbit CR=CCON^6;//pca time run control bit
sbit CF=CCON^7;//PCA timer overflow flag
sfr CMOD=0xd9;//pca mode register
sfr CL=0xe9;//PCA base time low
sfr CH=0xf9;//PCA base time high
sfr CCAPM0=0XDA;//PCA module_0 mode register
sfr CCAP0L=0XEA;//PCA module_0 capture register low
sfr CCAP0H=0XFA;//PCA module_0 capture register high
sfr CCAPM1=0XDB;//PCA module_1 mode register
sfr CCAP1L=0xeb;//PCA module_1 capture register low
sfr CCAP1H=0XFB,//PCA module_1 capture register high
sfr PCAPWM0=0XF2;
sfr PCAPWM1=0XF3;
void main()
{
 CCON=0;//initial PCA control register
       //PCA timer stop running
        //clear CF flag
        //clear all module interrupt flag
CL=0;//reset PCA base timer
CH=0;
CMOD=0X02;//set PCA time clock source as fosc/2
                   //disable PCA timer overflow interrupt
CCAP0H=CCAP0L=0X80;//PWM0 port output 50% duty cycle sequare wave
CCAPM0=0X42;//PCA module_0 work in 8_bit PWM mode
            // and no PCA interrupt
CCAP1H=CCAP1L=0XFF;//pwm1 port output 0% duty cycle square wave
PCAPWM1=0X03;//
CCAPM1=0X42;//PCA module_1 work in 8_bit PWM mode and no PCA interrupt
CR=1;//PCA timer start run
While(1);
}
關閉窗口

相關文章

主站蜘蛛池模板: 午夜一级做a爰片久久毛片 精品综合 | 国产在线视频一区二区 | www.一区二区三区 | 欧美精选一区二区 | 美国黄色毛片 | 日本三级播放 | 国产成人免费视频网站高清观看视频 | 国产精品999 | 一区二区三区四区五区在线视频 | 一区二区三区欧美在线 | 国产在线小视频 | 国产免费又色又爽又黄在线观看 | 国产在线第一页 | 国产三级一区二区三区 | 97精品国产97久久久久久免费 | 精品国产31久久久久久 | www.国产 | 欧美成人一区二区三区 | 四虎在线观看 | 精品久久久久久亚洲综合网 | 久久99精品久久久久蜜桃tv | 国产黄色精品 | 美人の美乳で授乳プレイ | 久久高清 | av日韩精品 | 91久久精品视频 | 欧美黄色大片在线观看 | 国产精品成人一区二区三区夜夜夜 | 国产一区二区三区四区 | 久久国产一区 | 黄色综合 | 99热成人在线 | 国产成人a亚洲精品 | 国精久久| 欧美一区二区综合 | 国产日韩精品一区二区三区 | 免费一区二区三区 | 日韩在线播放第一页 | 精品欧美一区二区三区久久久 | 丝袜美腿一区 | 99爱视频 |