serout2-serin2 hakkında

Başlatan BALDIRCAN, 29 Temmuz 2006, 11:24:07

BALDIRCAN

Selamlar
Bilgisayarın seri port çıkışını kullanarak bilgisayara veri yollayıp almak için sağdan soldan okuduklarımca bir program yazdım (pic programlama konusunda pek deneyimim yok). Fakat tabiki çalışmadı. Baya bi değiştirdim ama sonuç aynı. Kullandığım pic pic16f876 ve şu an aşağıdaki program yüklü. Bu konuda bana yardımcı olursanız çok sevinirim.
Teşekkürler
DEFINE OSC 20		' frequency of the oscilator
	DEFINE  ADC_BITS        8     	' Set number of bits in result
	DEFINE  ADC_CLOCK       3     	' Set clock source (3=rc)
	DEFINE  ADC_SAMPLEUS    50    	' Set sampling time in uS

	DEFINE  HSER_RCSTA      90H 
	DEFINE  HSER_TXSTA      20H 
	DEFINE  HSER_BAUD       2400 
	DEFINE  HSER_SPBRG      129
'-------------------------------------------------------------------	
	TRISB.4=0		'output
	TRISB.6=1		'input
	TRISA=%11111111
	ADCON1 =%00000010	'set port a analog and right justify result
'-------------------------------------------------------------------
	LED1 var PORTB.4
'-------------------------------------------------------------------

MAIN:
	if portb.6=0 then
		LED1=1
		serout2 0, 16780, ["hello"]
	endif
	pause 5000
	LED1=0

	GoTo MAIN


Code Tag Unutulmasın.

Logan

Merhaba Baldırcan.Spbrg registerine 129 yüklemişsin.Eğer datasheetin 116. sayfasına bakarsan 20 Mhz kristalde BRGH biti "1" iken baud-rate hızının 9600 olması gerektiği yazıyor.Bu şekilde denemeni tavsiye ederim.Ayrıca Serout2 yerine Hserout komutunu kullanırsan daha iyi olur.
İmza.

ground

Yukarıda hardware haberleşmenin konfigürasyonunu yapmışsın..  Komutu = Hserin - Hserout , pinleri RC6 - RC7

Aşağıda da seri haberleşme kullanılmış..


komut   pin  ,hız, ["data"]

SEROUT2 PORTD.1,32,["deneme"]

Hız ;
32 yapılırsa = 19200 baud
84 yapılırsa 9600 baud
software de herhangi pinden haberleşirsin..  

Include "modedefs.bas"

Seri software haberleşme yaparken bunu unutma..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

BALDIRCAN

Yardımlarınız için teşekkürler ama sorun halen devam ediyor. Çalıştığından emin olduğunuz bir programı yollayabilir misiniz? Belki sorunum bağlantılarımda falandır. Eğer mümkünse tuşun birine basıldıktan sonra hyper terminal ile ekranda herhangi bir harfi görmek istiyorum (mesela "a"). Daha sonra yine klavyeden bir input girdiim de (mesela "e") ledlerden biri yansa.  Çalıştığından emin olduğunuz böyle veya buna benzer bir programı yollayabilirseniz gerçekten çok yardım etmiş olacaksınız.
Şimdiden herkese teşekkürler.

ground

TRISA=%00001011 
TRISB=0 
TRISC=%10000000
TRISD=%00000001 
'------------Tanımlar----------------------------------------------- 
DEFINE OSC 20 
'--------------------------------------------------------------------- 

Include "modedefs.bas" 

SERIGEL	VAR BYTE[16]

'-------------------------------------------------------------------------------
ADCON1 = $06
'-------------------------------------------------------------------------------
basla :
SerIn2 PORTD.0,32,5000,BASLA,[str SERIGEL\6]
pause 400
SEROUT2 PORTD.1,32,[serigel[0],serigel[1],13,10]
pause 100
goto basla
     
end  


Bunla 6 karakter bekliyor
SerIn2 PORTD.0,32,5000,BASLA,[str SERIGEL\6]


Bunla ilk 2 karakteri gönderiyor sonra enter ve alt satır..
SEROUT2 PORTD.1,32,[serigel[0],serigel[1],13,10]



İşlemcini programlarken sigortalarda HS seçmeyi unutma..
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

ground

Picbasic le uğraşmaya yeni başladım bende..

Bu kodu denedim.. No problema..

Bu kodu geliştirmek lazım..

Picbasicçilere bir soru;

basla : 
SerIn2 PORTD.0,32,5000,BASLA,[str SERIGEL\6] 
pause 400 
SEROUT2 PORTD.1,32,[serigel[0],serigel[1],13,10] 
pause 100 
goto basla



Bu döngüde seri bilgi alırken örneğin enter karakterine kadar tüm bilgileri bir sınırlama getirmeden alayım.. [str SERIGEL\6] (bunda serigelin 6 karakterini alıyor)  
Yani burdaki 6 sayısı olmadan istediğim karaktere (enter bilgisi )  kadar alsın..

Ve gönderme de de gelen verinin boyuna göre göndersin.

Picbasic buna açıkmı?
⌒╮'╭⌒╮⌒╮.
╱◥██◣                  
| 田︱田田|              
╬╬╬╬╬╬╬╬╬

Picproje - Sözde değil özde paylaşım..

TR-3X

güzel kardeşim bikere rastgele bir pinden haberleşme yapmazsın.. bunu söyleyen arkadaşlar yaptıgı çalışan YAZILIMI sana yollasınlar herkes bişey söylemiş ama pek mantıklı değil açıkçası..  senin seri porttan pc ile bir kartı haberleştirebilmen için RX/TX DEDİĞİMİZ özel asenkron veri hattını kullanman gerklidir.. ben şuan işteyim sana rx / tx paket programını yollarım.. onu kullanırsın eğer biraz visual basic veya c++ biliyorsan sende bir editör yap ve seri porttan bir metin yolla.. picede elektronik kart üzerinde bir lcd ye göstert bu yazıyı.. ediörü de yapıp yollardım ama malesef benimde çok işim var..

msn:Rayearth_jx@hotmail.com bana buradan ulaşırsın kolay gelsin.. :D

OG

Alıntı yapılan: "TR-3X"rastgele bir pinden haberleşme yapmazsın.. bunu söyleyen arkadaşlar yaptıgı çalışan YAZILIMI sana yollasınlar herkes bişey söylemiş ama pek mantıklı değil açıkçası.
Ne demek, açarmısın? Soft haberleşme için port sınırımı var? Mantıklısı nedir?
FORUMU İLGİLENDİREN KONULARA ÖM İLE CEVAP VERİLMEZ.