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

M50462AP摇控器-PIC解码程序(已测试OK)

点击数:7186 次   录入时间:03-04 11:50:11   整理:http://www.55dianzi.com   PIC单片机
        MOVWF      CNT2            ;接收数据共16位,8位用户码,8位控制码
RCV5:
        CLRF       CNT3
        MOVLW      170             ;低电平大于256-170=86*10US=860US错误
        MOVWF      CNT0
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
        MOVLW      60
        MOVWF      CNT1            ;高电平大于256-60=196*10US=1.96MS错误
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-60=196*10US=1.96MS错误
        GOTO       LOOP
;-------------------------------------
COMPARE:
        MOVLW      170
        SUBWF      CNT0,1          ;CNT0的值减初始值等于实际低电平计数值
        MOVLW      60
        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则是错误的

        MOVLW      130             ;130*10=1.3MS
        SUBWF      CNT0,0
        BTFSC      STATUS,C        ;
        GOTO       COMPARE_H       ;时间大于1.3MS转去确定是否1
        BCF        FLAGS2,BITIN    ;时间在860US-1.3MS之间则是0
        GOTO       MOVDATA         ;送数
;----------------------------------------
COMPARE_H:
        MOVLW      150
        SUBWF      CNT0,0
        BTFSS      STATUS,C        ;
        GOTO       LOOP            ;小于150*10US=1.5MS,则错误
        MOVLW      230
        SUBWF      CNT0,0
        BTFSC      STATUS,C        ;
        GOTO       LOOP            ;大于230*10US=2.3MS,则错误
        BSF        FLAGS2,BITIN    ;时间在1.5MS-2.3MS之间则是1
;----------------------------------------
MOVDATA:
        RLF        CSR0A,1         ;将每一位移入相应寄存器
        RLF        CSR1A,1
        BCF        CSR0A,0
        BTFSC      FLAGS2,BITIN    ;接收当前位送入CSR0.0
        BSF        CSR0A,0
        DECFSZ     CNT2,1          ;是否接收完16位

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


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