您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机SC1621摇控器-PIC单片机解码程序(已测试OK) 正文
SC1621摇控器-PIC单片机解码程序(已测试OK)

SC1621摇控器-PIC单片机解码程序(已测试OK)

点击数:7178 次   录入时间:03-04 11:33:32   整理:http://www.55dianzi.com   PIC单片机
        GOTO       LOOP           ;

        MOVLW       3             ;
        MOVWF      CNT1           ;3*256*10us
        CLRF       CNT2           ;
        CLRF       CNT0           ;
;*************************************************
RCV3:
        GOTO       $+1            ;每一个循环10US
        NOP
        BTFSS      PORTB,RMT
        INCF       CNT2,1
        BTFSC      PORTB,RMT
        CLRF       CNT2
        BTFSC      CNT2,3          ; 低电平大于8*10US=80US则为有效低电平,否则是一些干扰信号
        GOTO       RCV4
        DECFSZ     CNT0,1
        GOTO       RCV3
        DECFSZ     CNT1,1
        GOTO       RCV3
        GOTO       LOOP            ;高电平大于3*256*10US=7.68MS则是错误的
;**************************************************
RCV4:
        MOVLW      3
        SUBWF      CNT1,0          ;高电平小于1*256*10US=2.56MS则是错误的
        BTFSC      STATUS,C        ;
        GOTO       LOOP

        MOVLW      32
        MOVWF      CNT2            ;接收数据共32位,16位用户码,8位控制码加8位控制码的反码
RCV5:
        CLRF       CNT3
        MOVLW      170             ;低电平大于256-170=86*10US=860US错误
        MOVWF      CNT0
        MOVLW      56
        MOVWF      CNT1            ;高电平大于256-56=200*10US=2MS错误
RCV5_HI:
        GOTO       $+1
        NOP
        BTFSC      PORTB,RMT
        INCF       CNT3,1
        BTFSS      PORTB,RMT
        CLRF       CNT3
        BTFSC      CNT3,2          ;高电平大于8*10US=80US则为有效高电平
        GOTO       RCV6
        INCFSZ     CNT0,1
        GOTO       RCV5_HI         ;低电平大于860US则是错误的
        GOTO       LOOP
RCV6:
        CLRF       CNT3
RCV6_LO:
        GOTO       $+1
        NOP
        BTFSS      PORTB,RMT
        INCF       CNT3,1
        BTFSC      PORTB,RMT
        CLRF       CNT3
        BTFSC      CNT3,3          ;低电平大于10*8US=80US则是有效低电平
        GOTO       COMPARE
        INCFSZ     CNT1,1
        GOTO       RCV6_LO         ;高电平大于256-56=200*10US=2MS错误
        GOTO       LOOP
COMPARE:
        MOVLW      170
        SUBWF      CNT0,1          ;CNT0的值减初始值等于实际低电平计数值
        MOVLW      56
        SUBWF      CNT1,1          ;CNT1的值减初始值等于实际高电平计数值
        MOVFW      CNT1
        ADDWF      CNT0,1          ;将高低电平的计数加在一起并存入CNT0,通过比较高低电平总的时间来确定是1还是0
        BTFSC      STATUS,C        ;
        GOTO       LOOP            ;总的值大于255(即时间大于255*10US=2.55MS)则错误
        MOVLW      70
        SUBWF      CNT0,0
        BTFSS      STATUS,C        ;
        GOTO       LOOP            ;总的时间小于70*10US=700US则是错误的

上一页  [1] [2] [3] [4] [5] [6]  下一页


本文关键字:单片机  程序  PIC单片机单片机-工控设备 - PIC单片机