用于汽车遥控的Ev1527的pic单片机软件接收解码程序,密
ÓÃÓÚÆû?µÒ??صÄEv1527µÄpicµ?Æ??úÈí?þ?ÓÊÕ?âÂë?ÌÐò??ÃÜÂë?ÉÓÃI2C×ÜÏß??
Ê??æÔÚEEPROMÖÐ
LIST P=16f57
#INCLUDE "p16F5X.INC"
__CONFIG _CP_OFF&_WDT_OFF&_XT_OSC ;˵Ã??ºSCL?Óµ?Æ??ú RC0
; : SDA?Óµ?Æ??ú RC1 ;------------------------------------------------------------
;?Ä?æÆ???Òå ;------------------------------------------------------------
BY_COUNT EQU 14H ;I2C COUNT_T0 EQU 12H COUNT_T1 EQU 13H
COUNT EQU 11H
STATUS EQU 3H
PORTB EQU 6H
PORTC EQU 7H
EEPROM EQU 08H
ADDR EQU 09H
BUFIN EQU 0AH
BUFOUT EQU 0BH
SLAVE EQU 0CH
TXBUF EQU 0DH
BIT EQU 0EH
DLY1 EQU 0FH
DLY2 EQU 10H
;******************************************
FLAG EQU 20H
IN_DATA_0 EQU 19H
IN_DATA_1 EQU 1AH
IN_DATA_2 EQU 1BH
COUNTER0 EQU 15H ;?ÆÊýÆ?
COUNTER1 EQU 16H
COUNTER2 EQU 17H
COUNTER3 EQU 18H
CAR_STATUS EQU 1CH ;
W_SHADOW EQU 1DH ;º?Êýµ?ÓÃÊ???ËÍ?ÎÊý COUNTER EQU 1EH
DATA1 EQU 1FH ;??ÁôËÄÎ????üÐÅÏ?
DEVICE_W EQU B'10100000' ;
DEVICE_R EQU B'10100001' ;
ADR_LOCK EQU 0x00 ;?æ??Æ?ËøÃÅÖ?ÁîÈë?Ú ADR_UNLOCK EQU 0x10 ;?æ??Æ??ªÃÅÖ?ÁîÈë?Ú
DATA_2 EQU B'11001111'
DATA_1 EQU B'00100111'
DATA_U EQU B'10111000'
DATA_L EQU B'10110100'
;??Ϊ??Âë ÓëÉÏÎ??úÍ?ÐÅ
COMC_LOCK EQU B'11110111' ;?ªËøÖ?Áî 00001000B
COMC_UNLOCK EQU B'11110001' ;ËøÃÅÖ?Áî 00001110B
COMC_RELAY EQU B'11110010' ;?̵çÆ?Ö?Áî 00001101B
PORTA_S EQU B'11110001'
DI EQU 7
DO EQU 6
SDA EQU 1
SCL EQU 0
ACKF EQU 0
;--------------------------------------------------------------
;??Òå?Ü?Å
;-------------------------------------------------------------
#define STUDY PORTC,6
#define SIGNAL PORTC,3
#define LIGHT PORTC,5
ORG 00H
GOTO INT_INIT
;**********************
BSTART
BSF PORTC,SDA
BSF PORTC,SCL
MOVLW B'11001000'
TRIS PORTC
NOP
NOP
NOP
NOP
NOP
NOP
BCF PORTC,SDA
NOP
NOP
NOP
NOP
NOP
BCF PORTC,SCL
NOP
NOP
RETLW 0
;********************** BSTOP
BCF PORTC,SDA
MOVLW B'11001000'
TRIS PORTC
BCF PORTC,SDA
NOP
NOP
NOP
BSF PORTC,SCL
NOP
NOP
NOP
BSF PORTC,SDA
NOP
NOP
BCF PORTC,SCL
NOP
NOP
RETLW 0
;********************** TX
MOVLW D'8'
MOVWF BIT
TXLP BCF EEPROM,DO
BT BSF EEPROM,DO
CALL BITOUT
RLF TXBUF,1
DECFSZ BIT,1
GOTO TXLP
CALL BITIN
BTFSC EEPROM,DI
BSF PORTC,ACKF
RETLW 0
;************************ RX
CLRF BUFIN
MOVLW D'8'
MOVWF BIT
BCF STATUS,0 RXLP RLF BUFIN,1
BCF BUFIN,0
CALL BITIN
BTFSC EEPROM,DI
BSF BUFIN,0
DECFSZ BIT
GOTO RXLP
NOP
RETLW 0
;********************** BITOUT
MOVLW B'11001000'
tris PORTC
BTFSS EEPROM,DO
GOTO BITLOW
BSF PORTC,SDA
GOTO CLKOUT BITLOW BCF PORTC,SDA CLKOUT BSF PORTC,SCL
NOP
NOP
NOP
NOP
BCF PORTC,SCL
RETLW 0
;********************** BITIN
BSF EEPROM,DI
MOVLW B'11001010'
TRIS PORTC
BSF PORTC,SCL
NOP
NOP
NOP
NOP
NOP
BTFSS PORTC,SDA
BCF EEPROM,DI
BCF PORTC,SCL
RETLW 0
;---------------------------------
;ÑÓÊ?1s
;---------------------------------`
DELAY_1S: ;ÑÓÊ?1s
MOVLW 04H ;3+1
MOVWF COUNTER1
MOVLW 0AH ;10
MOVWF COUNTER2
MOVLW 031H ;49
MOVWF COUNTER3
;49*5+(256*5+5)*10+[(256*5+5)*256+5]*3+10=1,000,000us
DELAY_1S_WAIT
NOP
NOP
DECFSZ COUNTER3,F
GOTO DELAY_1S_WAIT
NOP
NOP
DECFSZ COUNTER2,F
GOTO DELAY_1S_WAIT
NOP
CLRWDT
DECFSZ COUNTER1,F
GOTO DELAY_1S_WAIT
;DECFSZ COUNTER0,F
;GOTO DELAY_WAIT DELAY_RET
RETLW 0
;****************************************
DELAY_10MS
MOVLW D'13'
MOVWF DLY1
MOVLW 0FFH
MOVWF DLY2 LP0 DECFSZ DLY2,1
GOTO $-1
DECFSZ DLY1,1
GOTO $-5
RETLW 0
;********************************************
WR_EEPROM
BTFSC FLAG,1
GOTO OUT1
MOVLW B'00000000'
TRIS PORTC
CLRF PORTC
CLRF PORTC
MOVLW B'10100000'
MOVWF SLAVE
MOVLW 13H
MOVWF FSR ;IN_DATA_0µØÖ?
MOVLW B'10101100'
MOVWF BUFOUT
CLRF ADDR
CALL BSTART
MOVF SLAVE,0
MOVWF TXBUF
CALL TX
MOVF ADDR,0
MOVWF TXBUF
CALL TX
MOVF INDF,0
MOVWF TXBUF
CALL TX
INCF FSR
MOVF INDF,0
MOVWF TXBUF
CALL TX
INCF FSR
MOVF INDF,0
MOVWF TXBUF
CALL BSTOP OUT1 RETLW 0
;*****************************************
XIANSHI
MOVLW 08H
MOVWF COUNT LOOP BTFSC BUFIN,7
BSF PORTC,5
CALL
BCF PORTC,5
CALL DELAY_1S
RLF BUFIN,1
DECFSZ COUNT,1
GOTO LOOP
BCF PORTC,5
RETLW 0
;********************************
;------------------------------------------------------------
;25ms?ÆÊ?×Ó?ÌÐò
;------------------------------------------------------------
DELAY_25
MOVLW 20H
MOVWF COUNT_T0
DELAY CLRWDT
MOVLW 0FFH
MOVWF COUNT_T1
DELAY1 DECFSZ COUNT_T1,1
GOTO DELAY1
DECFSZ COUNT_T0,1
GOTO DELAY
RETLW 0
;------------------------------------------------------------
;250ms?ÆÊ?×Ó?ÌÐò
;------------------------------------------------------------
DELAY_250
MOVLW 0F2H
MOVWF COUNT_T0
DELAY2 CLRWDT
MOVLW 0FFH
MOVWF COUNT_T1
DELAY21 NOP ;ÄÚ?ãÑ,??1024us
DECFSZ COUNT_T1,1
GOTO DELAY21
DECFSZ COUNT_T0,0
GOTO DELAY2
RETLW 0
;-------------------------------------------------------------
;Ö??ÌÐò?ªÊ?
;-------------------------------------------------------------
ORG 100H
INT_INIT
BANKSEL PORTC
MOVLW B'11001000'
TRIS PORTC
CLRF PORTC
CLRF FLAG
MOVLW 00H
MOVWF IN_DATA_0
MOVWF IN_DATA_1
MOVWF IN_DATA_2
MOVWF COUNTER
MOVWF COUNTER0
MOVWF COUNTER1
MOVWF COUNTER2
SIGNAL_SERVICE ;COUNTERX ?ÆÊýÆ??ÖÅä?ìÂÒ??ÐèÒªµ?Õû
BTFSS SIGNAL
GOTO SIGNAL_RET
CLRF COUNTER0
SIGNAL_SYN_HIGH
CLRWDT
BTFSS SIGNAL
GOTO SIGNAL_SYN_HIGH_TEST
INCF COUNTER0,F
BTFSS STATUS,Z
GOTO SIGNAL_SYN_HIGH
GOTO SIGNAL_RET
SIGNAL_SYN_HIGH_TEST ;210us
MOVLW D'30' ;30??Õâ?öÈ?ÖµÐèÒªÖØÐÂ?ÆËã
SUBWF COUNTER0,W
BNC SIGNAL_RET
CLRF COUNTER1
SIGNAL_SYN_LOW
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
GOTO $+1
CLRWDT
BTFSC SIGNAL
GOTO SIGNAL_RET
DECFSZ COUNTER1,F
GOTO SIGNAL_SYN_LOW
SIGNAL_SYN_LOW_WAIT
CLRWDT
BTFSS SIGNAL
GOTO SIGNAL_SYN_LOW_WAIT
MOVLW D'24'
MOVWF COUNTER2
SIGNAL_PERIOD_START
CLRF COUNTER0
CLRF COUNTER3
SIGNAL_PERIOD_LOW_WAIT
CLRWDT
GOTO $+1
BTFSC SIGNAL
GOTO SIGNAL_PERIOD_HIGH
INCFSZ COUNTER0,F
GOTO SIGNAL_PERIOD_LOW_WAIT
GOTO SIGNAL_RET
SIGNAL_PERIOD_HIGH ;6?öÊ?ÖÓÖÜÆÚ
CLRWDT
BTFSS SIGNAL
GOTO SIGNAL_PERIOD_VALUE_JUDGE
INCFSZ COUNTER3,F
GOTO SIGNAL_PERIOD_HIGH
GOTO SIGNAL_RET
SIGNAL_PERIOD_VALUE_JUDGE
MOVLW D'20' ;?ßµçÆ?Ð?ÓÚ120us ÍË?ö
SUBWF COUNTER3,W
BNC SIGNAL_RE BCF FLAG,0
MOVLW D'80' ;?ßµçÆ??óÓÚ120us Ð?ÓÚ480usÅÐ?ÏΪ??0??
SUBWF COUNTER3,W ; ?óÓÚ480us ÅÐ?ÏΪ??1??
BNC SIGNAL_PERIOD_VALUE_SAVE
BSF FLAG,0
SIGNAL_PERIOD_VALUE_SAVE
RLF IN_DATA_0,F
RLF IN_DATA_1,F
RLF IN_DATA_2,F
BCF IN_DATA_0,0
BTFSC FLAG,0
BSF IN_DATA_0,0
DECFSZ COUNTER2,F
GOTO SIGNAL_PERIOD_START
BSF LIGHT ;ÊÕµ?ÐźÅ??ÉÁ3ÏÂ
CALL DELAY_1S
BCF LIGHT
CALL DELAY_1S
BSF LIGHT
CALL DELAY_1S
BCF LIGHT
CALL DELAY_1S
BSF LIGHT
CALL DELAY_1S
BCF LIGHT
CALL DELAY_1S
MOVLW 0FH
ANDWF IN_DATA_0,W
MOVWF DATA1 ;ÆÁ?εÍ4Î?,??ÁôµØÖ?ÂëÖµ
MOVLW 0F0H
ANDWF IN_DATA_0,F ;ÆÁ?Î?ß4Î?,??Áô?üÂëÖµ ;-----------------------------------------------------------------
--------------------------
;?Ô?ÓÊÕµ?µÄÊý?Ý?øÐÐ??Àí??ÈôΪ?õÊ?????Ñ?Ï?????Ôò??Êý?Ý?æÈëEEPROM???
ñÔò???ø?ö?ªËø?òÕßÉÏËøÐźÅ
;-----------------------------------------------------------------
-------------------------
SIGNAL_PROCESSING
BCF PORTC,0
BCF PORTC,1
;BTFSC STUDY
;GOTO WRITE
MOVLW 40H
MOVWF FSR
MOVLW 03H ;3?Î?Á
MOVWF BY_COUNT
CLRF PORTC
MOVLW B'10100000'
MOVWF SLAVE
CLRF ADDR
CALL BSTART
MOVF SLAVE,0
MOVWF TXBUF
CALL TX
MOVF ADDR,0
MOVWF TXBUF
CALL TX
CALL BSTART
MOVLW B'10100001'
MOVWF TXBUF
CALL TX
RBYTE CALL RX
MOVF BUFIN,0
MOVWF INDF
INCF FSR
DECFSZ BY_COUNT,1
GOTO LOWACK
BSF EEPROM,DO
CALL BITOUT
CALL BSTOP
GOTO OUT2
LOWACK BCF EEPROM,DO
CALL BITOUT
CALL XIANSHI
GOTO RBYTE
NOP
OUT2 MOVLW B'11001000'
TRIS PORTC
BSF LIGHT ;?ÁÍêÉÁ1?Î
CALL DELAY_1S
BCF LIGHT
GOTO CHECK_AD WRITE CALL WR_EEPROM
BSF FLAG,1
BSF LIGHT
CALL DELAY_250
BCF LIGHT ;?øÈëÐ?EEPROM
GOTO EXIT ;----------------------------------------------------------- ;?È?ϵØÖ?Âë
;-----------------------------------------------------------
CHECK_AD MOVLW 40H
MOVWF FSR
MOVF IN_DATA_0,0
XORWF INDF,0
BTFSS STATUS,Z
GOTO EXIT
INCF FSR,1 MOVF IN_DATA_1,0
XORWF INDF,0
BTFSS STATUS,Z
GOTO EXIT
INCF FSR,1
MOVF IN_DATA_2,0
XORWF INDF,0
BTFSS STATUS,Z
GOTO EXIT ;µØÖ?Âë???Ô??Ìø?ö ;-----------------------------------------------------------------
-
;?ì?éÖ?Áî
;-----------------------------------------------------------------
--
GOTO OPEN
DONE MOVF DATA1,0
XORLW 00H
BTFSS STATUS,Z
GOTO OPEN
GOTO EXIT
OPEN BSF PORTC,5
CALL DELAY_250
BCF PORTC,5
CALL DELAY_250
BSF PORTC,5
CALL DELAY_250
BCF PORTC,5
EXIT
NOP
SIGNAL_RET
GOTO SERVICE_END SERVICE_END
NOP
NOP
BTFSC SIGNAL ;SIGNAL =1Íâ??ÓÐÐźÅÊäÈë
GOTO SIGNAL_SERVICE
NOP
NOP
NOP
NOP
NOP
NOP
GOTO SERVICE_END
END
本文档为【用于汽车遥控的Ev1527的pic单片机软件接收解码程序,密】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。