Problem w c dla 8051 RIDE

Feb 19, 2006 3 Replies

Jest sobie procedurka zaczerpnięta z książki p. Jacka Bogusza pt" Programowanie mikrokontrolerów 8051 w C "



Oto procedurka



// funkcja hex na bcd



char Subnumber(unsigned int number , char position) { switch (position) { case 1: return (number/100); break; case 2: number%=100 ; return(number/10); break; case 3: return(number%10); break; default: return(0); break; } }



I w czym problem . Problem w tym że jeżeli ta funkcja jest w listingu ( nawet jeżeli nie ma do niej odwołań ) podczas kompilacji to kod programu nie działa na sprzęcie . Na symulatorze programowym wygląda że działa . Czy ktoś wie jak ten problem rozwiązać ? Może to jest kwestia ustawień w "projekcie" ?? Sam już nie wiem . Natomiast jeżeli zmienna number jest rozmiaru char to funkcja działa prawidłowo w zakresie char i program poprawnie dokonuje konwersji . Pomocy ...


U¿ytkownik "kaldachar" <kaldachar(kaldachar)\"@interia.pl> napisa³ w wiadomo¶ci news:dtao6s$gtc$ snipped-for-privacy@inews.gazeta.pl...

Cze¶æ: Jako leniwy cz³owiek napisa³ bym tak± funkcjê w krótszy sposób:

//------------------------------------konwersja 16bit na BCD------------------------------------------- unsigned char bcd[5]; // tu jest zgromadzona po konwersji liczba w postaci bcd

void binbcd16(unsigned int liczba) { char i; for (i=0;i<5;i++) { bcd[i]=liczba%10; liczba=liczba/10; } } //-----------------------------------------------main--------------------------------------------------------------

main(void) {

binbcd16(65535);

while(1); } //---------------------------------------------end-----------------------------------------------------------------

Je¿eli nie o to chodzi - to wybacz :)

pozdr swinio

In the darkest hour on Mon, 20 Feb 2006 01:06:43 +0100, swinio snipped-for-privacy@buziaczek.pl screamed:

Powinno chodzic, ale wynik bedzie zapisany w tablicy od konca.

Problem nie leży w samym algorytmie ( który teoretycznie jest dobry ) , tylko w tym dlaczego jeżeli kod tej funkcji znajduje się w listingu to po kompilacji program nie działa ( jeżeli zmienna number ma długość int ).

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required