C Kodunu Hex Koduna Çevirme

kardes sana zahmet 16f628a ile basıt bır termometre devreside bana hazırlasan bızım yegenın tez odevı ımış gereklı dokumanları aldık pıc programlama ogrenmek ıcın ama daha acemıyız ınternetten ındırdıklerımızde hatalı calışmıyor ayarlarsan sana zahmet pek makbule gecer sımdıden tesekkur ederım
 
arkadaşlar merhaba. Bir konu hakkın da yardımlarınızı rica ediyorum. Benim bir kodum var qbasicde yazılmış bunu pic'e atmak için c'ye çevirmem gerekiyor. Yardımcı olabilir misiniz?
 
@ device pic16f877 'işlemci 16F877
@ device pic16f877, wdt_off 'Watch Dog timer kapalı
@ device pic16f877, pwrt_on 'Power on timer açık
@ device pic16f877, protect_off 'Kod Koruma kapalı

'---------------------------Lcd TANIMLAMALARI[BAŞLA]----------------------------
Define LCD_DREG PORTB 'LCD data bacakları hangi porta bağlı?
Define LCD_DBIT 4 'LCD data bacakları hangi bitten başlıyor?
Define LCD_EREG PORTB 'LCD Enable Bacağı Hangi Porta bağlı?
Define LCD_EBIT 3 'LCD Enable Bacağı Hangi bite bağlı ?
Define LCD_RWREG PORTB 'LCD R/W Bacağı Hangi Porta bağlı?
Define LCD_RWBIT 2 'LCD R/W Bacağı Hangi bite bağlı ?
Define LCD_RSREG PORTB 'LCD RS Bacağı Hangi Porta bağlı ?
Define LCD_RSBIT 1 'LCD RS bacağı Hangi Bite bağlı ?
Define LCD_BITS 4 'LCD 4 bit mi yoksa 8 bit olarak bağlı?
Define LCD_LINES 2 'LCD Kaç sıra yazabiliyor
'---------------------------LCD TANIMLAMALARI[BİTİŞ]----------------------------

'-------------------------DEĞİŞKEN TANIMLAMALARI[BAŞLA]-------------------------
TRISA=%00011111
TRISB=0
TRISC=0
TRISD=0
TRISE=0
ADCON1=7
SIRA var byte
SECENEK var byte
SALISE var byte
SANIYE var byte
DAKIKA var byte
SAAT var byte
SAYAC VAR BYTE
TIP VAR BYTE
SALISEYENI var byte
SANIYEYENI var byte
DAKIKAYENI var bytE
SAATYENI var byte
MENU VAR PORTA.0
YUKARI var PORTA.1
ASAGI var PORTA.2
MODE VAR PORTA.3
DURDUR VAR PORTA.4
'-------------------------DEĞİŞKEN TANIMLAMALARI[BİTİŞ]-------------------------

'-------------------------LCD KARAKTER HAFIZASI[BAŞLA]--------------------------
LCDOUT $FE,$40, $00, $00, $00, $00, $00, $00, $00, $00 'CGRAM 0. ADRES " "
LCDOUT $FE,$48, $00, $04, $06, $1F, $06, $04, $00, $00 'CGRAM 1. "OK"
LCDOUT $FE,$50, $00, $00, $00, $00, $00, $00, $00, $00 'CGRAM 2. ADRES " "
LCDOUT $FE,$58, $1B, $0E, $11, $15, $17, $11, $0E, $00 'CGRAM 3. ADRES "kronometre"
LCDOUT $FE,$70, $04, $00, $0E, $04, $04, $04, $0E, $00 'CGRAM 6. "i"
'-------------------------LCD KARAKTER HAFIZASI[BİTİŞ]--------------------------

SAAT=0
DAKIKA=0
SANIYE=0
SALISE=0
SAATyeni=0
DAKIKAyeni=0
SANIYEyeni=0
SALISEyeni=0
clear
'----------------------------ANA MENU[BAŞLA]------------------------------------
BASLANGIC:
Lcdout $fe, 1
if asagi=0 then
if sira<1 then
call gecikme
sira=sira+1
else
sira=0
endif
endif
if YUKARI =0 then
if sira<1 then
call gecikme
sira=sira-1
else
sira=0
endif
endif
IF SIRA>1 THEN SIRA=1
LCDOUT $FE,$80,SIRA+1," KRONOMETRE"
LCDOUT $FE,$C0,SIRA," GER",6," SAYIM"
CALL GECIKME
SAAT=0
DAKIKA=0
SANIYE=0
SALISE=0
SAATyeni=0
DAKIKAyeni=0
SANIYEyeni=0
SALISEyeni=0
IF SIRA=0 AND MENU=0 THEN
while menu=0
wend
GOTO KRONOMETRE
ENDIF
IF MENU=0 THEN
while menu=0
wend
goto GERI_SAYIM
endif
goto BASLANGIC
'----------------------------ANA MENU[BİTİŞ]------------------------------------

'---------------------------GERİ SAYIM[BAŞLA]-----------------------------------
GERI_SAYIM:
LCDOUT $FE,1
LCDOUT $FE,$83,"GER",6," SAYIM"
LCDOUT $FE,$C1,3," ",DEC2 SAAT,":",DEC2 DAKIKA,":",DEC2 SANIYE,":",DEC2 SALISE
call gecikme
IF DURDUR=0 THEN
while DURDUR=0
wend
IF SECENEK<2 THEN
SECENEK=SECENEK+1
ELSE
SECENEK=0
CALL GECIKME
ENDIF
ENDIF

IF SECENEK=0 THEN
IF ASAGI=0 THEN
IF SAAT=0 THEN SAAT=100
SAAT=SAAT-1
CALL GECIKME
ENDIF
IF YUKARI=0 THEN
IF SAAT=99 THEN SAAT=-1
SAAT=SAAT+1
CALL GECIKME
ENDIF
ENDIF

IF SECENEK=1 THEN
IF ASAGI=0 THEN
IF DAKIKA=0 THEN DAKIKA=60
DAKIKA=DAKIKA-1
CALL GECIKME
ENDIF
IF YUKARI=0 THEN
IF DAKIKA=>59 THEN DAKIKA=-1
DAKIKA=DAKIKA+1
CALL GECIKME
ENDIF
ENDIF

IF SECENEK=2 THEN
IF ASAGI=0 THEN
IF SANIYE=0 THEN SANIYE=60
SANIYE=SANIYE-1
CALL GECIKME
ENDIF
IF YUKARI=0 THEN
IF SANIYE=>59 THEN SANIYE=-1
SANIYE=SANIYE+1
CALL GECIKME
ENDIF
ENDIF
if mode=0 then
while mode=0
wend
TIP=1

if SALISE=0 AND SANIYE=0 AND DAKIKA=0 AND SAAT=0 THEN
GOTO GERI_SAYIM
ELSE

IF saat=>0 AND dakika=>0 AND SANIYE>0 THEN
SANIYE=SANIYE-1
ELSE
IF DAKIKA=0 AND SANIYE=0 THEN
IF SAAT>0 THEN SAAT=SAAT-1 : DAKIKA=59 :SANIYE=59
ENDIF

IF SANIYE=0 THEN
IF DAKIKA>0 THEN DAKIKA=DAKIKA-1 : sANIYE=59
ENDIF
ENDIF
salise=100

goto KESME_AYAR
ENDIF

else
if menu=0 then
while menu=0
wend
goto BASLANGIC
else
GOTO GERI_SAYIM
endif
ENDIF
'---------------------------GERİ SAYIM[BİTİŞ]-----------------------------------

'------------------------KRONOMETRE MENÜSÜ[BAŞLA]-------------------------------
KRONOMETRE:
LCDOUT $FE,1
LCDOUT $FE,$83,"KRONOMETRE"
LCDOUT $FE,$C1,3," ",DEC2 SAAT,":",DEC2 dakika,":",DEC2 saniye,":",DEC2 salise
CALL GECIKME
if mode=0 then
while mode=0
wend
TIP=0
goto KESME_AYAR
else
if menu=0 then
while menu=0
wend
goto BASLANGIC
else
GOTO KRONOMETRE
endif
endif
'--------------------------KRONOMETRE MENÜSÜ[BİTİŞ]-----------------------------

'-----------------------KESME KONFİGÜRASYONU[BAŞLA]-----------------------------
KESME_AYAR:

ON INTERRUPT GoTo KESME '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
IF TIP=0 THEN GOTO ARTIR
IF TIP=1 THEN GOTO AZALT
'-----------------------KESME KONFİGÜRASYONU[BİTİŞ]-----------------------------

'----------------------------GERI SAYIM[BAŞLA]----------------------------------
AZALT:
LCDOUT $FE,$C3, DEC2 SAAT,":",DEC2 DAKIKA,":",DEC2 SANIYE,":",DEC2 SALISE
if mode=0 then
SALISEyeni=SALISE
SANIYEyeni=SANIYE
SAATyeni=SAAT
DAKIKAyeni=DAKIKA
while mode=0
wend
goto G_DURAGAN_ZAMAN:
else
goto AZALT
endif

G_DURAGAN_ZAMAN:
if durdur=0 then
HIGH PORTB.0
SAAT=0
DAKIKA=0
SANIYE=0
SALISE=0
SAATyeni=0
DAKIKAyeni=0
SANIYEyeni=0
SALISEyeni=0
endif
LCDOUT $FE,$C3, DEC2 SAATYENI,":",DEC2 DAKIKAYENI,":",DEC2 SANIYEYENI,":",DEC2 SALISEYENI
if mode=0 then
while mode=0
wend
goto G_DEVAM
else
if menu=0 then
CALL GECIKME
goto BASLANGIC
else
GOTO G_DURAGAN_ZAMAN
endif
endif

G_DEVAM:
SAAT=SAATyeni
DAKIKA=DAKIKAyeni
SANIYE=SANIYEyeni
SALISE=SALISEyeni
goto AZALT

'----------------------------GERI SAYIM[BİTİŞ]----------------------------------

'----------------------------KRONOMETRE[BAŞLA]----------------------------------
ARTIR:
LCDOUT $FE,$C3,DEC2 saat,":",DEC2 dakika,":",DEC2 saniye,":",DEC2 salise

if mode=0 then
saliseyeni=salise
saniyeyeni=saniye
saatyeni=saat
dakikayeni=dakika
while mode=0
wend
goto K_DURAGAN_ZAMAN:
else
goto ARTIR
endif

K_DURAGAN_ZAMAN:
if durdur=0 then
saatyeni=0
dakikayeni=0
saniyeyeni=0
saliseyeni=0
endif
LCDOUT $FE,$C3,DEC2 SAATYENI,":",DEC2 dakikaYENI,":",DEC2 saniyeYENI,":",DEC2 saliseYENI
if mode=0 then
while mode=0
wend
goto K_DEVAM
else
if menu=0 then
CALL GECIKME
goto BASLANGIC
else
GOTO K_DURAGAN_ZAMAN
endif
endif

K_DEVAM:
saat=saatyeni
dakika=dakikayeni
saniye=saniyeyeni
salise=saliseyeni
goto ARTIR
'----------------------------KRONOMETRE[BİTİŞ]----------------------------------

'------------------------KESME FONKSIYONU[BAŞLA]--------------------------------
DISABLE
KESME:
IF TIP=0 THEN
SAYAC=SAYAC+1
IF SAYAC=1 then
SAYAC=0
salise=salise+1
IF salise=100 THEN
salise=0
saniye=saniye+1
IF saniye=60 THEN
saniye=0
dakika=dakika+1
IF dakika=60 THEN
dakika=0
saat=saat+1
IF saat=99 THEN saat=0
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF

IF TIP=1 THEN
SAYAC=SAYAC+1
IF SAYAC=1 then
SAYAC=0
SALISE=SALISE-1
IF SALISE=0 THEN
IF SANIYE<>0 THEN
SANIYE=SANIYE-1
SALISE=100
ENDIF
IF SANIYE=0 THEN
IF DAKIKA<>0 THEN
DAKIKA=DAKIKA-1
SANIYE=59
ENDIF
IF DAKIKA=0 THEN
IF SAAT<>0 THEN
SAAT=SAAT-1
DAKIKA=59
ENDIF
ENDIF
ENDIF
ENDIF
ENDIF
if SALISE=0 AND SANIYE=0 AND DAKIKA=0 AND SAAT=0 THEN GOTO GERI_SAYIM
ENDIF
INTCON.2=0
RESUME
'------------------------KESME FONKSIYONU[BİTİŞ]--------------------------------
GECIKME:
PAUSE 100
RETURN
END

kodum da bu arkadaşlar. şimdiden teşekkürler
 
slm arkadaşlar..aşağıdaki c programını hexe çevirirken sorun yaşıyorum..CMCON satırında hata veriyor..yardımcı olabilecek olan var mı? şimdiden teşekkürler..
#include <pic.h>
#include <delay.c>
#include <Lcd.c>
#include <stdio.h>


//Konfigurasyon ayarlari
__CONFIG(WDTDIS&LVPDIS&PWRTEN&XT);


// Reed anahtar RA0'a pinine bagli
#define SW RA0


// Global degiskenler
unsigned char kontrol=0;
unsigned char sonuc[]=" ";
unsigned int CX;
float pi=3.14159, r=0.0022; //Türbin yaricapi


//---- TIMER kesme alt programi -----
void interrupt kesme(void){
CX++;
if(CX>10000)kontrol=1;

T0IF=0; // Bayragi temizle
TMR0=131; // TIMER'i tekrar yukle
}


//--------- LCD alt programi----------
void LCD_yaz(void){
float hiz;
unsigned int hiz2;


lcd_clear(); // LCD'yi temizle
hiz=2*pi*r*10^(-3)/CX; // m/sn cinsinden
hiz2=(int)hiz; // hiz degerini hesapla


lcd_goto(0x00); lcd_puts(" AKISKAN HIZI ");


if(kontrol==0){ // Sonucu LCD'ye yazdir
sprintf(sonuc+3,"%d m/sn",hiz2);
lcd_goto(0x40); lcd_puts(sonuc);
}


else{ // Türbin duruyorsa Hiz=0 yazdir
lcd_goto(0x41); lcd_puts("*** HIZ=0 ***");
}

}
//----------- ANA PROGRAM ------------


main(void)
{

TRISA=0x01; // Port A'nin ilk pini giris
TRISB=0x00; // PortB'nin hepsi cikis
CMCON=0x07; // PortA sayisal giris
PORTA=0; // Baslangic durumu ayarlari
PORTB=0;


// LCD islemleri
DelayMs(250);
lcd_init();
lcd_clear();
lcd_write(0x0C); //imleci gizle
lcd_goto(0x00); lcd_puts(" AKISKAN HIZI ");


// TIMER islemleri
T0CS=0; // Dahili clock
PSA=0; // Prescaler TMR0 icin ayarli
PS0=0; PS1=1; PS2=0; // Oran 1:8
ei(); // Butun kesmeler etkin
T0IE=0; // Baslangicta TIMER pasif
T0IF=0; // Bayrak temizle


// Hiz olcum islemleri
for(;;){


CX=0; kontrol=0;

while(SW==0); // Giris 0 ise bekle
TMR0=131; // 125 sayim (256-131=125)
T0IE=1; // TIMER baslat
while(SW==1); // Giris 1 ise bekle
while(kontrol==0){if(SW==1)break;}


T0IE=0; // TIMER'i durdur
LCD_yaz(); // LCD alt programina git


DelayMs(250); // 250 ms bekle
while(SW==1);


} // islemleri tekrarla
} // Programin sonu
 
#include <pic.h>
#include <delay.c>


main(void)
{


unsigned int i;
unsigned char dizi[]={
0x00,0x84,0xFD,0x84,0x00,0x00, // İ
0xFF,0x04,0x08,0x10,0xFF,0x00, // N
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0xFF,0x81,0x81,0x81,0x7E,0x00, // D
0x00,0x81,0xFF,0x81,0x00,0x00, // I
0xFF,0x04,0x08,0x10,0xFF,0x00, // N
0xFC,0x12,0x11,0x12,0xFC,0x00, // A
0x00,0x00,0x00,0x00,0x00,0x00, // Bosluk
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0x46,0x89,0x89,0x89,0x72,0x00, // S
0xFF,0x89,0x89,0x89,0x81,0x00, // E
0x46,0x89,0x89,0x89,0x72,0x00, // S
};


TRISB=0;


for(;;){
for(i=0;i<72;i++){
PORTB=dizi;
DelayMs(1); // 1ms bekle
}
DelayMs(72); // 72ms bekle
}








arkadaslar bunu pıc16f84a ya göre hex yapabılılıcek olan varmı acılllll
 
arkadaslar gulucek olan yer ; ) böle arada bosluk yok yazınca gulucuk dıe cıktı
 
beyler sunu c kodda yazdım kodu hex cevırebılcek var mı ?



#include <pic.h>
#include <delay.c>


main(void)
{


unsigned int i;
unsigned char dizi[]={
0x7E,0x81,0x81,0x81,0x7E,0x00, // O
0xFF,0x04,0x08,0x10,0xFF,0x00, // N
0x7F,0x80,0x80,0x80,0x7F,0x00, // U
0xFF,0x11,0x31,0x51,0x8E,0x00, // R
0x00,0x00,0x00,0x00,0x00,0x00, // Bosluk
0x7F,0x81,0x81,0x91,0x72,0x00, // G
0x46,0x89,0x89,0x89,0x72,0x00, // S
0x00,0x00,0x00,0x00,0x00,0x00 // Bosluk
};


TRISB=0;


for(;;){
for(i=0;i<48;i++){
PORTB=dizi;
DelayMs(1); // 1ms bekle
}
DelayMs(48); // 48ms bekle
}
}
 
Merhaba benimde bu son iki örnek program için hex ihtiyacım var LED'lerle havaya yazı yazma devresi birde bunu nasıl yapıyorsunuz bilgi verebilir misiniz okulda 1 haftaya yetiştirmem gereken bir proje var.
 

Forum istatistikleri

Konular
129,745
Mesajlar
929,526
Kullanıcılar
452,472
Son üye
AHMET M.
Geri
Üst