C8051F.rar
源代码在线查看: wcp0.asm
;参考程序 A:WCP0.ASM 程序功能:实现CP0比较器的上升沿中断/下降沿中断功能,比较
;器基准信号来自于VREF引脚.CP0比较器的上升沿中断鸣笛二次, CP0比较器的下降沿中
;断鸣笛1次,
$include (c8051f020.inc) ; Include register definition file.
ORG 0
AJMP main
ORG 5Bh ;比较器CP0上升沿中断入口
AJMP CPT0R_ISR;
ORG 53h ;比较器CP0下降沿中断入口
AJMP CPT0F_ISR
ORG 100H
main:
MOV WDTCN,#0DEH ;关看门狗
MOV WDTCN,#0ADH
LCALL PORT_Init ;初始化I/O口
LCALL CPT0_Init ;初始化比较器0
MOV P4,#0FH
SETB EA ;开总中断
SJMP $
;初始化比较器0
CPT0_Init:
ORL EIE1,#30H ;比较器CP0上升沿/下降沿中断允许,;允许CPRIF标志位(CPT0CN.5)的中断请求.
;允许CP0FIF标志位(CPT0CN.4)的中断请求.
MOV CPT0CN,#08FH ;使能中断模式,设定+/-10mv 回差,请除中断标志
ORL REF0CN,#03H ;使能内部参考电压
RET
;初始化I/O口
PORT_Init:
MOV XBR2,#40H
MOV XBR0 , #80H; //将CP0输出端引到P0.0脚
MOV XBR1 , #1H; //将CP1输出端引到P0.1脚
ORL P74OUT,#03H ;P4口推挽输出
;MOV P3MDOUT ,#20H; 使能P3.5推挽输出
RET
;比较器CP0上升沿中断服务子程序:CP0比较器的上升沿中断鸣笛二次,
CPT0R_ISR:;CLR EA
ANL CPT0CN,#0CFH ;清中断标志
MOV A,P4
CPL A
MOV P4,A
CLR P3.5
ACALL DELY ;鸣笛
ACALL DELY
SETB P3.5
ACALL DELY
CLR P3.5
ACALL DELY ;鸣笛
ACALL DELY
SETB P3.5
SETB EA
RETI
;比较器CP0下降沿服务子程序:CP0比较器的下降沿中断鸣笛1次,
CPT0F_ISR:;CLR EA
ANL CPT0CN,#0CFH ;清中断标志
MOV A,P4
CPL A
MOV P4,A
CLR P3.5
ACALL DELY ;鸣笛
SETB P3.5
SETB EA
RETI
DELY: MOV R7,#0
SS: MOV R6,#0
DJNZ R6,$
DJNZ R7,SS
RET
END