-------------------------verici program-----------------------------------
DEVICE 16F877
XTAL=4
TRISA=%11111111 'porta giris
TRISC=%11111111 'portb giris
ALL_DIGITAL=TRUE 'bütün portlari djital (1-0) yap
PORTB_PULLUPS=FALSE 'portb nin pull up kapat
SYMBOL SAYKIL=PORTC.0 'portc.0'i saykil olarak tanit
DIM T1 AS BIT,T2 AS BIT,T3 AS BIT,T4 AS BIT 'T'leri tanimla Bit olarak
BASLA:
BEKLE:
IF SAYKIL=0 THEN GOTO BEKLE 'saykil 1 olana kadar bekle while
DELAYMS 1000 '1 sn bekle T'leri oku
T1=PORTA.0
T2=PORTA.1
T3=PORTA.2
T4=PORTA.3
SEROUT PORTC.6,16780,["PIC1", T1,T2,T3,T4] 'bilgileri gönder
GOTO BEKLE
END
----------alıcı programı-------------------------------------------------------
DEVICE 16F877
XTAL=4
ALL_DIGITAL=TRUE 'tüm çikislar djital acik
PORTB_PULLUPS=FALSE 'portb deki pull up kapali
DECLARE LCD_DTPIN PORTB.4 'LCD ekran komutlari
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTB.2
DIM T1 AS BIT,T2 AS BIT,T3 AS BIT,T4 AS BIT 'T1 ..vb tanimlama
BASLA:
SERIN PORTC.6 ,16780,[WAIT("PIC1"),T1,T2,T3,T4]
if T1=1 then portd.0=1
CURSOR 1,1
LCDOUT DEC T1,"-",DEC T2,"-",DEC T3,"-",DEC T4
DELAYMS 200
GOTO BASLA
arkadaşlar
t1 i 1 yaptıgımda gönderdigimde portd.0 daki ledi yakmasını istiyorum ama olmuyor
neden yardımcı olursanız servinirim
saygılarımla
Daha kısa bir yöntem kullanabilirdin. Şöyleki;
verici için;
DEVICE 16F877
XTAL=4
TRISA=%11111111
TRISC=%10111111
ALL_DIGITAL=TRUE 'bütün portlari djital (1-0) yap
PORTB_PULLUPS=FALSE 'portb nin pull up kapat
SYMBOL SAYKIL=PORTC.0 'portc.0'i saykil olarak tanit
DIM verigonder AS BYTE
BASLA:
BEKLE:
IF SAYKIL=0 THEN GOTO BEKLE 'saykil 1 olana kadar bekle while
DELAYMS 1000 '1 sn bekle T'leri oku
verigonder=PORTA
SEROUT PORTC.6,16780,["PIC1", verigonder] 'bilgileri gönder
GOTO BEKLE
END
Alıcı için;
DEVICE 16F877
XTAL=4
ALL_DIGITAL=TRUE 'tüm çikislar djital acik
PORTB_PULLUPS=FALSE 'portb deki pull up kapali
TRISA=%11111111
TRISC=%11111111
DECLARE LCD_DTPIN PORTB.4 'LCD ekran komutlari
DECLARE LCD_ENPIN PORTB.3
DECLARE LCD_RSPIN PORTB.2
DIM verial as byte
BASLA:
SERIN PORTC.6 ,16780,[WAIT("PIC1"),verial]
if verial.0=1 then portd.0=1
CURSOR 1,1
LCDOUT DEC verial.0,"-",DEC verial.1,"-",DEC verial.2,"-",DEC verial.3
DELAYMS 200
GOTO BASLA
Denemedim lakin çalışması gerekir. Bu arada 16F877 gibi işlemci kullanılıyorsa , imkanlar dahilinde donanım seri haberleşmesi kullanılmasını öneririm.
ilgine teşekkür ederim
kodu proteusda kontrol ettim çalışıyor
elimde 2 adet 16f877 olmadıgı için 2 adet 16f84 ile seri iletişimi uygulamalı olarak yapmaya karar verdim ek'deki dosyada tüm açıklamalar var bir göz atıp problemin kaynagı hakında yardımcı olursan sevinirim
saygılarımla
http://www.hemenpaylas.com/download/786555/kart_denemesi.rar.html
şöyle düzenledim senin dosyaları belki işine yarar.
http://www.hemenpaylas.com/download/791015/kart_denemesi1.zip.html (http://www.hemenpaylas.com/download/791015/kart_denemesi1.zip.html)