RD1_Faze res 1 ;START/data/STOP RD1_Buf res 1 ;Právě přijímaný BYT RD1_Data res 1 ;Tady se ukláda přijmutý BYT RD1_Bity res 1 ;Vzorkování bitů ;********************************************************* Navrat_ISR macro incf RD1_Faze,F ;Dalsi fáze bcf PIR1,CCP1IF movff W_Temp,WREG movff STATUS_Temp,STATUS movff BSR_Temp,BSR movff PCLATH_Temp,PCLATH retfie endm ;********************************************************* ;********************************************************* Reset_Page code nop bcf INTCON,GIE goto Start ;********************************************************* ;Přerušení jen CCP1 ;Po 520 cyklech a tedy 1200/8 (20M/ CPU(4)/ TMR1(520)) ISR_Code code 0x16 movwf W_Temp movff STATUS,STATUS_Temp movff BSR,BSR_Temp movff PCLATH,PCLATH_Temp clrf PCLATH rlncf RD1_Faze,W addwf PCL ;Stop bra Cekej_Stop bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Kontrola_Start bra Byt_Ini ;Bit0 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B0 bra Konec_Prijmu ;Bit1 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B1 bra Konec_Prijmu ;Bit2 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B2 bra Konec_Prijmu ;Bit3 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B3 bra Konec_Prijmu ;Bit4 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B4 bra Konec_Prijmu ;Bit5 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B5 bra Konec_Prijmu ;Bit6 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B6 bra Konec_Prijmu ;Bit7 bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Zapis_B7 bra Konec_Prijmu ;STOP bra Konec_Prijmu bra Prijmi_Bit_Ini bra Prijmi_Bit bra Prijmi_Bit bra Prijmi_Bit bra Kontrola_Stop bra Zapis_Byte ;--------------------------------------------------------- Prijmi_Bit_Ini clrf RD1_Bity Navrat_ISR ;Macro ;--------------------------------------------------------- Prijmi_Bit btfsc Data_In incf RD1_Bity,F ;3x se pocita vstupni hodnota Navrat_ISR ;Macro ;--------------------------------------------------------- Byt_Ini clrf RD1_Buf Navrat_ISR ;Macro ;--------------------------------------------------------- Cekej_Stop btfss Data_In ;Je START? incf RD1_Faze,F ;Dalsi fáze bcf PIR1,CCP1IF movff W_Temp,WREG movff STATUS_Temp,STATUS movff BSR_Temp,BSR movff PCLATH_Temp,PCLATH retfie ;--------------------------------------------------------------------- Konec_Prijmu Navrat_ISR ;--------------------------------------------------------------------- Zapis_B0 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,0 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B1 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,1 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B2 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,2 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B3 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,3 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B4 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,4 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B5 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,5 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B6 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,6 Navrat_ISR ;--------------------------------------------------------------------- Zapis_B7 btfsc RD1_Bity,1 ;Výsledek vzorkování bsf RD1_Buf,7 Navrat_ISR ;--------------------------------------------------------- Kontrola_Start btfss RD1_Bity,1 ;Výsledek vzorkování setf RD1_Faze ; = 0 Navrat_ISR ;--------------------------------------------------------- Kontrola_Stop btfss RD1_Bity,1 ;Výsledek vzorkování setf RD1_Faze ; = 0 Navrat_ISR ;--------------------------------------------------------- Zapis_Byte bcf Time_Out_Rx1 ;Přijat byt movlw K_CAS_BYT movwf Rx1_Cas_B movff RD1_Buf,RD1_Data bsf RD1_F setf RD1_Faze Navrat_ISR