用stc12c5410单片机内置pwm模块产生可调频率的pwm信号

上传人:子 文档编号:43835192 上传时间:2018-06-07 格式:DOC 页数:7 大小:31KB
返回 下载 相关 举报
用stc12c5410单片机内置pwm模块产生可调频率的pwm信号_第1页
第1页 / 共7页
用stc12c5410单片机内置pwm模块产生可调频率的pwm信号_第2页
第2页 / 共7页
用stc12c5410单片机内置pwm模块产生可调频率的pwm信号_第3页
第3页 / 共7页
用stc12c5410单片机内置pwm模块产生可调频率的pwm信号_第4页
第4页 / 共7页
用stc12c5410单片机内置pwm模块产生可调频率的pwm信号_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《用stc12c5410单片机内置pwm模块产生可调频率的pwm信号》由会员分享,可在线阅读,更多相关《用stc12c5410单片机内置pwm模块产生可调频率的pwm信号(7页珍藏版)》请在金锄头文库上搜索。

1、用用 STC12C5410STC12C5410 单片机内置单片机内置 PWMPWM 模块产生可调频率的模块产生可调频率的 PWMPWM 信号信号用 STC12C5410 单片机内置 PWM 模块产生可调频率的 PWM 信号-自己创作 2007 年 09 月 02 日 星期日 下午 02:25;定义 STC12C2052 系列 MCU 特殊功能寄存器IPH EQU 0B7H ;中断优先级高位寄存器EPCA_LVD EQU IE.6 ;PCA/LVD 中断允许位。;要打开 PCA 中断还要打开相应的 ECF,ECCF0,ECCF1 位;要打开 LVD 中断还要打开相应的 ELVDI 位CH EQU

2、 0xF9 ;PCA 计数器高 8位。CL EQU 0xE9 ;PCA 计数器低 8位。;-CCON EQU 0D8H ;PCA 控制寄存器。CCF0 EQU CCON.0 ;PCA 模块 0 中断标志, 由硬件置位, 必须由软件清 0。CCF1 EQU CCON.1 ;PCA 模块 1 中断标志, 由硬件置位, 必须由软件清 0。CR EQU CCON.6 ;1:允许 PCA 计数器计数, 必须由软件清 0。CF EQU CCON.7 ;PCA 计数器溢出标志,由硬件或软件置位,必须由软件清 0。;-CMOD EQU 0D9H ;PCA 工作模式寄存器。;CMOD.7 CIDL: idle

3、状态时 PCA 计数器是否继续计数, 0: 继续计数, 1: 停止计数。;CMOD.2 CPS1: PCA 计数器脉冲源选择位 1。;CMOD.1 CPS0: PCA 计数器脉冲源选择位 0。; CPS1 CPS0; 0 0 内部时钟, fosc/12。; 0 1 内部时钟, fosc/2。; 1 0 Timer0 溢出。; 1 1 由 ECI/P3.4 脚输入的外部时钟。;CMOD.0 ECF: PCA 计数器溢出中断允许位, 1-允许 CF(CCON.7) 产生中断。;-CCAP0H EQU 0FAH ;PCA 模块 0 的捕捉/比较寄存器高 8 位。CCAP1H EQU 0FBH ;PC

4、A 模块 1 的捕捉/比较寄存器高 8 位。CCAP2H EQU 0FCH ;PCA 模块 2 的捕捉/比较寄存器高 8 位。CCAP3H EQU 0FDH ;PCA 模块 3 的捕捉/比较寄存器高 8 位。CCAP0L EQU 0EAH ;PCA 模块 0 的捕捉/比较寄存器低 8 位。CCAP1L EQU 0EBH ;PCA 模块 1 的捕捉/比较寄存器低 8 位。CCAP2L EQU 0ECHCCAP3L EQU 0EDH;-PCA_PWM0 EQU 0F2H ;PCA 模块 0 PWM 寄存器。PCA_PWM1 EQU 0F3H ;PCA 模块 1 PWM 寄存器。PCA_PWM2 E

5、QU 0F4HPCA_PWM3 EQU 0F5H;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 的工作模式寄存器。CCAPM2 EQU 0DCHCCAPM3 EQU 0DDH;CCAPMn: 7 6 5 4 3 2 1 0; - ECOMn C

6、APPn 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 0x00 未启用任何功能。; x 1 0 0

7、 0 0 x 0x21 16 位 CEXn 上升沿触发捕捉功能。; x 0 1 0 0 0 x 0x11 16 位 CEXn 下降沿触发捕捉功能。; x 1 1 0 0 0 x 0x31 16 位 CEXn 边沿(上、下沿)触发捕捉功能。; 1 0 0 1 0 0 x 0x49 16 位软件定时器。; 1 0 0 1 1 0 x 0x4d 16 位高速脉冲输出。; 1 0 0 0 0 1 0 0x42 8 位 PWM。AUXR EQU 8EH /1T 模式 特殊寄存器。CLK_DIV EQU 0C7H /时钟分频寄存器TIMER0_RELOAD_1 EQU 2AHPWM_PULSE_WIDTH

8、 EQU 0ECH 设置占空比ORG 0000HLJMP MAINORG 0050HMAIN:MOV SP,#40HACALL PCA_INITIATEACALL TIMER0_INITIATEACALL SET_F /对系统时钟进行分频。进行 2 分频MAIN_LOOP:MOV TH0,#TIMER0_RELOAD_1MOV TL0,#TIMER0_RELOAD_1 MOV A,#PWM_PULSE_WIDTHMOV CCAP0H,AACALL DELAYSJMP $PCA_INITIATE:MOV CMOD,#1000100BMOV CCON,#00HMOV CL,#00HMOV CH,#

9、00HMOV CCAPM0,#42HMOV PCA_PWM0,#00HMOV CCAP0H,#PWM_PULSE_WIDTHSETB CRRETTIMER0_INITIATE:MOV TMOD,#02HMOV AUXR,#80H /将 T0 设置成 1T 模式MOV TH0,#TIMER0_RELOAD_1MOV TL0,#TIMER0_RELOAD_1SETB TR0RETSET_F:MOV CLK_DIV,#00000001B /对内部时钟进行 2 分频RETDELAY:CLR AMOV R1,AMOV R2,AMOV R3,#80HDELAY_LOOP:NOPNOPNOPDJNZ R1,DELAY_LOOPDJNZ R2,DELAY_LOOPDJNZ R3,DELAY_LOOPRETEND总结: 我用 12C5410 单片机内置的 PWM 模块产生可调频率的PWM 信号,这里主要是运用了定时器 0 的溢出率来改变信号的周期.这段程序的表现是:产生周期为 20ms 占空比为 0.075的信号,也就是信号里的高电平宽度是 1.5ms,低电平宽度是 18.5ms.我将 T0 设置为 1T 模式,并且还对整个系统时钟进行分频.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号