这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » 2052AD,PWM 2052AD PWM频率最高能做到多少?

共7条 1/1 1 跳转至

2052AD,PWM 2052AD PWM频率最高能做到多少?

院士
2006-09-17 18:14:16     打赏
2052AD,PWM 2052AD PWM频率最高能做到多少?



关键词: 2052AD     频率     高能     做到     多少    

院士
2006-12-22 22:43:00     打赏
2楼
问 想用PWM但是不知道2052AD PWM频率最高能做到多少?谢谢! 1: Fosc / 256Fosc / 256 2: 谢谢姚工谢谢姚工!! 3: wxn523你好阿,请问你现在在用2052ad的,你的PWM最大输出频率真的如stcmcu二楼的说法可以达到
Fosc / 256 吗?

4: 可以,真的可以, stcmcu不骗人的 5: 早有网友答复您: stcmcu没骗您答GT2000网友,被您害的又做了一次 0+0 = 0 的工作,现请您放心使用
您质疑我们 PWM 问题的帖子,
---早有网友答复您: stcmcu没骗您
---我早有答复,参考 STC12C2052AD系列单片机用户手册(2006-8-7),第xx页

所以我们认为我们已经答复的够清楚了,不想讲"肯定是您错了"

我们是没有时间看大伙的程序的,所以开此坛的目的
===大家互相帮忙,基本上我们只是起一个引导的作用

我们原则上在一个贴子上只能花5分钟,解决不了,就放弃

幸好,广大网友几乎多互相帮助解决了
但您此帖,好象大家多知道您错了,也不肯贴个程序给您
我只好利用周末再次测试了一次,完全达到要求
18,432,000Hz / 256 = 72,000Hz

========以下程序费时 30分钟,验证完全正确=========================

;晶振频率 Fosc = 18.432MHz,在P3.7输出72KHz 方波
;------------------------------------------------------------------------------
;声明 STC12C2052AD和STC12C5410AD系列 MCU 特殊功能寄存器地址
AUXR     EQU   8EH

CH       EQU   0F9H             ;PCA 计数器高8位。
CL       EQU   0E9H             ;PCA 计数器低8位。

;------------------------
CCON     EQU   0D8H             ;PCA 控制寄存器。


CR       EQU   CCON.6           ;1:允许 PCA 计数器计数, 必须由软件清0。
CF       EQU   CCON.7            ;PCA计数器溢出(CH,CL由 FFFFH 变为 0000H)标志,
                                ;PCA计数器溢出后由硬件置位,必须由软件清0。
;------------------------
CMOD     EQU   0D9H             ;PCA 工作模式寄存器。
;CMOD.7     CIDL: idle 状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。

;CMOD.2     CPS1: PCA 计数器计数脉冲源选择位 1。
;CMOD.1     CPS0: PCA 计数器计数脉冲源选择位 0。
;           CPS1   CPS0
;            0      0    外部晶体频率/12。
;            0      1    外部晶体频率/2。
;            1      0    Timer 0 溢出脉冲,
;                        Timer 0 还可通过 AUXR寄存器设置成工作在 12T 或 1T 模式。
;            1      1    从 ECI/P3.4 脚输入的外部时钟。

;CMOD.0     ECF: PCA计数器溢出中断允许位, 1--允许 CF(CCON.7) 产生中断。
;------------------------

CCAP0H   EQU   0FAH             ;PCA 模块0的捕捉/比较寄存器高 8 位。
CCAP1H   EQU   0FBH             ;PCA 模块1的捕捉/比较寄存器高 8 位。


CCAP0L   EQU   0EAH             ;PCA 模块0的捕捉/比较寄存器低 8 位。
CCAP1L   EQU   0EBH             ;PCA 模块1的捕捉/比较寄存器低 8 位。

;------------------------
PCA_PWM0 EQU   0F2H             ;PCA 模块0 PWM 寄存器。
PCA_PWM1 EQU   0F3H             ;PCA 模块1 PWM 寄存器。


;PCA_PWMn:    7      6      5      4      3      2      1      0
;             -      -      -      -      -      -    EPCnH  EPCnL
;B7-B2: 保留
;B1(EPCnH): 在 PWM 模式下,与 CCAPnH 组成 9 位数。
;B0(EPCnL): 在 PWM 模式下,与 CCAPnL 组成 9 位数。
;------------------------

CCAPM0   EQU   0DAH             ;PCA 模块0的工作模式寄存器。
CCAPM1   EQU   0DBH             ;PCA 模块1的工作模式寄存器。

;CCAPMn:    7      6      5      4      3      2      1      0
;           -    ECOMn  CAPPn  CAPNn  MATn   TOGn   PWMn   ECCFn
;
;ECOMn = 1:允许比较功能。
;CAPPn = 1:允许上升沿触发捕捉功能。
;CAPNn = 1:允许下降沿触发捕捉功能。
;MATn  = 1:当匹配情况发生时, 允许 CCON 中的 CCFn 置位。
;TOGn  = 1:当匹配情况发生时, CEXn 将翻转。
;PWMn  = 1:将 CEXn 设置为 PWM 输出。
;ECCFn = 1:允许 CCON 中的 CCFn 触发中断。
;ECOMn  CAPPn  CAPNn  MATn  TOGn  PWMn  ECCFn
;  0      0      0     0     0     0     0   00H 未启用任何功能。
;  x      1      0     0     0     0     x   21H 16位CEXn上升沿触发捕捉功能。
;  x      0      1     0     0     0     x   11H 16位CEXn下降沿触发捕捉功能。
;  x      1      1     0     0     0     x   31H 16位CEXn边沿(上、下沿)触发捕捉功能。
;  1      0      0     1     0     0     x   49H 16位软件定时器。
;  1      0      0     1     1     0     x   4DH 16位高速脉冲输出。
;  1      0      0     0     0     1     0   42H 8位 PWM
;------------------------------------------------------------------------------
LED_MCU_START       EQU  P1.7
Timer0_Reload_1     EQU  0FFH  ;Timer0 自动重装数 = 255, 计一个脉冲就溢出
PWM_PULSE_WIDTH     EQU  080H  ;数字越大脉宽越窄(占空比越小),P3.7 的 LED 越亮。
;------------------------------------------------------------------------------
    ORG   0000H    
    LJMP  MAIN

;------------------------------------------------------------------------------
    ORG   0050H
MAIN:
    CLR   LED_MCU_START         ;点亮 MCU 开始工作指示灯
    MOV   SP, #7FH
    ACALL Timer0_Initiate       ;初始化 T0
    ACALL PWM_Initiate          ;初始化 PCA
WAIT:    
    SJMP  WAIT

;------------------------------------------------------------------------------
Timer0_Initiate:
;初始化 T0, 其溢出脉冲作 PCA 计数器(CH,CL)的时钟源
    MOV   TMOD, #02H             ;设置定时器0 为自动重装工作模式
    MOV   TH0, #Timer0_Reload_1   ; 0FFH
    MOV   TL0, #Timer0_Reload_1   ; 0FFH

    ;*********************************************************
    ORL  AUXR, #10000000B    ;定时器0工作在1T模式
    ;*********************************************************
    SETB  TR0                    ;启动定时器0
    RET                           
;------------------------------------------------------------------------------
PWM_Initiate:

    MOV   CMOD, #00000100B ;PCA/PWM 时钟源为 定时器0 (T0) 的溢出率
    MOV   CCON, #00H       ;CF = 0,清0 PCA 计数器溢出中断请求标志位
                           ;CR = 0, 不允许 PCA 计数器计数
                           ;清0 PCA 各模块中断请求标志位,如 CCF1,CCF0
    MOV   CL, #00H         ;清0 PCA 计数器
    MOV   CH, #00H
;-------------------------
;设置模块0为 8 位 PWM 输出模式, PWM 无需中断支持。脉冲在P3.7(第11脚)输出
    MOV   CCAPM0, #42H          ; 设置模块0为 8 位 PWM输出模式
    MOV   CCAP0L, #PWM_PULSE_WIDTH ;080H
    MOV   CCAP0H, #PWM_PULSE_WIDTH ; 080H
    SETB  CR               ;启动 PCA 计数器(CH,CL)计数
    RET
;------------------------------------------------------------------------------
    END



高工
2022-08-20 10:47:07     打赏
3楼

感谢分享


专家
2022-08-20 10:53:40     打赏
4楼

感谢分享


专家
2022-08-20 11:12:22     打赏
5楼

学习


专家
2022-08-20 11:38:17     打赏
6楼

参考和学习


高工
2022-08-20 18:05:30     打赏
7楼

参考和学习


共7条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]