CLRF STATUS ;清状态寄存器口
BSF STATUS,RP0 ;BANK-1
;------------------------------------------------
MOVLW 0FH ;00001111设定:RB口不用上拉,分频器配给WDT
MOVWF OPTION_ ;分频比设为1:256
MOVLW 02H ;00000010转换结果左对齐,只选3个A/D通道RA0/AN0,RA1,RA3
MOVWF ADCON1 ;选择VDD和VSS作参考源
;------------------------------------------------
MOVLW 00H
MOVWF TRISC ;PORTC所有管脚设为输出
MOVLW 01H ;
MOVWF TRISB ;RB0=输入
MOVLW 0FFH ;
MOVWF TRISA ;
;------------------------------------------------
BCF STATUS,RP0 ;BANK-0
;------------------------------------------------
MOVLW 01001001B ;01001001选择:时钟时钟源为FOSC/8,允许ADC工作
MOVWF ADCON0 ;通道AN1,暂时不启动转换过程
BCF PIR1, ADIF ;清除A/D中断标志位
;------------------------------------------------
MOVLW 00H ;
MOVWF PORTC ;
MOVLW 0FFH ;
MOVWF PORTB ;
;*****************************************************
LOOP:
NOP ;
NOP ;
;*****************************************************
RCV:
BTFSC PORTB,RMT
GOTO LOOP ;是干扰退出
MOVLW 4
MOVWF CNT1 ;4*256*10us
CLRF CNT2
CLRF CNT0
RCV1: ;先检测引导码的9MS低电平
GOTO $+1 ;每一个循环10US
NOP ;
BTFSC PORTB,RMT ;
INCF CNT2,1 ;
BTFSS PORTB,RMT ;
CLRF CNT2 ;
BTFSC CNT2,3 ;高电平大于8*10US=80US则为有效高电平,否则是一些干扰信号
GOTO RCV2 ;
DECFSZ CNT0,1 ;
GOTO RCV1 ;
DECFSZ CNT1,1 ;
GOTO RCV1 ;
GOTO LOOP ;低电平大于4*256*10US=10.24MS则是错误脉冲
RCV2:
MOVLW 3
SUBWF CNT1,0 ;低电平小于2*256*10US=5.12MS则是错误脉冲
BTFSC STATUS,C ;
上一页 [1] [2] [3] [4] [5] [6] 下一页
上一篇:针对PIC微控制器的设计窍门