alarmko
Usta Üye
- Katılım
- 14 Ocak 2009
- Mesajlar
- 1,101
- Puanları
- 181
- Yaş
- 59
Bircok yabancı sitede manchester haberlesme ile ilgili bilgiler var.işin prensibi belli.Gelen bilgi 01 yanı önce reset sonra set ise anlamı bir(set) demek,yok 10 seklinde ise anlamı sıfır(reset) demek.aynı sekide 00 da reset ve 11 seklindeki bilgide set anlamına geliyor.
Microchip in sitesinden edindigim bilgiye göre periyodun 3/4 lük kısmınlarındaki dataların set veya reset olmasına bakarak bilgiyi gayet basit sekilde okumak mümkün.Ancak ben öyle yapmadım.Dataların uzunluklarını kontrol ederek gelen bilginin set veya reset oldugunu algılattım.
Benim amacım ise biraz daha üniversal yani frekansını bilmedigim manchester kodlu kumanda bilgilerini okumak için program yazmaktı.
Programın faydalı olmasını umuyorum.Üzerinde degişiklikler yaparak bilgi adeti vs degistirilebilinir.
Bu program kes kopyala calıstır seklinde kullanmak için degil,kendini gelistirmek için ugrasan arkadaslara yardımcı olmak ve fikir vermek için verilmistir.Lütfen vericisininde programını verin vs seklinde isteklerde bulunmayın.Programı incelerseniz gayet basit verici kısmını kendiniz yapabilirsiniz.
Hadi bakalım Allah rast getire.
SPBRG_VAL EQU .42 ;20MHZ 57600=86 115200=42
#DEFINE RX_MODUL PORTC,3
RAM_START EQU 00020h
RAM_END EQU 001EFh
CBLOCK RAM_START + 0X08
RF_RXDAT1_T
RF_RXDAT2_T
RF_RXDAT3_T
RF_RXDAT4_T
RF_RXDAT1
RF_RXDAT2
RF_RXDAT3
RF_RXDAT4
ENDC
Main:
BANKSEL T1CON ;
MOVLW B'00110001'
MOVWF T1CON
BANKSEL TRISB
movlw B'01111010'
MOVWF TRISC
MOVLW B'11010101'
MOVWF OPTION_REG
GOTO MainLoop
MainLoop: Bank0 ;select bank0
BTFSS RX_MODUL
CALL UKVKONTROL
;************************************************
;DIGER PROGRAMLARINIZI BU BOLGEDE YAZARSINIZ
;,,,,
;,,,
;,,,
;*************************************************
GOTO MainLoop
;*************************************************
UKVKONTROL Bank0
CLRF FFLAG
CLRF COUNT
MOVLW .20 ;MAX PERIYOT 20+20*2*13=520US
MOVWF RF_L ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVWF RF_H
UKVKONTROL1 CLRF TMR0
RESETKONTROL MOVF TMR0,W
SUBLW .80 ;MAX 80*13=1040US DEN BUYUKSE BASA DON
BTFSS STATUS,C
RETLW 0
BTFSS RX_MODUL
GOTO RESETKONTROL
MOVF TMR0,W
SUBLW .6 ;MINIMUM DARBE GENISLIGI 6X13=78US
BTFSC STATUS,C
RETLW 0
MOVF TMR0,W
SUBWF RF_L,W
BTFSS STATUS,C
GOTO reSETKONTROL1
MOVF TMR0,W ;PERIYOTUN TESPITI ICIN
MOVWF RF_L ;EN KUCUGU BULUNUP YUKLENIYOR
reSETKONTROL1 BSF FFLAG,5
BCF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
MOVF RF_L,W
ADDWF RF_H,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,F ;ORTALAMA BULUNDU
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W ;ORTALAMANIN BIRBUCUK KATINDAN BUYUK ISE
SUBWF TMR0,W ;GELEN BIT 00 GELDI DEMEK
BTFSS STATUS,C
GOTO SETKONTROL
BSF FFLAG,5
BCF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
;***********************************************
SETKONTROL CLRF TMR0
SETKONTROL1 MOVF TMR0,W
SUBLW .80 ;MAX 1MS DEN BUYUKSE BASA DON
BTFSS STATUS,C
RETLW 0
BTFSC RX_MODUL
GOTO SETKONTROL1
MOVF TMR0,W
SUBLW .6 ;MINIMUM DARBE GENISLIGI 6X13=78US
BTFSC STATUS,C
RETLW 0
MOVF TMR0,W
SUBWF RF_H,W
BTFSS STATUS,C
GOTO SETKONTROL2
MOVF TMR0,W
MOVWF RF_H ;EN KUCUGU BULUNUP YUKLENIYOR
SETKONTROL2 MOVF RF_H,W
ADDWF RF_L,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W ;ORTALAMANIN 3 KATI BULUNDU
SUBWF TMR0,W
BTFSC STATUS,C
GOTO SIFIRLACIK ;SET 3 MISLINDEN BUYUKSE GERI DONUYOR
BSF FFLAG,5
BSF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
MOVF RF_L,W
ADDWF RF_H,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,F ;ORTALAMA BULUNDU
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W
SUBWF TMR0,W
BTFSS STATUS,C
GOTO UKVKONTROL1 ;ORTALAMANIN 1.5 KATINDAN BUYUKSE SET DEMEK
BSF FFLAG,5
BSF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
GOTO UKVKONTROL1
;*********************************************
SOLAKAYDIR MOVF FFLAG,W
ANDLW B'11000000'
XORLW B'11000000'
BTFSS STATUS,Z
RETLW 0
MOVLW b'11000010'
XORWF FFLAG,W
BTFSC STATUS,Z
BSF RF_RXDAT4,0
MOVLW b'11000100'
XORWF FFLAG,W
BTFSC STATUS,Z
BCF RF_RXDAT4,0
MOVLW b'11000110'
XORWF FFLAG,W
BTFSC STATUS,Z
BSF RF_RXDAT4,0
MOVLW b'11000000'
XORWF FFLAG,W
BTFSC STATUS,Z
BCF RF_RXDAT4,0
RLF RF_RXDAT4,F
RLF RF_RXDAT3,F
RLF RF_RXDAT2,F
RLF RF_RXDAT1,F
CLRF FFLAG
RETURN
;*********************************
SIFIRLACIK CLRF FFLAG
MOVLW .20
MOVWF RF_L ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVWF RF_H ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVF RF_RXDAT4,W
XORWF RF_RXDAT4_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT3,W
XORWF RF_RXDAT3_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT2,W
XORWF RF_RXDAT2_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT1,W
XORWF RF_RXDAT1_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
INCF COUNT,F
MOVF COUNT,W
XORLW .10 ;10 KEZ AYNI BILGININ GELDIGI TEYIT EDILIYOR
BTFSC STATUS,Z
RETURN ;BILGI ALINDI ANA CEVRIME GERI GONDERILIYOR
SIFIRLACIKK MOVF RF_RXDAT4,W
MOVWF RF_RXDAT4_T
MOVF RF_RXDAT3,W
MOVWF RF_RXDAT3_T
MOVF RF_RXDAT2,W
MOVWF RF_RXDAT2_T
MOVF RF_RXDAT1,W
MOVWF RF_RXDAT1_T
CLRF RF_RXDAT4
CLRF RF_RXDAT3
CLRF RF_RXDAT2
CLRF RF_RXDAT1
GOTO UKVKONTROL1
Microchip in sitesinden edindigim bilgiye göre periyodun 3/4 lük kısmınlarındaki dataların set veya reset olmasına bakarak bilgiyi gayet basit sekilde okumak mümkün.Ancak ben öyle yapmadım.Dataların uzunluklarını kontrol ederek gelen bilginin set veya reset oldugunu algılattım.
Benim amacım ise biraz daha üniversal yani frekansını bilmedigim manchester kodlu kumanda bilgilerini okumak için program yazmaktı.
Programın faydalı olmasını umuyorum.Üzerinde degişiklikler yaparak bilgi adeti vs degistirilebilinir.
Bu program kes kopyala calıstır seklinde kullanmak için degil,kendini gelistirmek için ugrasan arkadaslara yardımcı olmak ve fikir vermek için verilmistir.Lütfen vericisininde programını verin vs seklinde isteklerde bulunmayın.Programı incelerseniz gayet basit verici kısmını kendiniz yapabilirsiniz.
Hadi bakalım Allah rast getire.
SPBRG_VAL EQU .42 ;20MHZ 57600=86 115200=42
#DEFINE RX_MODUL PORTC,3
RAM_START EQU 00020h
RAM_END EQU 001EFh
CBLOCK RAM_START + 0X08
RF_RXDAT1_T
RF_RXDAT2_T
RF_RXDAT3_T
RF_RXDAT4_T
RF_RXDAT1
RF_RXDAT2
RF_RXDAT3
RF_RXDAT4
ENDC
Main:
BANKSEL T1CON ;
MOVLW B'00110001'
MOVWF T1CON
BANKSEL TRISB
movlw B'01111010'
MOVWF TRISC
MOVLW B'11010101'
MOVWF OPTION_REG
GOTO MainLoop
MainLoop: Bank0 ;select bank0
BTFSS RX_MODUL
CALL UKVKONTROL
;************************************************
;DIGER PROGRAMLARINIZI BU BOLGEDE YAZARSINIZ
;,,,,
;,,,
;,,,
;*************************************************
GOTO MainLoop
;*************************************************
UKVKONTROL Bank0
CLRF FFLAG
CLRF COUNT
MOVLW .20 ;MAX PERIYOT 20+20*2*13=520US
MOVWF RF_L ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVWF RF_H
UKVKONTROL1 CLRF TMR0
RESETKONTROL MOVF TMR0,W
SUBLW .80 ;MAX 80*13=1040US DEN BUYUKSE BASA DON
BTFSS STATUS,C
RETLW 0
BTFSS RX_MODUL
GOTO RESETKONTROL
MOVF TMR0,W
SUBLW .6 ;MINIMUM DARBE GENISLIGI 6X13=78US
BTFSC STATUS,C
RETLW 0
MOVF TMR0,W
SUBWF RF_L,W
BTFSS STATUS,C
GOTO reSETKONTROL1
MOVF TMR0,W ;PERIYOTUN TESPITI ICIN
MOVWF RF_L ;EN KUCUGU BULUNUP YUKLENIYOR
reSETKONTROL1 BSF FFLAG,5
BCF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
MOVF RF_L,W
ADDWF RF_H,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,F ;ORTALAMA BULUNDU
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W ;ORTALAMANIN BIRBUCUK KATINDAN BUYUK ISE
SUBWF TMR0,W ;GELEN BIT 00 GELDI DEMEK
BTFSS STATUS,C
GOTO SETKONTROL
BSF FFLAG,5
BCF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
;***********************************************
SETKONTROL CLRF TMR0
SETKONTROL1 MOVF TMR0,W
SUBLW .80 ;MAX 1MS DEN BUYUKSE BASA DON
BTFSS STATUS,C
RETLW 0
BTFSC RX_MODUL
GOTO SETKONTROL1
MOVF TMR0,W
SUBLW .6 ;MINIMUM DARBE GENISLIGI 6X13=78US
BTFSC STATUS,C
RETLW 0
MOVF TMR0,W
SUBWF RF_H,W
BTFSS STATUS,C
GOTO SETKONTROL2
MOVF TMR0,W
MOVWF RF_H ;EN KUCUGU BULUNUP YUKLENIYOR
SETKONTROL2 MOVF RF_H,W
ADDWF RF_L,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W ;ORTALAMANIN 3 KATI BULUNDU
SUBWF TMR0,W
BTFSC STATUS,C
GOTO SIFIRLACIK ;SET 3 MISLINDEN BUYUKSE GERI DONUYOR
BSF FFLAG,5
BSF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
MOVF RF_L,W
ADDWF RF_H,W
MOVWF RF_TEMP
BCF STATUS,C
RRF RF_TEMP,F ;ORTALAMA BULUNDU
BCF STATUS,C
RRF RF_TEMP,W
ADDWF RF_TEMP,W
SUBWF TMR0,W
BTFSS STATUS,C
GOTO UKVKONTROL1 ;ORTALAMANIN 1.5 KATINDAN BUYUKSE SET DEMEK
BSF FFLAG,5
BSF FFLAG,0
BCF STATUS,C
RLF FFLAG,F
CALL SOLAKAYDIR
GOTO UKVKONTROL1
;*********************************************
SOLAKAYDIR MOVF FFLAG,W
ANDLW B'11000000'
XORLW B'11000000'
BTFSS STATUS,Z
RETLW 0
MOVLW b'11000010'
XORWF FFLAG,W
BTFSC STATUS,Z
BSF RF_RXDAT4,0
MOVLW b'11000100'
XORWF FFLAG,W
BTFSC STATUS,Z
BCF RF_RXDAT4,0
MOVLW b'11000110'
XORWF FFLAG,W
BTFSC STATUS,Z
BSF RF_RXDAT4,0
MOVLW b'11000000'
XORWF FFLAG,W
BTFSC STATUS,Z
BCF RF_RXDAT4,0
RLF RF_RXDAT4,F
RLF RF_RXDAT3,F
RLF RF_RXDAT2,F
RLF RF_RXDAT1,F
CLRF FFLAG
RETURN
;*********************************
SIFIRLACIK CLRF FFLAG
MOVLW .20
MOVWF RF_L ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVWF RF_H ;ILK BASLANGIC ICIN YUKSEK DEGER YUKLENIYOR
MOVF RF_RXDAT4,W
XORWF RF_RXDAT4_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT3,W
XORWF RF_RXDAT3_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT2,W
XORWF RF_RXDAT2_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
MOVF RF_RXDAT1,W
XORWF RF_RXDAT1_T,W
BTFSS STATUS,Z
GOTO SIFIRLACIKK
INCF COUNT,F
MOVF COUNT,W
XORLW .10 ;10 KEZ AYNI BILGININ GELDIGI TEYIT EDILIYOR
BTFSC STATUS,Z
RETURN ;BILGI ALINDI ANA CEVRIME GERI GONDERILIYOR
SIFIRLACIKK MOVF RF_RXDAT4,W
MOVWF RF_RXDAT4_T
MOVF RF_RXDAT3,W
MOVWF RF_RXDAT3_T
MOVF RF_RXDAT2,W
MOVWF RF_RXDAT2_T
MOVF RF_RXDAT1,W
MOVWF RF_RXDAT1_T
CLRF RF_RXDAT4
CLRF RF_RXDAT3
CLRF RF_RXDAT2
CLRF RF_RXDAT1
GOTO UKVKONTROL1