用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.doc

上传人:ni****g 文档编号:562770335 上传时间:2023-01-31 格式:DOC 页数:4 大小:32KB
返回 下载 相关 举报
用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.doc_第1页
第1页 / 共4页
用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.doc_第2页
第2页 / 共4页
用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.doc_第3页
第3页 / 共4页
用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

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

1、用STC12C5410单片机内置PWM模块产生可调频率的PWM信号.txt某天你一定会感谢那个遗弃你的人,感谢那个你曾深爱着却置之你不顾的人。做一个没心没肺的人,比什么都强。_舍不得又怎样到最后还不是说散就散。用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

2、中断还要打开相应的 ELVDI 位CH EQU 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

3、.7 CIDL: idle 状态时 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 E

4、QU 0FBH ;PCA 模块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 EQ

5、U 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 CAPPn

6、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 0 0

7、 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 2AH PWM_PULSE_WIDTH EQU 0ECH 设置占空比

8、 ORG 0000H LJMP MAIN ORG 0050HMAIN: MOV SP,#40H ACALL PCA_INITIATE ACALL TIMER0_INITIATE ACALL SET_F /对系统时钟进行分频。进行2分频MAIN_LOOP: MOV TH0,#TIMER0_RELOAD_1 MOV TL0,#TIMER0_RELOAD_1 MOV A,#PWM_PULSE_WIDTH MOV CCAP0H,A ACALL DELAY SJMP $ PCA_INITIATE: MOV CMOD,#1000100B MOV CCON,#00H MOV CL,#00H MOV CH,#

9、00H MOV CCAPM0,#42H MOV PCA_PWM0,#00H MOV CCAP0H,#PWM_PULSE_WIDTH SETB CR RETTIMER0_INITIATE: MOV TMOD,#02H MOV AUXR,#80H /将T0设置成1T模式 MOV TH0,#TIMER0_RELOAD_1 MOV TL0,#TIMER0_RELOAD_1 SETB TR0 RETSET_F: MOV CLK_DIV,#00000001B /对内部时钟进行2分频 RETDELAY: CLR A MOV R1,A MOV R2,A MOV R3,#80HDELAY_LOOP: NOP NOP NOP DJNZ R1,DELAY_LOOP DJNZ R2,DELAY_LOOP DJNZ R3,DELAY_LOOP RET END总结: 我用12C5410单片机内置的PWM模块产生可调频率的PWM信号,这里主要是运用了定时器0的溢出率来改变信号的周期. 这段程序的表现是:产生周期为20ms占空比为0.075的信号,也就是信号里的

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

当前位置:首页 > 生活休闲 > 社会民生

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