ORG 0x000
CLRF PCLATH
GOTO MAIN;冗余
;-----------------------
;中断入口向量
;-----------------------
ORG 0X004
PUSH ;进栈
BANK0
CLRF PCLATH
GOTO INTSEV
;-----------------------
;中断服务子程序
;-----------------------
INTSEV NOP ;中断程序体
BTFSS T0IE ;判断是否允许TMR0外部计数中
GOTO BACK0;允许,则继续判断是否产生中断
BTFSC T0IF ;中断吗?
GOTO INT00
BACK0 BANK0
BCF T0IF ;退出中断
POP
RETFIE
;-----各个中断处理----
INT00 BANK0;检测过零点,-开启TMR1和设定其初值
BSF RESLED
NOP
MOVLW 0FFH;定时常数
MOVWF TMR0;重新装载TMR00
GOTO BACK0
MAIN BANK1
MOVLW B'00000111'
MOVWF ADCON1
MOVLW 0FFH
MOVWF TRISA;PORTA
BSF T0CS ;TMR0设置为外部上升沿脉冲计数
BCF T0SE
BSF GIE
BSF T0IE
BCF T0IF
MOVLW 0FFH
MOVWF TMR0 ;TMR0的计数初值
MAIN1 BANK0
CLRWDT
BSF PSA
BCF RESLED
GOTO MAIN1
经测试发现与RA,4脚的外部脉冲周期不一致。丢掉好些个计数脉冲
波形如
蓝色为RESLED
黄色为RA,4脚脉冲。 |