📄 pcacapture.asm
字号:
//-----------------------------------------------------------------------------
// 版权归新华龙电子公司所有
//-----------------------------------------------------------------------------
//
//文件名: PCAcapture.ASM
//
//编写人: LC
//
//编写时间:2005/03/10
//
//目标器件: C8051F02x
//
//编译工具: Silicon Laboratories IDE
//
//程序说明: 此程序测试PCA负边沿触发的捕捉方式,测试前将P0.0同P1.6脚用跳线短接,当P1.6
// 送出6000个负边沿,在PCA就触发6000次负边沿捕捉。
$include (c8051f020.inc) // SFR declarations
P16 EQU P1.6
ORG 0
AJMP main
ORG 4BH
AJMP PCA_ISR
ORG 0100H
//------------------------------------------------------------------------------------
// MAIN Routine
//------------------------------------------------------------------------------------
main:
;关看门狗
MOV WDTCN,#0deH
MOV WDTCN,#0adH
MOV DPTR,#00H
LCALL PORT_Init ;IO口初始化
LCALL PCA_Init ;PCA初始化
SETB EA
MOV R0,#240
MOV R1,#250
;P16向外发送250个脉冲
PAUSE:
SETB P16 ;置高电平
NOP ;延时
NOP
NOP
NOP
CLR P16 ;置低电平
DJNZ R1,PAUSE
MOV R1,#250 ;脉冲数
DJNZ R0,PAUSE
AJMP $
RET
;初始化I/O口
PORT_Init:
MOV XBR0,#08H ;CEX0-->P0.0
MOV XBR2,#40H ;使能交叉开关和弱上拉
ORL P1MDOUT,#40H ;使能P1.6推挽输出
RET
;初始化PCA
PCA_Init:
MOV EIE1,#08H ;使能PCA0中断
;MOV PCA0MD,#01H PCA定时器/计数器溢出中断允许
MOV PCA0L,#00H
MOV PCA0H,#00H
MOV PCA0CPM0,#11H ;PCA0负边沿捕捉方式,当CCF0=1时,允许辅捉/比较标志的中断申请
MOV PCA0CPL0,#00H
MOV PCA0CPH0,#20H
MOV PCA0CN,#40H ;允许PCA定时器/计数器
RET
;PCA中断子程序
PCA_ISR:
//CF = 0;
INC DPTR ;计中断次数
CLR CCF0 ;清匹配中断标志
RETI
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -