RF KONTROL C KODLARI

Başlatan YILDIZEREN, 30 Kasım 2010, 14:20:22

YILDIZEREN

MERHABA ARKADAŞLAR BEN BU KODLARIN C YE ÇEVRİLMESİNİ RİCA EDİYORUM BANA YARDIMCI OLURMUSUNUZ

@ DEVICE pic16F628 
@ DEVICE pic16F628, WDT_OFF 
@ DEVICE pic16F628, PWRT_OFF 
@ DEVICE pic16F628, PROTECT_OFF 
@ DEVICE pic16F628, MCLR_ON 
@ DEVICE pic16F628, XT_OSC

include "modedefs.bas" 
VERI var  byte
SAY VAR BYTE   

SAY=0 
VERI=0           
TRISB=0
TRISA=%11111111
CMCON=7                 
PORTB=0
PORTA=0
               
BASLA:

IF PORTA.0=0 THEN
VERI=10
FOR SAY=1 TO 3       
serout2 PORTB.0,T2400,["TXRX",VERI]
NEXT
ELSE
VERI=0
ENDIF

IF PORTA.1=0 THEN
VERI=20 
FOR SAY=1 TO 3     
serout2 PORTB.0,T2400,["TXRX",VERI]
NEXT
ELSE
VERI=0
ENDIF

IF PORTA.2=0 THEN
VERI=30       
serout2 PORTB.0,T2400,["TXRX",VERI]
ELSE
VERI=0
ENDIF

IF PORTA.3=0 THEN
VERI=40       
serout2 PORTB.0,T2400,["TXRX",VERI]
ELSE
VERI=0
ENDIF

IF PORTA.4=0 THEN
VERI=50
FOR SAY=1 TO 3     
serout2 PORTB.0,T2400,["TXRX",VERI]
NEXT
ELSE
VERI=0
ENDIF

goto basla 

end                       




@ Device   PIC16F877         
@ Device   PIC16F877, WDT_OFF         
@ Device   PIC16F877, CPD_OFF         
@ Device   PIC16F877, PWRT_OFF          
@ Device   PIC16F877, BOD_OFF          
@ Device   PIC16F877, WRT_OFF          
@ Device   PIC16F877, PROTECT_OFF          
@ Device   PIC16F877, LVP_OFF          
@ Device   PIC16F877, DEBUG_OFF          
@ Device   PIC16F877, XT_OSC           
         
include "modedefs.bas"           
ALICI var  byte         
SAY VAR BYTE          
         
SAY=0           
ALICI=0         
TRISA=%11111111                      
TRISB=0         
TRISC=0         
TRISD=0                       
TRISE=0         
PORTA=0         
PORTB=0         
PORTC=0         
PORTD=0          
PORTE=0         
ADCON1=6         
         
PR2 = 255             
CCPR1L = 64           
CCP1CON = %00001100           
T2CON = %00000110          
         
BASLA:         
ALICI=0         
SERIN2 PORTA.0,T2400,BASLA,100,BASLA,[WAIT("TXRX"),ALICI]         
IF ALICI=10 THEN PORTB=1         
IF ALICI=20 THEN PORTB=2         
IF ALICI=30 AND CCPR1L<254 THEN CCPR1L = CCPR1L+1         
IF ALICI=40 AND CCPR1L>1 THEN CCPR1L = CCPR1L-1         
IF ALICI=50 THEN PORTB=0         
GOTO BASLA         
         
         
END         



Klein

IF PORTA.0=0 THEN
VERI=10 
FOR SAY=1 TO 3       
serout2 PORTB.0,T2400,["TXRX",VERI]
NEXT
ELSE
VERI=0
ENDIF

kısmını
if(PORTA & 0x01 == 0) {
      VERI=10;
      for(SAY=0;SAY<3;SAY++){
             gönder(VERI) (kullandığın derleyicinin seri karakter gönderme rutini )
      }
} else VERI=0;


şeklinde çevirebiliriz. Gerisini sen halledebilirsin.

YILDIZEREN

kodları okumaya çalışıyorum ama bunun anlamını bulamadım SAY VAR BYTE
include "modedefs.bas" 
VERI var  byte
SAY VAR BYTE 


YILDIZEREN

@ DEVICE pic16F628                   işlemcimiz pic16F628
@ DEVICE pic16F628, WDT_OFF                        WATCH DOG TİMER KAPALI
@ DEVICE pic16F628, PWRT_OFF                       POWER ON TİMER KAPALI
@ DEVICE pic16F628, PROTECT_OFF                      KOD PROTEK KAPALI
@ DEVICE pic16F628, MCLR_ON                           MCLR PİNİ KULLANILMIYOR
@ DEVICE pic16F628, XT_OSC                               DAHİLİ OSİLATÖR KULLANILMAYACAK

BANA YANLIŞLARIMI BİLDİRİRMİSİNİZ AÇIKLAMALAR DOGRU DİMİ

YILDIZEREN

ARKADAŞLAR BANA BU KODLARIN C YE ÇEVRİLMESİNDE YARDIM EDERMİSİNİZ BİLEN İNSANIN 5 DAKİKASINI ALIR BİLMEYEN İNSANIN GÜNLERİNİ ALIR 5 DAKİKANIZI BANA AYIRIP ŞUNLARI  C YE ÇEVİRSEK


VERİCİ DEVRESİ
@ DEVICE pic16F628
@ DEVICE pic16F628, WDT_OFF
@ DEVICE pic16F628, PWRT_OFF
@ DEVICE pic16F628, PROTECT_OFF
@ DEVICE pic16F628, MCLR_ON
@ DEVICE pic16F628, XT_OSC
include "modedefs.bas"
VERI var byte 56
SAY VAR BYTE
SAY=0
VERI=0
TRISB=0
TRISA=%00011111
CMCON=7
PORTB=0
PORTA=0

BASLA:
IF PORTA.0=0 THEN VERI=10
IF PORTA.1=0 THEN VERI=20

IF PORTA.2=0 THEN VERI=30
IF PORTA.3=0 THEN VERI=40
IF PORTA.4=0 THEN VERI=50

IF VERI>0 then GOSUB GONDER
VERI=0
goto basla
GONDER:
SEROUT2 PORTB.0,396,[REP$AA\5,REP$00\5,REP$FF\5]
serout2 PORTB.0,396,["T","X","R","X",dec VERI]
return
end
   
ALICI DEVRESİ İÇİN
@ Device PIC16F877
@ Device PIC16F877, WDT_OFF
@ Device PIC16F877, CPD_OFF
@ Device PIC16F877, PWRT_OFF
@ Device PIC16F877, BOD_OFF
@ Device PIC16F877, WRT_OFF
@ Device PIC16F877, PROTECT_OFF
@ Device PIC16F877, LVP_OFF
@ Device PIC16F877, DEBUG_OFF
@ Device PIC16F877, XT_OSC
include "modedefs.bas"
ALICI var byte 56   SAY VAR BYTE 57
SAY=0
ALICI=0
TRISA=%11111111
TRISB=0
TRISC=0
TRISD=0
TRISE=0
PORTA=0
PORTB=0
PORTC=0
PORTD=0
PORTE=0
ADCON1=6
PR2 = 255
CCPR1L = 64
CCP1CON = %00001100
T2CON = %00000110
BASLA:
SERIN2 PORTA.0,396,3,BASLA,[WAIT("TXRX"),dec ALICI]
SAY=ALICI
IF ALICI=10 THEN PORTB=1
IF ALICI=20 THEN PORTB=2
IF ALICI=30 AND CCPR1L<254 THEN CCPR1L = CCPR1L+1
IF ALICI=40 AND CCPR1L>1 THEN CCPR1L = CCPR1L-1
IF ALICI=50 THEN PORTB=0
ALICI=0
GOTO BASLA
   
END

ErsinErce

1 haftadır Pascal bilmediğim halde Pascal dan C ye kontrol fonksiyonlarını çeviriyorum. Azıcık uğraşın arkadaşlar ya nedir bu hazırcılık...
Bu kodlar Proton Basic e ait Proton un yardım dosyasını bulup C deki karşılığını çok rahat yazabilirsiniz. Hiç Basic bilmeyen birinin en fazla 1 gününü alır

ilk başlangıcınıda ben yapıyım "SAY VAR BYTE" "unsigned char say;" olarak C ye çevrilir.

Ruzgarbey

bukodlar proton değil picbasic tir arkadaşlar.hoş protonunda fazla bir farkı yok.kodlar karmaşık bir yapıya sahip değil,dolayısı ile her bir satırdaki kodun c diline çevrilmesi çok kolay olduğunu düşünüorum bu dili bilen birisi için ;

IF PORTA.0=0 THEN VERI=10 'A portunun 0. biti=0 ise VERI değişkenine 10 sayısını yükle
IF PORTA.1=0 THEN VERI=20 'A portunun 1. biti=0 ise VERI değişkenine 20 sayısını yükle

IF VERI>0 then GOSUB GONDER  'VERI değişkeni 0 dan büyük ise GONDER alt rutine git

her şeyi hazır beklemek kişinin kendisini geliştirmesine engeldir.bende hiç C bilmediğim halde bazen C dilinde hazırlanmış programları protona veya basice çevirmeye çalışıyorum.saygılarımla..
Hayatta En Hakiki Mürşid İlimdir. M.K. ATATÜRK