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
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.
kodları okumaya çalışıyorum ama bunun anlamını bulamadım SAY VAR BYTE
include "modedefs.bas"
VERI var byte
SAY VAR BYTE
@ 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İ
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
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.
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..