为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

ev1527发射

2017-09-17 29页 doc 54KB 84阅读

用户头像

is_731942

暂无简介

举报
ev1527发射ev1527发射 ev1527发射,pic接收的源程序 ;=============================================== ; Author : RATO (RT1527) RECEIVING PROGRAM ; Modify Date: 03-28-2001 Version: final_v1.0 ; Default : PIC16C57C Main clock = 4MHZ ;=============================================== ; P=16C5...
ev1527发射
ev1527发射 ev1527发射,pic接收的源程序 ;=============================================== ; Author : RATO (RT1527) RECEIVING PROGRAM ; Modify Date: 03-28-2001 Version: final_v1.0 ; Default : PIC16C57C Main clock = 4MHZ ;=============================================== ; P=16C57C ; PIC16C57 is the target processor #include "p16c5x.inc" ; Include header file ; ; Define Page Base-Address for Program-Memory used PAGE_0 equ 0x00 PAGE_1 equ H'0200' PAGE_2 equ H'0400' PAGE_3 equ H'0600' ;Define Reset Vectors PIC54 equ H'01FF' PIC55 equ H'01FF' PIC56 equ H'03FF' PIC57 equ H'07FF' ResetVector equ PIC57 ; Define Special Register INDF equ 0x00 RTCC equ 0x01 PCL equ 0x02 STATUS equ 0x03 ; F3 Reg is STATUS Reg. FSR equ 0x04 PORT_A equ 0x05 ; I/O Port-A Assignment PORT_B equ 0x06 ; I/O Port-B Assignment PORT_C equ 0x07 ; I/O Port-C Assignment ; Define STATUS Register Bits C equ 0x00 ; Carry Bit is Bit.0 of F3 DC equ 0x01 Z equ 0x02 ; Zero Bit is Bit.2 of F3 PD equ 0x03 TO equ 0x04 PA0 equ 0x05 ;16C5X Status bits PA1 equ 0x06 ;16C5X Status bits ; Define OPTION register bits PS0 equ 0x00 PS1 equ 0X01 PS2 equ 0x02 PSA equ 0x03 TOSE equ 0x04 TOCE equ 0x05 ;======Define======== W equ 0x00 F equ 0x01 null equ 0x00 ; #DEFINE CS PORTA,0 #DEFINE CLK PORTA,1 #DEFINE DIO PORTA,2 #DEFINE RFIN PORTA,3 ; #DEFINE LRNLED PORTB,5 #DEFINE LRNKEY PORTB,0 #DEFINE K0 PORTB,1 #DEFINE K1 PORTB,2 #DEFINE K2 PORTB,3 #DEFINE K3 PORTB,4 #DEFINE SP PORTB,6 ; #DEFINE STR PORTC,0 #DEFINE D_FF PORTC,1 #DEFINE CK PORTC,2 ; ;++++++++++++++++++++++++++++++++++++++++ ; Define BANK_0 Register for Program used. ;++++++++++++++++++++++++++++++++++++++++ JUMP_F equ 0x08 FLAG equ 0x09 #DEFINE KEYRP FLAG,7 #DEFINE RECERR FLAG,5 #DEFINE LRN_F FLAG,6 #DEFINE RE_LRN FLAG,4 #DEFINE TMP FLAG,2 ;------------------------ TCNT0 equ 0x0A TCNT10 equ 0x0B TCNT11 equ 0x0C BIT_CNT equ 0x0D DELAY_DATA equ 0x0E RTCNTL equ 0x0F RTCNTH equ 0x10 H_LEVEL equ 0x11 ; high pulse duration L_LEVEL equ 0x12 ; low pulse duration RECB33B40 equ 0x13 RECB25B32 equ 0x14 RECB17B24 equ 0x15 RECB09B16 equ 0x16 RECB01B08 equ 0x17 H_TIME equ 0x18 L_TIME equ 0X19 TEMP equ 0X1A R1 equ 0X1C R2 equ 0X1D TMP7 equ 0x1E OUTBYT equ 0x1F KEYFLAG EQU 0X1B DECR3340 EQU H_TIME DECR2532 EQU L_TIME DP_Index equ DELAY_DATA RD1 EQU BIT_CNT RD2 EQU R1 LD1 EQU R2 LD2 EQU DELAY_DATA R7 EQU BIT_CNT d0 EQU H_TIME d1 EQU L_TIME pd33d40 EQU R1 pd25d32 EQU R2 pd17d24 EQU OUTBYT pd09d16 EQU H_TIME pd01d08 EQU L_TIME catch_time EQU JUMP_F ADDR3340 EQU 0X30 ADDR2532 EQU 0X31 ADDR1724 EQU 0X32 ADDR0916 EQU 0X33 ADDR0108 EQU 0X34 DEC3340 EQU 0X35 DEC2532 EQU 0X36 ; ;----- EEPROM REGISTER DEFINE ------- TMP1 EQU H_LEVEL TMP2 EQU L_LEVEL EEPADDR EQU DELAY_DATA #DEFINE R1_FLAG JUMP_F,4 #DEFINE R2_FLAG JUMP_F,5 #DEFINE R3_FLAG JUMP_F,6 #DEFINE R4_FLAG JUMP_F,7 ; TRISBWR EQU B'11111000' TRISBRD EQU B'11111100' IDCODE EQU B'01001001' ;=============================================== ; PAGE-0 BASE-EEPADDR FOR PROGRAM MEMORY ;=============================================== ORG 0X00 GOTO RESET0 ;=============================================== TST_TIME0 BSF STATUS,PA0 CALL TST_TIME1 BCF STATUS,PA0 RETLW 00H ;=============================================== INIT_PRO INIT_PORT MOVLW B'00000110' ;Fop/128 to rtcc OPTION MOVLW B'00000000' TRIS PORTC CLRF PORTA MOVLW B'00000011' TRIS PORTB MOVLW B'00111100' MOVWF PORTB MOVLW B'1000' ;clr all output TRIS PORTA MOVLW TRISBRD TRIS PORTA MOVLW 0XFF MOVWF TMP7 MOVLW 0X02 MOVWF catch_time RETLW 00H ;=============================================== RESET0 CALL INIT_PRO ;after reset RESET_ALL CLRF TCNT0 CLRF KEYFLAG BCF TMP CLRF TEMP CLRF JUMP_F ;=============================================== CLRF RTCC KEYSCAN KEYSCAN_CO CLRF TCNT0 BTFSS LRNKEY GOTO $+3 BSF STATUS,PA0 GOTO TEST_LRN MOVLW 0X02 MOVWF catch_time BSF STATUS,PA0 GOTO RECEIVE0 SCEND GOTO KEYSCAN_CO ;************************************************ ORG 200H ;================================================ TST_TIME1 TST_RTCCP1 CLRWDT BTFSS RTCC,7 RETLW 00H BCF RTCC,7 INCF TCNT0,F INCFSZ TCNT10,F GOTO INC_RTIME2 INCF TCNT11,F INC_RTIME2 INCFSZ RTCNTL,F RETLW 00H INCF RTCNTH,F RETLW 00H ;----------------------------------------------- SENDC CLRWDT MOVLW B'11111000' ANDWF PORTA,F MOVLW TRISBWR S1 TRIS PORTA GOTO $+1 BSF CS BSF STATUS,C MOVLW .9 MOVWF BIT_CNT SENDC2 SKPC BCF DIO SKPNC BSF DIO GOTO $+1 RLF OUTBYT,F BSF CLK GOTO $+1 GOTO $+1 BCF CLK DECFSZ BIT_CNT,F GOTO SENDC2 BCF DIO BTFSC R1_FLAG GOTO SENDC_R1 BTFSC R2_FLAG GOTO SENDC_R2 BTFSC R3_FLAG GOTO SENDC_R3 GOTO SENDC_R4 ;------------------------------------------------ EECLEAR CLRF TMP1 CLRF TMP2 EEWRITE MOVLW 30H ;EEPROM WRITE ENABLE MOVWF OUTBYT CLRF JUMP_F BSF R1_FLAG GOTO SENDC SENDC_R1 BCF CS WRITE1 MOVFW EEPADDR MOVWF OUTBYT BSF OUTBYT,6 CLRF JUMP_F BSF R2_FLAG GOTO SENDC SENDC_R2 MOVLW .16 MOVWF BIT_CNT WRITE2 BTFSS TMP1,7 BCF DIO BTFSC TMP1,7 BSF DIO GOTO $+1 RLF TMP2,F BSF CLK GOTO $+1 RLF TMP1,F BCF CLK DECFSZ BIT_CNT,F GOTO WRITE2 BCF CS MOVLW TRISBRD TRIS PORTA BSF CS WRITE5 BTFSS DIO GOTO WRITE5 WRITE6 BCF CS CLRF JUMP_F BSF R3_FLAG GOTO SENDC SENDC_R3 BCF CS INCF EEPADDR,F RETLW 0H ;------------------------------------------------ EEREAD MOVFW EEPADDR MOVWF OUTBYT BSF OUTBYT,7 CLRF JUMP_F BSF R4_FLAG MOVLW TRISBRD GOTO SENDC SENDC_R4 MOVLW TRISBRD TRIS PORTA MOVLW .16 MOVWF BIT_CNT READ0 BSF CLK RLF TMP2,F BCF TMP2,0 BTFSC DIO BSF TMP2,0 BCF CLK RLF TMP1,F DECFSZ BIT_CNT,F GOTO READ0 BCF CS RETLW 0H ;=============================================== DELAY_150US MOVLW .43 DELAY_TP GOTO SHORT_DELAY DELAY_50US MOVLW .10 NOP SHORT_DELAY MOVWF DELAY_DATA DELAY_LP DECFSZ DELAY_DATA,F GOTO DELAY_LP RETLW 00H CHK_HI BCF RECERR BCF STATUS,C MOVLW .239 ADDWF H_LEVEL,W BTFSS STATUS,C GOTO CHK_LOW MOVLW .224 ADDWF H_LEVEL,W BTFSC STATUS,C GOTO REC_ERR SET_HI CLRF H_LEVEL CLRF L_LEVEL BSF STATUS,C TRANS_DATA RRF RECB33B40,F RRF RECB25B32,F RRF RECB17B24,F RRF RECB09B16,F RRF RECB01B08,F btfss catch_time,1 GOTO INC_CT movf RECB33B40,W movwf pd33d40 movf RECB25B32,W movwf pd25d32 movf RECB17B24,W movwf pd17d24 movf RECB09B16,W movwf pd09d16 movf RECB01B08,W movwf pd01d08 INC_CT INCF BIT_CNT,F RETLW 00H ;---------------------------- CHK_LOW MOVLW .251 ;===> _ ADDWF H_LEVEL,W ; _| |_________ BTFSS STATUS,C ; "8~A"--"18H~19H" GOTO REC_ERR ; LOW_BIT=" 5 ~ 12" ; HI_BIT ="24 ~ 30" MOVLW .244 ADDWF H_LEVEL,W BTFSC STATUS,C GOTO REC_ERR SET_LO CLRF L_LEVEL CLRF H_LEVEL BCF STATUS,C GOTO TRANS_DATA REC_ERR BSF RECERR RETLW 00H ;=============================================== RECEIVE0 CLRF TCNT0 RECEIVE CLRF RECB33B40 CLRF RECB25B32 CLRF RECB17B24 CLRF RECB09B16 CLRF RECB01B08 ;-------------------------------------- WAIT_SYNC CLRF BIT_CNT ;---------------------------- DATABIT0 CLRF L_LEVEL CLRF H_LEVEL DATABIT BTFSS RFIN GOTO DELAY_SYNC ADDLOP CLRWDT CALL TST_TIME1 CALL DELAY_50US CLRF L_LEVEL INCF H_LEVEL,F BTFSC RFIN GOTO ADDLOP MOVLW 0X01 XORWF H_LEVEL,W BTFSC STATUS,Z GOTO DATABIT MOVLW 0X02 XORWF H_LEVEL,W BTFSC STATUS,Z GOTO DATABIT ADLOP1 CLRWDT CALL TST_TIME1 CALL DELAY_50US INCF L_LEVEL,F MOVLW .150;======>SYNC=5.3ms,106 times ADDWF L_LEVEL,W BTFSC STATUS,C GOTO CHK_SYNC BTFSS RFIN GOTO ADLOP1 MOVLW 0X01 XORWF L_LEVEL,W BTFSC STATUS,Z GOTO DATABIT MOVLW 0X02 XORWF L_LEVEL,W BTFSC STATUS,Z GOTO DATABIT CALL CHK_HI BTFSC RECERR GOTO EXIT_RECEIVE GOTO DATABIT DELAY_SYNC CLRWDT CALL TST_TIME1 CALL DELAY_50US INCF L_LEVEL,F MOVLW .96 ;====>8ms , 160times ADDWF L_LEVEL,W BTFSC RFIN GOTO ADDLOP BTFSS STATUS,C GOTO DELAY_SYNC GOTO EXITREC CHK_DATA BCF STATUS,PA0 GOTO CHK_Data EXIT_RECEIVE1 CLRF KEYFLAG GOTO EXITREC ;----------------------------------------------- CHK_SYNC CALL CHK_HI BTFSC RECERR GOTO EXIT_RECEIVE1 BCF STATUS,Z MOVLW .25 SUBWF BIT_CNT,W BTFSS STATUS,Z GOTO $+7 BTFSS LRN_F GOTO $+4 DECFSZ catch_time,F GOTO RECEIVE CALL CHK_DATA GOTO FP527 GOTO WAIT_SYNC FP527 MOVLW .15 MOVWF RD1 ROT RRF RECB33B40,F RRF RECB25B32,F RRF RECB17B24,F RRF RECB09B16,F RRF RECB01B08,F DECFSZ RD1,F GOTO ROT MOVLW 0X00 MOVWF DECR3340 MOVWF DECR2532 ;----------------------- CCC MOVLW 00H MOVWF EEPADDR REC_COMP CALL EEREAD MOVFW RECB01B08 XORWF TMP1,W BTFSS STATUS,Z GOTO COMP_NEXT MOVFW RECB09B16 NOP XORWF TMP2,W BTFSS STATUS,Z GOTO COMP_NEXT INCF EEPADDR,F CALL EEREAD MOVFW RECB17B24 XORWF TMP1,W ANDLW 0FH BTFSS STATUS,Z GOTO COMP_NEXT BTFSC LRN_F GOTO LRN_STORE GOTO CHK_HOP COMP_NEXT BTFSC EEPADDR,3 GOTO CHK_4 BTFSC EEPADDR,2 GOTO CHK_4 CHK_2 MOVLW B'00000011' ANDWF EEPADDR,W BTFSS STATUS,Z GOTO CHK_3 MOVLW 03H GOTO CHK_REG CHK_3 MOVLW 06H GOTO CHK_REG CHK_4 MOVLW B'00001001' ANDWF EEPADDR,W BTFSS STATUS,Z GOTO FUAL_SERIAL MOVLW 09H CHK_REG MOVWF EEPADDR GOTO REC_COMP FUAL_SERIAL BTFSS LRN_F GOTO EXIT_RECEIVE GOTO LRN_STORE CHK_HOP KEY_CK BTFSC LRN_F GOTO LRN_LP MOVFW KEYFLAG ANDLW 0X0F BTFSC STATUS,Z GOTO KEY SWAPF RECB17B24,W ANDLW 0FH ANDWF KEYFLAG,W BTFSS STATUS,Z GOTO SAME_KEY KEY SWAPF RECB17B24,W MOVWF KEYFLAG MOVLW 0FH ANDWF KEYFLAG,F EXITKEY GOTO RETURN_SYSTEM ;------------------------------------------------ SAME_KEY CLRF TCNT0 BTFSC LRN_F GOTO LRN_LP EXITREC BSF TMP EXIT_RECEIVE BTFSC LRN_F GOTO LRN_LP GOTO RETURN_SYSTEM ;----------------------------------------------- TEST_LRN BCF LRN_F BCF RE_LRN CLRF RTCNTH CLRF RTCNTL ENS_LRN BTFSS LRNKEY GOTO EXIT_LEARN CALL TST_RTCCP1 BTFSS RTCNTL,2 GOTO ENS_LRN ENSURED_LRN CLRF PORTA CLRF RTCNTH CLRF RTCNTL BCF LRNLED BSF LRN_F CHK_ERASE BTFSS LRNKEY GOTO LRN_LP CALL TST_RTCCP1 BTFSS RTCNTL,2 GOTO CHK_ERASE ERASE_ALL BCF LRNLED MOVLW 00H MOVWF EEPADDR CALL EECLEAR CALL EECLEAR CALL EECLEAR MOVLW 03H MOVWF EEPADDR CALL EECLEAR CALL EECLEAR CALL EECLEAR MOVLW 06H MOVWF EEPADDR CALL EECLEAR CALL EECLEAR CALL EECLEAR MOVLW 09H MOVWF EEPADDR CALL EECLEAR CALL EECLEAR CALL EECLEAR ERASE_OK BTFSC LRNKEY GOTO ERASE_OK ;------------------------------------------------ LRN_LP CALL TST_RTCCP1 BTFSC RTCNTH,1 GOTO EXIT_LEARN BTFSC LRNKEY;=================<< GOTO ENSURED_LRN MOVLW 0X02 MOVWF JUMP_F GOTO RECEIVE LRN_STORE BTFSS TMP GOTO RECEIVE BCF TMP CLRF EEPADDR CALL EEREAD INCF TMP7,F CALL EEWRITE CLRF EEPADDR CALL EEREAD BTFSC TMP7,1 GOTO CK_SEL BTFSC TMP7,0 GOTO SEL_2 GOTO SEL_1 CK_SEL BTFSS TMP7,0 GOTO SEL_3 GOTO SEL_4 SEL_1 MOVLW 00H GOTO START_LRN SEL_2 MOVLW 03H GOTO START_LRN SEL_3 MOVLW 06H GOTO START_LRN SEL_4 MOVLW 09H START_LRN MOVWF EEPADDR MOVFW RECB01B08 MOVWF TMP1 MOVFW RECB09B16 MOVWF TMP2 CALL EEWRITE MOVFW RECB17B24 MOVWF TMP1 CALL EEWRITE LRN_HOP: MOVFW DECR2532 MOVWF TMP1 MOVFW DECR3340 MOVWF TMP2 CALL EEWRITE CLRF RTCNTL CLRF RTCNTH LRN_OK: BTFSC OUTBYT,1 GOTO $+6 BTFSC OUTBYT,2 GOTO LRN_K2 BTFSS OUTBYT,0 GOTO LRN_K3 GOTO LRN_K4 BTFSC OUTBYT,3 GOTO LRN_K4 LRN_K1 ; BCF K2 CALL TST_RTCCP1 BCF LRNLED BTFSC RTCNTL,4 BSF LRNLED BTFSC RTCNTH,0 GOTO EXIT_LEARN BTFSC RE_LRN GOTO LRN_OK BTFSS RTCNTL,7 GOTO LRN_OK BSF LRNLED ; BSF K1 ; BSF K2 ; BSF RE_LRN ; MOVLW 0X01 ; MOVWF TMP7 GOTO LRN_LP LRN_K4 BSF RE_LRN BCF LRNLED LRN_K3 ;BCF K3 ;BCF K1 GOTO $+3 LRN_K2 ;BCF K1 MOVLW 0X01 MOVWF TMP7 GOTO LRN_K1 ;------------------------------------------------ LRN_FAUL: EXIT_LEARN: MOVLW 0XFF MOVWF TMP7 CLRF TCNT0 CLRF PORTA ; BSF K1 ; BSF K2 ; BSF K3 BSF LRNLED BCF LRN_F BCF RE_LRN ;=============================================== RETURN_SYSTEM CALL TST_TIME1 BTFSC RFIN GOTO RECEIVE BTFSC TCNT0,1 CLRF KEYFLAG BTFSS TCNT0,2 GOTO $-6 BSF TMP CLRF KEYFLAG BCF STATUS,PA0 GOTO KEYSCAN ;=============================================== ORG 1D0H CHK_Data MOVF RECB33B40,W ;addr33_40-pd33d40=0 for pass SUBWF pd33d40,W BTFSS STATUS,Z GOTO SCEND MOVF RECB25B32,W SUBWF pd25d32,W BTFSS STATUS,Z GOTO SCEND MOVF RECB17B24,W SUBWF pd17d24,W BTFSS STATUS,Z GOTO SCEND MOVLW 0X02 MOVWF JUMP_F BSF STATUS,PA0 retlw null ;================================================================ ; Reset Vector ;=============================================================== org ResetVector bcf STATUS,PA0 ;Set PAGE_0 Program Memory END
/
本文档为【ev1527发射】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索