proton'da seri iletişim

Başlatan turkbowling, 19 Mayıs 2006, 20:39:32

turkbowling

-------------------------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

mhk

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.
"Ya olduğun gibi görün, Ya da göründüğün gibi ol..." Mevlana

turkbowling

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

ahmet2004