Haberler:

Foruma Resim Yükleme ve Boyut Sınırlaması ( ! )  https://bit.ly/2GMFb8H

Ana Menü

Yardım lütfen. seri haberleşme

Başlatan vurkacoglu, 10 Ocak 2005, 16:31:30

vurkacoglu

program A/D dönüşüm sonucunu seri port üzerinden bilgisayara gönderiyo. proteus da simülasyon gayet güzel çalıştı. ama devreyi kurup bilgisayara bağladığımda çalışmıyo.

devre şemasını ekledim.


         
         Include "PROTON_4.INC"
'      device 16F877A
      ADIN_RES   10               
         ADIN_STIME   100                 
'      Config cp_off, wdt_off, xt_osc
      declare hserial_baud 9600
      
      Dim dz[10]      as Word         
      Dim a           as DWord
      Dim b         as DWord
      Dim c         as DWord
      Dim d         as DWord
         Dim e           as DWord
      Dim f         as DWord
      Dim g         as DWord
      Dim h         as DWord
         Dim j           as DWord
      Dim k         as Dword
      Dim l         as Dword
      Dim v          as Word
      Dim volt      as word
      Dim i          as BYTE
      Dim Mili      as byte   
         Dim sonuc      as a.WORD0      
       Dim zeta      as a.Byte0
      dim teta      as Byte
      
      Delayms 50                  
      Cls
      TRISD = %00000000                        
      TRISA.0 = 1                  
         ADCON1 = %10000101            
      ADCON0 = %01000000            
      HIGH PORTD.2
      DELAYMS 1000
      LOW PORTD.2
      
Tekrar:   HIGH PORTD.2
      For i = 0 to 9
'      dz = ADIN 0
      v = ADIN 0
      volt = v - 511
      dz = Abs volt
'      Delayus 1785
      delayus   1345
      Next i                        
      
      
       a = dz[0]*dz[0]
      b = dz[1]*dz[1]
      c = dz[2]*dz[2]
      d = dz[3]*dz[3]
      e = dz[4]*dz[4]
      f = dz[5]*dz[5]
      g = dz[6]*dz[6]
      h = dz[7]*dz[7]
      j = dz[8]*dz[8]
      l = dz[9]*dz[9]
      
      k = a+b+c
      a = d+e+f
      b = g+h+j
      f = k+a+b
      c = f+l
      
      d = c/10
      
      a = d/16
      
      v = SQR sonuc
      volt = v*4
      
      a = volt
      
      i = zeta & %00001111
      teta = SQR i
      v = volt + teta
      volt = v
      
      b = volt
      
      v = 250 *(volt / 5)         
      volt = v / 10000
      Mili = (v // 10000) / 100
         
      
      LOW PORTD.2
'      Print at 1,1,Dec1 volt,".",Dec2 Mili,"V"
'      Print at 2,1,"a = ",dec a
'      Print at 3,1,"b = ",dec b
'      Print at 4,1,"dz[0] = ",dec dz[0]
                  
      Hserout [Dec1 volt,".",Dec2 Mili,13]
      hserout [%11111111]
      serout portd.3, 16468, [Dec1 volt,".",Dec2 Mili,13]
      serout portd.3, 16468, [%11111111]
      Goto Tekrar

vurkacoglu

tama oldu başardım ama işin komik tarafı ben baud rate olarak 2400 seçtim programı yazarken. fakat terminalde 2400 seçince çalışmıyo 9600 seçince çalışmaya başladı anlamadım gitti.
son bir soru daha peki ben gelen verilerin hyperterminalde yukardan aşşağıya akmasını istiyorum bunun için ne yapmam gerekiyor.

mmengi

mod 16468 zaten 9600 baud için seçilmesi gereken değer sende öyle yapmışsın zaten.  :)

vurkacoglu

@mmengi

yukardaki programda öyle ama ben onları değiştirdim

declare hserial_baud 2400
Hserout [Dec1 volt,".",Dec2 Mili,13]
'      hserout [%11111111]
      serout portd.3, 16780, [Dec1 volt,".",Dec2 Mili,13]
      serout portd.3, 16780, [%11111111]

şu anda bunları kullanıyom ama terminalde ise 9600 seçili. çalışıyo hemde doğru çalışıyo. bu ne saçmalıktır diye düşünüyodum ki

include "proton_4.inc" içerisinde boud rate 9600 olarak declare edilmiş.

anlaşılan sonradan yapılan tanımlamaları göz ardı ediyo derleyici.

peki hyperterminal de nasıl yukardan aşşağıya yazdıracaz gelen dataları.

mmengi

sonuna koyduğun 13 degerleri return yerine geçiyor olması lazım ama emin değilim.Sanki 13 olmuyormuydu da başka bir kod koyuyorduk epeydir uğraşmıyorumda bu konularla bir bakıp denemek lazım.

Digimensch

serout portd.3, 16780, [Dec1 volt,".",Dec2 Mili,13]
burda 16780 kullanmissin ozaman Hyper Teminalde 2400 speed kullanmalisin.
yada hyper terminalde 9600 kullanacaksan bu satiri söyle yap
serout portd.3, 16486, [Dec1 volt,".",Dec2 Mili,13]
birde böyle dene bende ayni sorun ile karsilasmistim ugrasirken ugrasirken böyle bir cüzüm bulmustum.