Seri haberleşmede sorun :S Yardım Lütfen

Başlatan nuri2978, 16 Nisan 2008, 22:30:55

nuri2978

Arkadaşlar aşağıdaki programda ne gibi bir sorun olabilir :S Proteusda çalışıyor ancak devreyi kurduğum zaman seri porttan gönderdiğim bilgileri alamıyorum..Bilgisayarda RS232 olmadığı için Com To USB  converter kullandık rs232 yi UB ye cevirdik bazı dataları normal alıyoruz ama geneli gereksiz gelior...252 gibi filan.

Birde bunu daha basit bir şekilde işlemciyi yormadan nasıı yapabilirz bu kodlar işlemciyi sanırım yoruyormu ne acaba :S



include "modedefs.bas"
define osc 4
TRISC=255
PORTC=0
TRISB=0
PORTB=0
;-------------------------------------------------------------------
ON INTERRUPT GoTo TARA   'kesme oluşursa KESME adlı etikete git.
OPTION_REG=%10000101       'Pull up dirençleri İPTAL- Bölme oranı 1/64.
INTCON=%10100000         'Kesmeler aktif ve TMR0 kesmesi aktif
TMR0=0
;-------------------------------------------------------------------
DEFINE   ADC_BITS   8          'A/D çevirim sonucu kaç bit olacak
DEFINE   ADC_CLOCK   3   'Clock kaynağı (3=rc)
DEFINE   ADC_SAMPLEUS   100   'Örnekleme zamanı mikro saniye cinsinden.
ADCON1=%00001110 '7. bit 1 yapıldı 10 bit sonuç almak için.
HAM  var BYTE  'ADC den okunan ham Digital değer.                                                                        
HAM1 VAR BYTE
HAM2 VAR BYTE
HAM3 VAR BYTE
HAM4 VAR BYTE
;-------------------------------------------------------------------
BASLA:    
ADCIN 0,HAM
ADCIN 1,HAM1
IF ADCON0.2=0 THEN PAUSE 20
HAM=HAM-5:HAM1=HAM1-5:PAUSEUS 10
'SEROUT PORTC.6,N9600,[#HAM,13]:PAUSE 2000
   IF HAM<>122 THEN
           IF HAM>250 THEN HAM=8
           PAUSEUS 1
           HAM=HAM/25
           IF HAM=251 THEN HAM=1
           IF HAM<2 THEN HAM=1
           IF HAM>7 THEN HAM=8
           SEROUT PORTC.6,N9600,[#HAM]:ENDIF:PAUSE 20        
   IF HAM1<>122 THEN
           IF HAM1>250 THEN HAM1=1
           pauseus 1
           HAM1=HAM1/25
           IF HAM1=251 THEN HAM1=1
           IF HAM1<2 THEN HAM1=1
           IF HAM1>7 THEN HAM1=8
           SEROUT PORTC.6,N9600,[#HAM1]:ENDIF:PAUSE 20
PAUSEUS 10
GOTO BASLA


MENU1:
IF PORTC.4=1 THEN MENU1
PAUSE 20
SEROUT PORTC.6,N9600,["A"] ;MENU
MENU:
DISABLE
IF PORTC.4=1 THEN
PAUSE 20
GOTO BIRAK ;MENU TUŞUNA BASILMIŞSA MENUDEN CIK.
ELSE
ADCIN 2,HAM2
ADCIN 3,HAM3
ADCIN 4,HAM4
IF ADCON0.2=0 THEN PAUSE 20
HAM2=HAM2-5:HAM3=HAM3-5:HAM4=HAM4-5
   IF HAM2<>122 THEN              
           IF HAM2>250 THEN HAM2=1
           PAUSEUS 1
           HAM2=HAM2/26
           IF HAM2=251 THEN HAM2=1
           IF HAM2<2 THEN HAM2=1
           IF HAM2>7 THEN HAM2=8
           SEROUT PORTC.6,N9600,[#HAM2]:ENDIF:PAUSE 20
   IF HAM3<>122 THEN              
           IF HAM3>250 THEN HAM3=1
           PAUSEUS 1
           HAM3=HAM3/26
           IF HAM3=251 THEN HAM3=1
           IF HAM3<2 THEN HAM3=1
           IF HAM3>7 THEN HAM3=8
           SEROUT PORTC.6,N9600,[#HAM3]:ENDIF:PAUSE 20
   IF HAM4<>122 THEN
           IF HAM4>250 THEN HAM4=1
           PAUSEUS 1
           HAM4=HAM4/26
           IF HAM4=251 THEN HAM4=1
           IF HAM4<2 THEN HAM4=1
           IF HAM4>7 THEN HAM4=8
           SEROUT PORTC.6,N9600,[#HAM4]:ENDIF:PAUSE 20
ENDIF
GOTO MENU
BIRAK:
IF PORTC.4=1 THEN BIRAK:PAUSE 20
ENABLE
GOTO BASLA

DISABLE
TARA:
IF PORTC.5=1 THEN
SEROUT PORTC.6,N9600,["E"] ;SU MOTORLAR 1.HAREKET SAĞ
PAUSE 1
ENDIF
IF PORTD.0=1 THEN
SEROUT PORTC.6,N9600,["G"] ;SU MOTORLAR 1.HAREKET SOL
PAUSE 1
ENDIF
IF PORTD.1=1 THEN
SEROUT PORTC.6,N9600,["H"] ;SU MOTORLAR 2.HAREKET YUKARI
PAUSE 1
ENDIF
IF PORTD.2=1 THEN
SEROUT PORTC.6,N9600,["I"] ;SU MOTORLAR 2.HAREKET AŞAĞI
PAUSE 1
ENDIF
IF PORTD.3=1 THEN
SEROUT PORTC.6,N9600,["J"] ;SU MOTORLAR 3.HAREKET SAĞ
PAUSE 1
ENDIF
IF PORTD.4=1 THEN
SEROUT PORTC.6,N9600,["K"] ;SU MOTORLAR 3.HAREKET SOL
PAUSE 1
ENDIF
;----------------------TARET---HAREKETLERİ---------------------------
IF PORTB.0=1 THEN
SEROUT PORTC.6,N9600,["L"] ; 1.HAREKET SAĞ                          
PAUSE 1
ENDIF
IF PORTB.1=1 THEN
SEROUT PORTC.6,N9600,["M"] ; 1.HAREKET SOL
PAUSE 1
ENDIF
IF PORTB.2=1 THEN
SEROUT PORTC.6,N9600,["N"] ;2.HAREKET YUKARI
PAUSE 1
ENDIF
IF PORTB.3=1 THEN
SEROUT PORTC.6,N9600,["O"] ;2.HAREKET AŞAĞI
PAUSE 1
ENDIF
IF PORTB.4=1 THEN
SEROUT PORTC.6,N9600,["P"] ;3.HAREKET YUKARI
PAUSE 1
ENDIF
IF PORTB.5=1 THEN
SEROUT PORTC.6,N9600,["Q"] ;3.HAREKET AŞAĞI
PAUSE 1
ENDIF
IF PORTB.6=1 THEN
SEROUT PORTC.6,N9600,["R"] ;4.HAREKET SAĞ
PAUSE 1
ENDIF
IF PORTB.7=1 THEN
SEROUT PORTC.6,N9600,["S"] ;4.HAREKET SOL
PAUSE 1
ENDIF
IF PORTD.7=1 THEN
SEROUT PORTC.6,N9600,["T"] ; 5.HAREKET YUKARI                          
PAUSE 1
ENDIF
IF PORTE.0=1 THEN
SEROUT PORTC.6,N9600,["U"] ; 5.HAREKET AŞAĞI                        
PAUSE 1
ENDIF
IF PORTE.1=1 THEN
SEROUT PORTC.6,N9600,["V"] ; 6.HAREKET YUKARI
PAUSE 1
ENDIF
IF PORTE.2=1 THEN
SEROUT PORTC.6,N9600,["W"] ; 6.HAREKET AŞAĞI                        
PAUSE 1
ENDIF
IF PORTD.5=1 THEN
SEROUT PORTC.6,N9600,["X"] ; 7.HAREKET YUKARI                          
PAUSE 1
ENDIF
IF PORTD.6=1 THEN
SEROUT PORTC.6,N9600,["Y"] ; 7.HAREKET AŞAĞI                          
PAUSE 1
ENDIF
IF PORTC.0=1 THEN
SEROUT PORTC.6,N9600,["D"] ; 'HIZ' PWM ARTIR                          
PAUSE 1
ENDIF

IF PORTC.1=1 THEN
SEROUT PORTC.6,N9600,["E"] ; 'HIZ' PWM AZALT                          
PAUSE 1
ENDIF

IF PORTC.2=1 THEN
SEROUT PORTC.6,N9600,["B"] ; ATEŞ HAZIR
PAUSE 1
ENDIF

IF PORTC.3=1 THEN
SEROUT PORTC.6,N9600,["C"] ; ATEŞ                          
PAUSE 1
ENDIF
;menu
IF PORTC.4=1 THEN ;MENU
PAUSE 20
GOTO MENU1:ENDIF
   PAUSE 100
   INTCON.2=0
   RESUME
   ENABLE
   END
Benimle gel arkadaşım gel ve sonu gor

alpaslan

nuri2978

ne yapmak istediğin anlaşılmıyor. Sanırım POT larla ve butonlarla motor hız ve yön kontrolü yapmak istiyorsun, yardımım olabilir... ama dsn resmini koymazsan yardım edemem.