hserout virtual terminal

Başlatan fryrmnd, 24 Temmuz 2011, 15:29:16

fryrmnd

Merhaba arkadaşlar. Seri port için kullanacağım demo kod oluşturmaya çalışıyorum.Henüz pic de pc ye veri yollama aşamasındayım. Donanım kesmeli olarak yapmak istiyorum.Önce iki 16f877a yı haberleştirmeye çalıştım.Bir şekilde oldu. Daha sonra virtual terminale yollayayım dedim.Ama anladım ki Hserout kullanımında takıldığım bir yer var.
iki adat 16f877a için şu kodlar çalıştı

verici
DEFINE LCD_DREG		PORTB	
DEFINE LCD_DBIT			4		
DEFINE LCD_EREG		PORTB	
DEFINE LCD_EBIT			3		
DEFINE LCD_RSREG	PORTB	
DEFINE LCD_RSBIT		2				
DEFINE LCD_BITS			4	
DEFINE LCD_LINES		2
DEFINE LCD_COMMANDUS 2000
' Set data delay time in us
DEFINE LCD_DATAUS 50

DEFINE OSC 4
INTCON=%11000000
CMCON=7
ADCON1=7

DEFINE HSER_RCSTA 90h   
DEFINE HSER_TXSTA 20h   

DEFINE HSER_BAUD 2400


PORTA=0
PORTB=0
PORTD=0
PORTE=0
TRISA=0
TRISB=0
TRISD=0
TRISE=0
TRISC=%10000000

SYMBOL GIE=INTCON.7
SYMBOL PEIE=INTCON.6
SYMBOL RCIE=PIE1.5
SYMBOL RCIF=PIR1.5

VERITX VAR BYTE

PAUSE 300
LCDOUT $FE,1

VERITX=5

BASLA:
lcdout $FE,1
LCDOUT $FE,$80,"VERICI"

PAUSE 2000

LCDOUT $FE,1
LCDOUT $FE,$80,"YOLLANIYOR"
HSEROUT [VERITX]
pause 1000
goto basla

END


alıcı
DEFINE LCD_DREG		PORTB	
DEFINE LCD_DBIT			4		
DEFINE LCD_EREG		PORTB	
DEFINE LCD_EBIT			3		
DEFINE LCD_RSREG	PORTB	
DEFINE LCD_RSBIT		2				
DEFINE LCD_BITS			4	
DEFINE LCD_LINES		2

DEFINE OSC 4
INTCON=%11000000
CMCON=7
ADCON1=7

DEFINE HSER_RCSTA 90h   
DEFINE HSER_TXSTA 20h   
DEFINE HSER_BAUD  2400



PORTA=0
PORTB=0
PORTD=0
PORTE=0
TRISA=0
TRISB=0
TRISD=0
TRISE=0
TRISC=%10000000

SYMBOL GIE=INTCON.7
SYMBOL PEIE=INTCON.6
SYMBOL RCIE=PIE1.5
SYMBOL RCIF=PIR1.5

TEMP VAR BYTE
VERIRX VAR BYTE

ON INTERRUPT GOTO KESME

RCIE=1
PEIE=1
GIE=1

PAUSE 300
LCDOUT $FE,1

BASLA:

IF VERIRX=5 THEN
LCDOUT $FE,$80,"ALINDI"
ENDIF

GOTO BASLA

DISABLE
KESME:
GIE=0
TEMP=RCREG


HSERIN [VERIRX]

GIE=1

RESUME
ENABLE


şimdi verici kodu ile 877a dan  virtual terminale 5 yazmak istiyorum. RC6->rxd,RC7->txd bağladım. terminal ayarları 2400 ,8,none,1 stop bit,inverted şeklinde, başka bir şeye dokunmadım. 877a da "Processor Clock Frequency" 4 MHz yaptım.

Virtual terminalde "}" sembolü çıkıyor. Bu işte HSerout ve virtual terminal nasıl davranıyor. Acsıı ye göre hareket ediyor demiişti my75. Ama anlayamadım.Ascıı tablosuna göre hareket edip birşeyler uydurmaya çalışayım dedim olmadı. farkılı değerler verdim yolladığım dataya, desimal karşılına 48 ekleyip karakter değerini döndürdü. farklı bir değer verdim bu sefer 48 değilde 40 küsürlü bir ifade ekleyip ona göre bir değer gösterdi virtual terminal. Kaç gündür burda takıldım. Baya aradım ama bir çözüm bulamadım. Açıklığa kavuşturabilirseniz çok sevineceğim.

-Hasan-

VERITX=5


5 yazdırman için; 5 ' in ascii karşılığı olan $35 yollamanız gerekir, yani;

VERITX=$35


fryrmnd

#2
hocam yazdığınızı denedim gene farklı "e" değeri dönüyor. bağalantılarımda mı sıkıntı var acaba.resim de ekleyemiyorum. sizin bir deneme imkanıızın vaar mı acaba kodu

fryrmnd

sorunu çaktım galiba.teşekkürler

subram

Alıntı yapılan: fryrmnd - 24 Temmuz 2011, 16:20:35
sorunu çaktım galiba.teşekkürler

sorunu "çaktın" da nasıl oldu? ne oldu? sorun neydi? nasıl çözüldü? bilgi verirsen aynı sorunu yaşayan arkadaşlar olabilir!
http://www.elektronark.org  Türkiyede Elektronik Kültürünü Değiştirmeye Geliyoruz

fryrmnd

#5
 :o kusura  bakmayın. Yani deneme yoluyla nasıl çalıştığını anladım.
yani "A" yollamak için ascii karşılığının hex ifadesi olan "10" değerini



VERITX=10
HSEROUT [hex VERITX]
şekilinde yollamam gerekiyormuş.

yanlış hatırlamıyorsam

VERITX=$10  
HSEROUT [VERITX]


gibi bir ifade yazınca yanlış sonuç görmüştüm.


İnsan kendini geç kalmış hissedince sanki bu sorun tek kendinde var gibi bir hisse kapılıyor.

isikyasar

MERHABA ARKADAŞLAR
PC DEN PİC E VERİ YOLLAMAK İÇİN HSEROUT KOMUTUMU KULLANMAK GEREKİR?
BAUD AYARLARI NASIL YAPILIR?  9600-8-N-1

HYPER TERMİNALE YAZILAN YAZIYI PİC E BAĞLI LCD DE  OLDUĞU GİBİ YAZDIĞINI GÖRMÜŞTÜM BİYERDE. BU OLAY NASIL GERÇEKLEŞİR?

TEŞEKKÜRLER