8 veya 9 biti tek kablo üzerinden taşımak

knight2

Üye
Katılım
25 Ara 2006
Mesajlar
2
Puanları
1
Yaş
40
9 bitlik bilgiyi 1 veya 2 tel üzerinden gönderebileceğim bir entegre arıyorum. eğer bu iş pic kullanılarak yapılırsa daha da iyi olur. yani 9 inputu 1 outputla taşımak
 
Moderatör tarafında düzenlendi:
yalnız olay pc ile haberleşme değil. Ben iki pic'in tek kablo üzerinden hem alıcı hem de verici olarak çalışmasını istiyorum . Tıpkı handshake olayı gibi olmalı
 
söylediğin seri haberleşme. pic 16f628 böyle bir donanıma sahip.picbasic ile bunu yapman çok kolay.
 
16f628de dahili bir seri haberleşme ünitesi mevcut ama 16f84 ile dahi koç kolay yapıla biliyor.
iki PIC16F84 ü seri haberseştirmek için gerekli kodlar aşadaki şekilde olması yeterli gerekli değişiklikleri yaparak kendi sistemine uyarlayabilirsin.
Yanız burda Ufak bir nokta var bu sistemle 8 bitlik paketler halide veri gönderilir ve aynı şekilde algılanır ancak 8 bitlik verinin gönderilmesi ve algılanması için 10 bitlik data gönderimi mevcuttur. yani bir start biti 8 data biti bir stop biti seklinde veriler yollanır ve algılanır.

Proteus ta hazırlanmış projenin tüm dosyaları alttaki linkte mevcut.

PicBasic - ASM - Proteus Dosyaları Ekte


1. Pic İçin Pic Basic Kodları

Kod:
'****************************************************************
'* Name  : A.BAS                   *
'* Author : [AYKUT YILMAZ]                  *
'* Notice : Copyright (c) 2007 [end. elektronik teknikeri]  *
'*     : All Rights Reserved                *
'* Date  : 11.03.2007                    *
'* Version : 1.0                        *
'* Notes  :                          *
'*     :                          *
'****************************************************************

'*****GİRİŞ VE ÇIKIŞLAR*****
TRISA=%00010        'PORTA.1 GİRİŞ DİĞERLERİ ÇIKIŞ  
TRISB=%00001111       'PORTB'NİN İLK 4 BİTİ GİRİŞ DİĞERLERİ ÇIKIŞ
OPTION_REG.7=0       'PULL UP DİRENÇLERİ İPTAL VE PULL UP DİRENLERİNİ KULLANMAYA GEREK YOK

VERICI VAR BYTE
ALICI VAR BYTE

VERICI=0
ALICI=0

PORTA=0
PORTB=0

PAUSE 500
BASLA:


IF PORTB.0=0 THEN VERICI=10
IF PORTB.1=0 THEN VERICI=20
IF PORTB.2=0 THEN VERICI=30
IF PORTB.3=0 THEN VERICI=40

SEROUT2 PORTA.0,396,["A",VERICI]


IF ALICI=50 THEN HIGH PORTB.4
IF ALICI=60 THEN HIGH PORTB.5
IF ALICI=70 THEN HIGH PORTB.6
IF ALICI=80 THEN HIGH PORTB.7

SERIN2 PORTA.1,396,[WAIT("B"),ALICI]
GOTO BASLA
END






2. Pic İçin Pic Basic Kodları


Kod:
'****************************************************************
'* Name  : B.BAS                   *
'* Author : [AYKUT YILMAZ]                  *
'* Notice : Copyright (c) 2007 [end. elektronik teknikeri]  *
'*     : All Rights Reserved                *
'* Date  : 11.03.2007                    *
'* Version : 1.0                        *
'* Notes  :                          *
'*     :                          *
'****************************************************************

'*****GİRİŞ VE ÇIKIŞLAR*****
TRISA=%00001          'PORTA.0 GİRİŞ DİĞERLERİ ÇIKIŞ
TRISB=%00001111         'PORTB'NİN İLK 4 BİTİ GİRİŞ DİĞERLERİ ÇIKIŞ
OPTION_REG.7=0         'PULL UP DİRENÇLERİ İPTAL VE PULL UP DİRENÇLERİNİ KULLANMAYA GEREK YOK

VERICI VAR BYTE
ALICI VAR BYTE

VERICI=0
ALICI=0

PORTA=0
PORTB=0

PAUSE 500    
BASLA:


SERIN2 PORTA.0,396,[WAIT("A"),ALICI]
IF ALICI=10 THEN HIGH PORTB.4
IF ALICI=20 THEN HIGH PORTB.5
IF ALICI=30 THEN HIGH PORTB.6
IF ALICI=40 THEN HIGH PORTB.7


IF PORTB.0=0 THEN VERICI=50
IF PORTB.1=0 THEN VERICI=60
IF PORTB.2=0 THEN VERICI=70
IF PORTB.3=0 THEN VERICI=80
SEROUT2 PORTA.1,396,["B",VERICI]

GOTO BASLA
END
 

Ekli dosyalar

  • çift yönlü seri iletişim.zip
    85.9 KB · Görüntüleme: 0
PICBASIC PRO da serin serout la bu işi yapabilirsin
Kolay gelsin
 

Forum istatistikleri

Konular
130,159
Mesajlar
933,798
Kullanıcılar
453,265
Son üye
34yusuf52
Geri
Üst