perché programmare in C o basic?

Perché molti di voi programmano in C o Basic i PIC? Ok per pilotare display vari, ma per il resto? Non è meglio usare assembly, che almeno non si perdono mai d'occhio i registri?

Reply to
<andreafrigo
Loading thread data ...

Io non uso i pic da molto tempo, ma ti rispondo in generale. Il C e il BASIC sono linguaggi di alto livello che permettono di descrivere algoritmi più complessi in maniera più semplice per il programmatore. Il codice scritto (se scritto bene) inoltre diventa più mantenibile (puoi fare modifiche con più facilità) e portabile (lo puoi riusare in altre applicazioni, anche di altri microcontrollori).

Non è importante tenere d'occhio i registri, se non in fase di debug, ma è importante quello che il programma deve fare.

Come contro, i linguaggi di alto livello, generano un programma compilato un po' più grande dello stesso scritto in assembly, ma questo viene ripagato appena il codice che devi scrivere ha un minimo di complessità: in C o basic si fa molto prima a scriverlo. Inoltre i microcontrollori moderni cominciano ad avere RAM e ROM a sufficienza per cui il problema dello spazio non si sente.

E se in un'applicazione lo spazio di memoria non basta, beh, significa che è stato fatto un errore di progetto e il microcontrollore scelto non era adatto ^^

Ciao

Reply to
Francesco Sacchi

ha scritto:

Io non ho esperienza in questo campo, ma un po' di nozioni teoriche sì.

Come implementi la funzione logaritmo in assembler? ;-)

Ciao Boiler

--

questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
Reply to
Boiler

ha scritto nel messaggio news:M3EHe.1125$ snipped-for-privacy@twister1.libero.it...

Per lo stesso motivo per cui se vuoi cucinarti la pasta al pesto non cominci dalla coltivazione del grano duro, ma vai al supermercato. Le procedure che definiscono algoritmi complessi, come la gestione delle variabili (che non siano di tipo binario o byte), i cicli, le macchine a stati, operazioni matematiche, possono tranquillamente essere descritte ad alto livello, lasciando ad un compilatore il compito improbo di esplicitarle e linkarle. Nel caso (non così frequente) che tu stia cercando un controllo stretto del flusso del programma, per esempio per esigenze di timing o di occupazione di memoria da parte del codice, puoi sempre inserire degli algoritmi descritti a basso livello. Come se, dico, tocco di chef sulla pasta, metti un vaso di basilico in terrazza e lo tiri su senza schifezze chimiche, aggiungendo alla pasta compilata il sapore del basilico fresco e genuino. (ore 12.25, si vede...?)

Reply to
simone.bern

Il giorno Tue, 02 Aug 2005 12:05:04 +0200, snipped-for-privacy@bluemail.ch (Boiler) ha scritto:

L'algoritmo no, ma la radice quadrata l'ho implementata in Assembler su Z80.

Comunque non è impossibile nemmeno fare l'algoritmo, una volta si calcolava con la matita...

Certo dovendo fare cacoli complessi adesso molto meglio usare un linguaggio più evoluto come il C, anche perchè i compilatori attuali sono efficienti, non come quelli delle prime versioni che erano lentissimi.

ciao Stefano

Reply to
SB

Francesco Sacchi ha scritto:

Io ho incominciato da poco a muovere qualche passo con i pic e la programmazione in C mi ha aiutato tantissimo in quanto è molto facile. Purtroppo online ho trovato tantissimo materiale sull'assembler e pochissimo sul C :(

E poi non so perchè a volte scrivendo programmi semplicissimi dopo qualche secondo si bloccano in parte e funzionano male. Ad esempio una volta volevo solo far attivare 4 uscite in sequenza ed invece di farmele 1-2-3-4 1-2-3-4 mi faceva 1-2-3-4-3 1-2-3... Un'altra volta dovevo fare attivare una tra due uscite a caso, alla seconda o terza volta si inchiodava attivando sempre la stessa.

Che siano questi i problemi del programmare in C?

Ciao!

--
www.madprice.it
Il nuovo sito di notizie ed informazione sul mondo dei computer!
Vuoi collaborare o dare consigli? Guarda la sezione contatti e scrivici.
www.madprice.it
Reply to
Marcello Ferrari

Il giorno Tue, 02 Aug 2005 10:50:40 GMT, SB ha scritto:

Il LOGARITMO

il LOGARITMO

CALCOLI

e a pranzo ho bevuto solo acqua, lo giuro.. :-)

ciao Stefano

Reply to
SB

SB ha scritto:

con

Sì, lo so che si possono fare gli sviluppi in serie di praticamente tutte le funzioni. La domanda è: conviene?

Ciao Boiler

--


questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
Reply to
Boiler

snipped-for-privacy@nospam-inwind.it ha scritto:

Perchè il C è di alto livello, l'assembler lo userei *solo* per cose real-time [ a parte il fatto che ormai i compilatori più recenti riescono a ottimizzare così tanto il codice che non si vede più la differenza tra un programma scritto in asm da un programmatore skilled e uno generato dal linker... ]. Perchè il C è semplice, puoi implementare facilmente algoritmi difficili anche riguardanti i timing [ voglio vederti a fare uno sleep preciso contando quanti cicli di clock portano via una jump e una nop :P ]. Comunque, dentro il codice C puoi comunque inserire del codice assembler [ nel caso come dici tu, voglia essere sicuro dei registri, oppure una porzione di programma che è particolarmente delicata ].

Ci sono tanti altri vantaggi nell'usare il C [ ci sono anche degli svantaggi, ma per un qualsiasi progetto io userei il C, a meno che... come ho scritto sopra :) ], io ho scritto solo quelli che mi venivano in mente. Ciao,

--
Oderint, dum metuant.
WWW: http://xjp.altervista.org
E-Mail: michele @ nectarine . it
MSN [IM]: michele @ nectarine . it
IRC: xjp @ FreeNode
Reply to
xjp

dipende a volte ci sei costretto

scenario:

programma che richiede i logaritmi , scritto in C ma nno hai a disposizione la virgola mobile, non fosse altro perche' occupa troppo spazio o si mangia meta' della RAM per le variabili della libreria

per carita' il C e' comodissimo l'ho adottato per i miei progetti appena ho potuto ,dopo aver sviluppato un programma da 8K di codice in assembler, ma il C embedded spesso e' un altra storia rispetto a quello dei PC sopratutto se il tuo micro poi ha 4K di codice e/o 256 byte di RAM tutto compreso.

chiaramente scordatevi la printf :-(((((

Reply to
mmm

su lunghe sequenze di codice questo e' vero , l'assembler ha pero' il vantaggio di poter sfruttare a pieno certe peculiarita' del processore che il C non puo', per le sue caratteristiche, usare: un esempio classico e' il bit-banging dove si puo' sfruttare, in assembler, il carry per velocizzare il codice nel trasferimento dei bit

sui pezzi di codice lunghi la superiorita' del C e' quasi palese.

qui ho dei seri dubbi perche' se il ritardo di un ciclo semplice lo puoi calcolare con precisione in assembler perche' SAI quali e quante istruzioni verranno utilizzate, in C e' il compilatore a fare le scelte sul codice generato ...

( fermo restando gli interrupt che fanno sballare i timing calcolati ocn tanta fatica )

ogni linguaggio ha svantaggi e svantaggi

secondo me la cosa migliore e' saperli incrociare in modo da prendere il meglio da tutti.

Reply to
mmm

Anch'io :-). E in 10 byte in tutto!

Sarei un po' scettico. Matita e tavole.

--

Franco

Derzeit keine Unterschrift verfügbar.
Reply to
Franco

Si`, le librerie fanno cosi` :-). Anzi non usano gli sviluppi in serie (di taylor) che convergono male, usano l'algoritmo cordic e polinomi di cebiceff.

--

Franco

Derzeit keine Unterschrift verfügbar.
Reply to
Franco

Beh... non per nulla esiste l'inline assembly in C.

Però sui processori moderni non puoi in generale sapere quanti cicli di clock impiega ogni istruzione perché non puoi sapere se hai un hit del branch predictor, un hit della cache di primo/secondo livello, etc...

Infatti, per fare attese con un loop si usano istruzioni apposite.

Ciao,

--
Daniele Orlandi
Reply to
Daniele Orlandi

che pero' e' assembler :-) e non piu' C

questa veramente non la sepevo e mi rende curioso , comunque non si applica a micro piccoli come PIC o AVR o 8051

Ri-Ciao

e buona programmaziaone a tutti che sia Basic C Assembler o Forth ( ce ne eravamo dimenticati :-) )

ognuno scelga secondo le proprie preferenze!

Reply to
mmm

Franco ha scritto:

Argh! Ero quasi riuscito a dimenticare questo nome, evocatore di materie PITA (Pain In The Ass)...

Boiler

--

questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
Reply to
Boiler

Allora per te tschebischev.

--

Franco

Derzeit keine Unterschrift verfügbar.
Reply to
Franco

Franco ha scritto:

Rispondo con Cholesky ;-)

Boiler

--

questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news segnala gli abusi ad abuse@newsland.it
Reply to
Boiler

Un bel giorno Boiler digitò:

Allo stesso modo in cui l'hanno implementata gli sviluppatori del compilatore C. :)

--
asd
Reply to
dalai lamah

E se avessero programmato il compilatore in Visualbasic ? XDXDXDXDXDXDXDXDXDXDXD

Bye,

P.s.: Ma in asm c'è la logica fuzzy? P.p.s.: Ha senso programmare byte per byte. P.p.p.s.: Per implementare quella funzione (credo) basti studiare il source di gcc o mingw... :)

--
Carmine ( pikachu31NOSPAM@gmail.com (Togli la scritta NOSPAM) )
Webmaster di The Total Site (http://www.tekkentag.altervista.org/ )
Webmaster di SceptilePage (http://www.sceptilepage.altervista.org/ )
Account Messenger: thetotalsite@msn.com
MyBLOG (NEW!!) http://spaces.msn.com/members/itanet/
Reply to
Carmine

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.