📄 wpca1pwm16.asm
字号:
;参考程序A:WPCA1pwm16.ASM程序实现PCA模块1的16位PWM输出,输出脚CEX1配置在P0.1脚。输出方波占空比为1/2
$include (c8051f020.inc) // SFR declarations
ORG 0
AJMP main
ORG 4BH
AJMP PCA_ISR
ORG 0100H
main: MOV WDTCN,#0deH ;关看门
MOV WDTCN,#0adH
LCALL PORT_Init ;初始化IO口
LCALL PCA_Init ;PCA初始化成16位脉宽调置方式
SETB EA ;开总中断
AJMP $
PORT_Init:;初始化I/O口
MOV XBR0,#20H ;CEX0-->P0.0,CEX0-->P0.1,CEX0-->P0.2,CEX0-->P0.3
MOV XBR2,#40H ;使能交叉开关和弱上拉
RET
PCA_Init:;初始化PCA
MOV EIE1,#08H ;允许PCA0中断
MOV OSCICN ,#017H ;使用内部振荡器,频率为16MHZ
MOV PCA0MD ,#09; PCA方式选择:使用系统时钟,允许 CCF1申请中断
MOV PCA0L,#00H ;设置定时器/计数器初值:0000H
MOV PCA0H,#00H
MOV PCA0CPM1,#0cbH ;PCA模块1为16位PWM方式,当CCF1=1时,允许中断申请
MOV PCA0CPL1,#00H ;设置捕捉/比较寄存器初值:8000h
MOV PCA0CPH1,#80H
MOV PCA0CN,#42H ;允许PCA模块1定时器/计数器, CCF1置1时产生中断.
RET
PCA_ISR:;PCA中断子程序
CLR CF ;清溢出中断标志
CLR CCF1 ;清匹配中断标志
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -