宏晶科技:www.MCU-Memory.com Mobile:13922805190(姚永平) Tel:0755-82948409 Fax: 0755-82944243
宏晶科技:专业单片机 / 存储器供应商 www.MCU-Memory.com STC12C5410AD 系列 1T 8051 单片机中文指南
75
;------------------------------------------------------------------------------
PCA_Initiate:
MOV CMOD, #10000000B ;PCA 在空闲模式下停止 PCA 计数器工作
;PCA 时钟源为 fosc/12
;禁止 PCA 计数器溢出(CH,CL 由 FFFFH 变为 0000H 时)中断
MOV CCON, #00H ;CF = 0,清 0 PCA 计数器溢出中断请求标志位
;CR = 0, 不允许 PCA 计数器计数
;清 0 PCA 各模块中断请求标志位,如 CCF1,CCF0
MOV CL, #00H ;清 0 PCA 计数器
MOV CH, #00H
;-------------------------
;设置模块 0
MOV CCAPM0, #11H ;设置 PCA 模块 0 下降沿触发捕捉功能。
; MOV CCAPM0, #21H ;如果送的是 #21h, 则 PCA 模块 0 为上升沿触发。
;-------------------------
;设置模块 1
MOV CCAPM1, #31H ;设置 PCA 模块 1 上升沿 / 下降沿均可触发的捕捉功能。
;-------------------------
SETB EPCA_LVD ;开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位
SETB EA ;开整个单片机所有中断共享的总中断控制位
SETB CR ;启动 PCA 计数器(CH,CL)计数
RET
;------------------------------------------------------------------------------
PCA_Interrupt:
PUSH ACC
PUSH PSW
JNB CCF0, Not_PCA0_Else_PCA1 ;如果 CCF0 不等于 1 就不是 PCA 模块 0 中断
;就直接去判是否是 PCA 模块 1 中断
;模块 0 中断服务程序
CPL LED_PCA_INT0 ;P1.6 LED 变化一次, 表示 PCA 模块 0 发生了一次中断
CLR CCF0 ;清 PCA 模块 0 中断标志
Not_PCA0_Else_PCA1:
JNB CCF1, PCA_Interrupt_Exit ;如果 CCF1 不等于 1 就不是 PCA 模块 1 中断
;就立即退出
;模块 1 中断服务程序
CPL LED_PCA_INT1 ;P1.5 LED 变化一次, 表示 PCA 模块 1 发生了一次中断
CLR CCF1 ;清 PCA 模块 1 中断标志
PCA_Interrupt_Exit:
POP PSW
POP ACC
RETI
;------------------------------------------------------------------------------
END
;------------------------------------------------------------------------------