C Kodunu Hex Koduna Çevirme

elktrmn

Üye
Katılım
23 Tem 2007
Mesajlar
29
Puanları
1
merhaba arkadaşlar elimde bulunan c kodlarını mplab kullanarak hex kodlarına çevirmeye çalısıyorum ama sürekli hata veriyor mplab tan başka c complier programını kullarak hex koduna çevirebilirmiyim yardımcı olursanız sevinirim
 
Mplab sadece bir ide, c kodu derleyebilmek için hitec, ccs vs. bir c derleyiciyi mplab'a entegre edip kullanmalısınız.
Farklı ide'ler ve derleyiciler de tabiiki mevcut, mikroc, ccs gibi
 
Şunu bir dene ben bunu kullanıyorum...
 

Ekli dosyalar

  • otm.PIC.rar
    1.1 MB · Görüntüleme: 1,660
teşekkür ederim arkadaslar... sayın mesutelb gönderdiğiniz program c dosyasını açtıktan sonra hex mi çeviriyor yoksa programı burdamı yazıyoruz yardımcı olursanız sevinirim..
 
arkadaşın gönderdiği proğram hex kodunu pic e aktarmaya yarıyor yani aranan cevap bu değil
 
merhaba arkadaşlar elimde bulunan c kodlarını mplab kullanarak hex kodlarına çevirmeye çalısıyorum ama sürekli hata veriyor mplab tan başka c complier programını kullarak hex koduna çevirebilirmiyim yardımcı olursanız sevinirim

Öncelikle kodunu burada bir paylaş.
Biz de hangi dilde ve hangi derleyici kullanarak yazıldığını tespit edelim.
Ondan sonra sana ona göre bir derleyici ve IDE öneririz...
 
Benim çevirmem gereken kodlar aşağıda:

Kod:
#include <pic.h>
unsigned char time;
unsigned char variable=200;
//--data logic1--
void send1 (void)
{
    for(time=variable;time>0;time--)
    {        PORTA^=1;
    #asm       
        NOP
        NOP  
    #endasm
    }
}
//--data logic0--
void send0 (void)
{  
    for(time=variable;time>0;time--)
    {
        PORTA=0;  
    #asm              
    NOP              
    NOP  
    #endasm  
    }
}
//--startbit--
void startbit(void) //2400us 1 600us 0
{
    send1();
    send1();  
    send1();
    send1();  
    send0();
}
//--device code--
void senddevicecode(void) //device code 10000000 not inverted
{  
     send1();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
}
//--data--
void senddata_1(void)
{  
    send1();
    send0();
    send0();
    send0();
    send0();
    send0();  
    send0();
    send0();
}
void senddata_2(void)
{    send0();
    send1();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
}
void senddata_3(void)
{  
    send0();
    send0();
    send1();
    send0();
    send0();
    send0();
    send0();
    send0();
}
void senddata_4(void)
{  
    send0();
    send0();
    send0();
    send1();
    send0();
    send0();
    send0();
    send0();
}
void senddata_5(void)
{    send0();
    send0();
    send0();
    send0();
    send1();
    send0();
    send0();
    send0();
}
void senddata_6(void)
{    send0();
    send0();
    send0();
    send0();
    send0();
    send1();
    send0();
    send0();
}
void senddata_7(void)
{    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send1();
    send0();
}
void senddata_8(void)
{    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send1();
}
//-----// Butonlara basili degilken gonderilecek veri (hepsi 0)
void senddata_9(void)
{    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
    send0();
}
//-----------------------------
//--stopbits--
void sendstopbit(void) //stop 11001
{  
    send1();
}
void main(void)
{  
    RBPU=0;
    TRISA=0;
    TRISB=255;

    while(1)  
    {  
    if(RB0==0){  
        startbit();
        senddevicecode();  
        senddata_1();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;
        }  
    if(RB1==0){  
        startbit();
        senddevicecode();
        senddata_2();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;  
        }      
    if(RB2==0){      
        startbit();  
        senddevicecode();  
        senddata_3();  
        sendstopbit();      
        for(time=12;time>2;time--) send0;
        }  
    if(RB3==0){  
        startbit();  
        senddevicecode();  
        senddata_4();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;  
        }      
    if(RB4==0){  
        startbit();
        senddevicecode();  
        senddata_5();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;
        }      
    if(RB5==0){  
        startbit();  
        senddevicecode();  
        senddata_6();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;
        }      
    if(RB6==0){      
        startbit();
        senddevicecode();
        senddata_7();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;
        }      
    if(RB7==0){
        startbit();
        senddevicecode();  
        senddata_8();
        sendstopbit();  
        for(time=12;time>2;time--) send0;  
        }  
//-----------------
//butonlar basili degilse 9 nolu datayi gönder  
        startbit();  
        senddevicecode();  
        senddata_9();  
        sendstopbit();  
        for(time=12;time>2;time--) send0;
//------------------  
        }
}
 
iyi gunler herkeze.
su an benim yaptıgım devrede hat aranıyor sonra hat acılınca 1234* tuslayınca onay ısıgı yanıyor ve ben 1 ile 1. roleyı acıp 4 ile bu roleyı kapatıyorum.
2 ile 2. roleyı acıp 5 ile bu roleyı kapatıyorum. 3 ile 3. roleyı acıp 6 ile bu roleyı kapatıyorum.

rıca etsem aranızdan bır arkadas benım ıcın bu asagıda yazılı olan c kodunu hex e cevirebilirmi.
ayrıca bu c koduna sifre değiştirme eklenebilirmi. eger eklenebilirse bunun c kodunu ve hex kodunu bana atabılırlermı

Kod:
// Telefonla uzaktan cihaz kontrolu projesine ait PIC16F84A programi // CM8870'in Q1-Q4 cikislari PIC16F84A'nin RB0-RB3 pinlerine baglidir. // StD ucu RB4'e baglidir. Hat acma rolesi RA1'e baglidir. // Sifre onay LED'i RA2'ye baglidir. // Zil calma sayisi icin pals devresi RA1'e baglidir. // Kontrol edilecek cihazlar sirasiyla RB5,RB6,RB7'ye baglidir.  
#include <pic.h> 
#include <delay.c>  
#define StD RB4 #define HAT_ROLE RA1 
#define LED RA2 #define PALS RA0  // 4MHz osilator
 __CONFIG(XT&WDTDIS&PWRTEN);  
unsigned char kontrol=0; 
unsigned int CX;  
//---------------------------------------------------------- // Timer alt programi // 15 saniye suresince tusa basilmadiysa hatti kapatmak icin //---------------------------------------------------------- 
void interrupt kesme(void){  
CX++; 
if(CX>15000)kontrol=1; 	 
T0IF=0; // bayragi temizle 
TMR0=131; 
} 
//----------------------------------------------------------   //---------------------------------------------------------- // ANA PROGRAM //---------------------------------------------------------- 
main(void)
{  
unsigned char i,komut,sifre[5],sayac;  //---------------------------------------------------------- // Port konfigurasyonu //----------------------------------------------------------

 TRISB=0x1F; // PORTB'nin RB5,6,7 pinleri cikis,digerleri giris   
TRISA=0x01; // RA0 giris digerleri cikis //---------------------------------------------------------- 
 PORTB=0; // cihazlar enerjisiz 
PORTA=0; // hat kapali, LED sonuk  //------------------------------------------------------------- //Timer islemleri (kesme suresi=1ms) //------------------------------------------------------------- 
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 //-------------------------------------------------------------  // resetten sonra 1 saniye bekle 
for(i=0;i<4;i++)DelayMs(250);  
basla:  
sayac=0; CX=0;  
for(;;)
{ // zil sayisi belirleme dongusu  
while(PALS==1);   
sayac++;  	
if(sayac>50)
{ // Zil sayisi 2  		
HAT_ROLE=1; // Hatti ac  		
sifreoku: 		 		
for(i=0;i<5;i++)
{ // sifreyi al   		//-------------------------------------- 		kontrol=0; 		TMR0=131; //   		
T0IE=1; // TIMER ON  		//--------------------------------------  			while(StD==0){	// tusa basilmadi ise bekle 				
if(kontrol==1)
{ // sure>15s ise hatti kapat 				
HAT_ROLE=0; 
goto basla; // basa don 				} 				else {}; 			}  		

T0IE=0; 
CX=0; // Tusa basildi ise Timer'i durdur, CX'i sifirla  			      // Boylece yeni bir 15s'lik ek sure kazanilmis olur 		

sifre[i]=PORTB&0x0F; // sifreyi oku  		

while(StD==1); // tus basili ise bekle 		
} 		
//-------------------------------------- 		// sifrenin son hanesi * olmalidir 		 		//--------Sifre konrol------------------ 		

if(sifre[0]==1 && sifre[1]==2 && sifre[8]==3 && sifre[2]==4 && sifre[0]==11)
{ 		
// 11 degeri tus takimindaki * tusuna karsilik gelir.  		

LED=1; // sifre dogru ise LED'i yak 			 			

for(;;)
{ 				
while(StD==0); // cihazlar icin komut bekle 							 				komut=PORTB&0x0F;  	 				
if(komut==1)RB5=1; // cihaz 1 ON 				
if(komut==2)RB6=1; 				if(komut==3)RB7=1; 				if(komut==4)RB5=0; // cihaz 1 OFF  				
if(komut==5)RB6=0; 				if(komut==6)RB7=0; 	 				
if(komut==12){ // # tusuna basildi ise hatti kapat 					
HAT_ROLE=0; LED=0; goto basla; 				// Cihazlarin ON/OFF durumlari degismeden kalir. 				}
 			}				 				//-------------------------------------- 		} 		 		
else{  		goto sifreoku; //sifre yanlis ise tekrar sifre okumaya git 		} 	}  	else{  // sayac<50 ise 	while(PALS==0); 	}  } // for dongusu  }
 
Moderatör tarafında düzenlendi:

Forum istatistikleri

Konular
127,951
Mesajlar
913,870
Kullanıcılar
449,599
Son üye
Gksn

Yeni konular

Geri
Üst