HEX' i ASM CEVIRME

ç@yl@k

Üye
Katılım
8 Ağu 2007
Mesajlar
159
Puanları
1
arkadaslar merhaba bir mikroişlemciye yazılmış programı editlemem gerekiyor pıcdıssam hexlerı cevırıyor ama edıt ımkanı vermıyor . bıldıgınız hex ı asm cevııren program varsa paylasırmsınız
 
mplap ide ile asm yi hex se hex si asm ye çevirebilirsiniz
 
sayin secili tesekkurler MPLAB programında yeni bir dosya oluşturup Kodunu buraya kopyalayıp asm formatıyla kaydediyorum daha sonra Menüden->Project->Quickbuild ***.asm 'ye cagirinica surekli hata veriyor bunun nedeni nedir bu uyguladigim yontem dogrumudur eger baska bi yontem varsa anlatabilirmisiniz.
 
asm kodlarında yanlış varsa hex se çevirmez masaüstü veya herhangi biryerde kılasör oluştur mplap programını aç file - new - açılan pencereye asm yi yazın veya kopyaladığınız asm yi bu pencereye yapıştırın sonra save as ile açtığınız klasöre kaydedin ardından
Project->Quickbuild diyorsunuz kodunuzda hata yok ise açtığınızda hex yüklenmiş olacak


hex si asm çevirme menüden file import hex seç sonra view program memory diyon asm çıkacak ancak kaydetmeyok asm kodlarını kopyalayıp yapıştırman lazım
 
Arkadaşlar MikroC'de yazdığım kodlarda bir hata çıktı. Ancak hatanın neden kaynaklandığını anlayamadım. Yardımcı olabilcek olan var mı?

Kodlar ve verilen hata aşağıdaki gibidir.
Kod:
void main()
{
#include "C:\Users\Yasemin\Desktop\deneme\built_in.h"
#define ALARMPORT PORTE
#define ALARM TRISE
#define ALARMCIKIS F0
#define ALARMKURULU F1
#define ALARMKAPAT PORTA.F4
#define LM35 0
#define LDR 1

unsigned short tmp,i;
unsigned char ControlReg, TaskControl, RxBuffer;
unsigned char saat, dakika, san,ye, a_saat, a_dakika, AlarmCnt;
unsigned int isi, isik, epadres, adr;
unsigned short PWMDuty;
const char __RW = 0;

void interrupt(void)
{
if (PIR1.TMR1IF)
{
TaskControl.F3 = 1;
TMR1L = 0x00;
TMR1H = 0XF0;
PIR1.TMR1IF = 0;
}
if (PIR1.RCIF)
{
iF(RCSTA.FERR || RCSTA.OERR)
{
RCSTA.CREN = 0;
asm nop
RCSTA.CREN = 1;
}
PIR1.RCIF = 0;
RxBuffer = RCREG;
ControlReg.F7 = 1;
TaskControl.f0 = 1;
PIR1.RCIF = 0;
}
}
void e2eprom_write(unsigned int adr, unsigned short data)
{
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(Hi(adr));
I2C_Wr(Lo(adr));
I2C_Wr(data);
I2c_Stop();
Delay_ms(100);
}
unsigned short e2eprom_read(unsigned int adr)
{
unsigned short data;
I2C_Start();
I2C_Wr(0xA0);
I2C_Wr(Hi(adr));
I2C_Wr(Lo(adr));
I2C_Repeated_Start();
I2C_Wr(0xA1);
data = I2C_Rd(0u);
while (I2C_Is_Idle() == 0);
I2C_Stop();
return data;
}
void e2eprom_erase()
{
unsigned int i;
for (i=0, i< 0xFFF; i++) e2eprom_write(i,0xFF);
}
char GetChar()
{
while(!(ControlReg.F7));
ControlReg.F7 = 0;
return RxBuffer;
}
void sendChar (char c)
{
if(!(TXSTA.TXEN)) TXSTA.TXEN = 1;
while(!(PIR1.TXIF));
PIR1.TXIF = 0;
TXREG = c;
}
void writeString(const char *s)
{
char i=0;
while( s[i]!=0) sendChar(s[i++]);
}
unsigned short Char_to_Hex(unsigned short gec)
{
ControlReg.F6 = 0;
if (gec>47 && gec<58)
{
gec=gec-48;
return gec;
}
else if (gec>64 && gec<71)
{
gec=gec-65;
gec=gec+0x0A;
return gec;
}
else if (gec>96 && gec<103)
{
gec=gec-97;
gec=gec+0x0A;
return gec;
}
ControlReg.F6 = 1;
return 0;
}
unsigned short GetSendHexByte()
{
unsigned short ch;
ch = GetChar();
sendChar(ch);
tmp = Char_to_Hex(ch);
asm swapf _tmp,F
ch = Char_to_Hex(ch);
if (ControlReg.F6) return 0xFF;
tmp = tmp + ch;
return tmp;
}
unsşgned short GetSendDecByte()
{
return Bcd2Dec(GetSendHexByte());
}
void sendDecByte(unsigned short data)
{
unsigned short onlar,birler;
onlar = 0;
birler = 0;
if (data<100)
{
while( data>=100) { onlar++; data = data - 10; }
birler = data;
}
sendChar('0'+ onlar);
sendChar('0'+ birler);
}
void LCD_DecWrite(unsigned short data)
{
unsigned short onlar,birler;
onlar = 0;
birler = 0;
while( data>=10) { onlar++; data = data - 10; }
birler = data;
Lcd_Chr_Cp('0'+ onlar);
Lcd_Chr_Cp('0'+ birler);
}
void IsiOlc()
{
Isi = Adc_Read(LM35) >> 1;
}
void IsiGoruntule()
{
sendDecByte(Isi);sendChar(' ');sendChar('C');
}
void IsikOlc()
{
Isik = Adc_Read(LDR);
}
void IsikGoruntule()
{
sendDecByte(Isik);
}
void ZamanAyarla()
{
saat = GetSendDecByte(); sendChar(':'); dakika = GetSendDecByte();
}
void ZamanGoruntule()
{
SendDecByte(saat);sendChar(':');SendDecByte(Dakika);
}
void AlarmAyarla()
{
a_saat = GetSendDecByte();SendChar(':');a_dakika = GetSendDecByte();
Eeprom_Write(0x10), a_saat);
Eeprom_Write(0x11), a_dakika);
}
void AlarmGoruntule()
{
a_saat = Eeprom_Read(0x10); a_dakika = Eeprom_Read(0x11);
sendDecByte(a_saat); sendChar(':');sendDecByte(a_dakika);
}
void ZamanIsle()
{
saniye++;
if(saniye>59)
{
saniye = 0;
dakika++;
if(dakika>59)
{
dakika = 0;
saat++;
if(saat>23) saat = 0;
IsiOlc();
e2eprom_write(epadres, saat);
epadres++;
e2eprom_write(epadres, Isi);
epadres++;
}
if (ControlReg.ALARMCIKIS)
{ AlarmCnt++;
if (AlarmCnt>=40)
{
ControlReg.ALARMCIKIS = 0;
ControlReg.ALARMKURULU = 0;
ALARMPORT.ALARMCIKIS = 0;
AlarmCnt = 0;
}
}
}
if (ControlReg.ALARMKURULU)
if ((saat == a_saat) && (dakika == a_dakika))
{
ALARMPORT.ALARMCIKIS = 1;
ControlReg.ALARMCIKIS =1;
}
Lcd_Out(1,1,"");
LCD_DecWrite(saat) ;Lcd_Chr_Cp(':');
LCD_DecWrite(dakika) ;Lcd_Chr_Cp(':');
LCD_DecWrite(saniye);
IsiOlc();
Lcd_Out(2,1, "IS: ");
LCD_DecWrite(Isi);
Lcd_Chr_Cp('C');
}
void TerminalProgram()
{
unsigned short ch,tmp,i;
ch=GetChar();
if (ch==13)
while(ch1=48)
{
do
{
writeString("\r\n\r\n PIC DK 2.2 Iletisin Menusune Hosgeldiniz");
writeString("\r\n Copyright Serdar UYAR - 2011 [email][email protected][/email]");
writeString("\r\n\r\n MENU SECENEKLERI:\n\r");
writeString(" <1> Isi goster..\n\r");
writeString(" <2> Isik siddeti goster..\n\r");
writeString(" <3> Saati goster..\n\r");
writeString(" <4> Alarmi goster..\n\r");
writeString(" <5> e2eprom'dan saat-isi bilgilerini listele..\n\r");
writeString(" <6> Saati ayarla..\n\r");
writeString(" <7> Alarmi kur..\n\r");
writeString(" <8> PWM darbe genisligi ayarla..\n\r");
writeString(" <0> Cikis..\n\r\n\r");
writeString(" SECIMINIZ: ");
ch=GetChar();
} while(ch<48 || ch>57);
sendDecByte(ch-48) ;writeString("\n\r ");
switch(ch)
{
case 48:writeString("\n\r Menuye girmek icin ENTER'e basiniz.. \n\r");
case 49:writeString("\n\r Isi degeri: ");
IsiOlc();
sendDecByte(Isi) ;sendChar(' ') ;senChar('C') ;break;
case 50:writeString("\n\r Isik siddeti: ");
Isik = Adc_Read(LDR);
sendDecByte(Isik);
break;
case51:writeString("\n\r Saat: ");
sendDecByte(saat); sendChar(':');
SendDecByte(Dakika);
break;
case 52:if(ControlReg.ALARMKURULU)
{
a_saat = Eeprom_Read(0x10); a_dakika = Eeprom_Read(0x11);
writeString("\n\r Alarm zamani: ");
sendDecByte(a_saat); sendChar(':');
sendDecByte(a_dakika);
} else writeString("\n\r Alarm kurulmamis..");
break;
case 53:writeString("\n\r Saat - Isi \n\r");
writeString("\n\r ----------- \n\r");
i=0; adr = 0; tmp = 1; ch=0;
do {
writeString(" ");
ch = e2eprom_read(adr);
if (ch > 23) { ch = 27; tmp = 0;);
if (tmp)
{
sendDecByte(ch);
writeString(" --- ");
adr++;
ch = e2eprom_read(adr);
sendDecByte(ch);
writeString("\n\r");
adr++;
i=++;
}
if (adr>=0xFF0) ch=27
if (i==10)
}
i=0;
writeString("\n\r Cikis icin ESC tusuna basiniz..\n\r");
ch = GetChar();
} while (ch!=27);
break;
case 54:writeString("\n\r Saat ve dakika giriniz ( HH:MM ) : ");
saat = GetSendDecByte(); sendChar(':'); a_dakika = GetSendDecByte();
Eeprom_Write(0<10, a_saat); Eeprom_Write(0x11, a_dakika);
ControlReg.ALARMKURULU = 1;
break;
case 56:writeString("\n\r PWM darbe genisligini giriniz (00-FF) : ");
PWMDuty = GetSendHexByte();
PWM_Stop();
PWM_Init(1000);
PWM_Change_Duty(PWMDuty);
PWM_Start();
break;
}
}
}
void main_init()
{
TRISC.F1 = 1;
ALARMTRIS.ALARMCIKIS = 0;
ALARMPORT.ALARMCIKIS = 0;
TRISC.F6 = 0;
TRISC.F7 = 1;
TXSTA = 0;
RCSTA = 0;
SPBRG = 25;
TXSTA = 0X26;
RCSTA = 0X90;
PIE1.RCIE = 1;
Lcd_Config(&PORTB,4,5,7,3,2,1,0);
Lcd_Cmd(LCD_CLEAR);
Lcd_Cmd(LCD_CURSOR_OFF);
saat = 0;
dakika = 0;
saniye = 0;
AlarmCnt =0;

I2C_Init(100000);
epadres = 0;

a_saat = Eeprom_Read(0x10);
a_dakika = Eeprom_Read(0x11)İ

T1CON.TMR1ON = 0;
TMR1L = 0X00;

PIE1.TMR1IE = 1;
T1CON.TMR1ON = 1;

PWM_Init(1000);
PWM_Charge_Duty(0X80);
PWM_Start();

ADCON1 = 0X84;

TRISA.F4 = 1;

ControlReg = 0;
TaskControl = 0;
INTCON.PEIE = 1;
INTCON.GIE = 1;
}
void main()
{
main_init();
writeString("\n\r Sistem çalışıyor!...Menüye giriş için ENTER'e basınız");
while(1)
{
if (TaskControl.F0)
{
TerminalProgram();
TaskControl.F0 = 0;
}
if (TaskControl.F1)
{
IsiOlc();
TaskControl.F1 = 0;
}
if (TaskControl.F2)
{
IsikOlc();
TaskControl.F2 = 0;
}
if (TaskControl.F3)
{
ZamanIsle();
TaskControl.F3 = 0;
}
if (!ALARMKAPAT)
{
ControlReg.ALARMCIKIS = 0;
ControlReg.ALARMKURULU = 0;
ALARMPORT:ALARMCIKIS = 0;
AlarmCnt = 0;
writeString("\r\n\r\n Alarm durduruldu..\n\r");
}
Delay_ms(250);
}

}



Hatalar ise;

20 300  Syntax Error: ';' expected,  but '{' found deneme.c
27 424 '}' expected '}' found deneme.c
36 402 ; expected, but '.' found deneme.c
36 393 'PIR1' Identifier redefined deneme.c
36 371 Specifier needed deneme.c
36 396 Invalid declarator expected'(' or identifier deneme.c
37 402 ; expected, but '=' found deneme.c
37 371 Specifier needed deneme.c
37 396 Invalid declarator expected'(' or identifier deneme.c
37 393 '' Identifier redefined deneme.c
37 312 Internal error '' deneme.c
0 102 Finished (with errors): 27 May 2011, 17:06:50 deneme.mcppi
 
Moderatör tarafında düzenlendi:
Yazım hatalarınız var ve bunları satır numaralarıyla vermiş zaten, kimi yerde noktalı virgül unutulmuş, kimi yerde parantez hataları yapılmış. Bunları bulup düzeltmelisiniz.
Kod:
20 300  Syntax Error: ';' expected,  but '{' found deneme.c
27 424 '}' expected '}' found deneme.c
36 402 ; expected, but '.' found deneme.c
36 393 'PIR1' Identifier redefined deneme.c
36 371 Specifier needed deneme.c
36 396 Invalid declarator expected'(' or identifier deneme.c
37 402 ; expected, but '=' found deneme.c
37 371 Specifier needed deneme.c
37 396 Invalid declarator expected'(' or identifier deneme.c
37 393 '' Identifier redefined deneme.c
37 312 Internal error '' deneme.c
0 102 Finished (with errors): 27 May 2011, 17:06:50 deneme.mcppi
 

Forum istatistikleri

Konular
128,122
Mesajlar
915,182
Kullanıcılar
449,826
Son üye
SK.

Yeni konular

Geri
Üst