Newsgroup: it.hobby.elettronica.digitale
Titolo: Assembler, C o PicBasic?

Leggendo vari Threads ho visto che spesso si va a finire su questo 
discorso, quindi dico la mia.
Se usiamo un Micro tipo PIC16XXX
NON credo sia il caso di usare un linguaggio diverso dall'assembler
a meno che non dovete fare SOLO una cosa per volta.
Considerate che già leggere una tastiera a matrice e visualizzare il 
tasto su un display, può creare degli sfarfallii, e, che per risolverli
ci vuole il doppio che farlo in assembler(esperienza di un mio amico 
usando il PicBasic).
Inoltre i PIC16 hanno un solo registro indiretto che in pratica è
"la banda" disponibile per un compilatore.... Un solo INDF è un collo di 
bottiglia pazzesco in C, figuriamoci in basic.
Con i PIC18 va un po meglio, infatti abbiamo 3 registri indiretti e 
delle istruzioni ottimizzate per il compilatore C.
Con i PIC24 o DSPIC riusciamo finalmente ad ottenere dei codici 
compilati dal C molto efficienti.
Ma anche lavorare in assembler con i DSPIC è un piacere!
Con questo non voglio dire che il basic non si debba usare, ma che si 
deve sapere a cosa si va incontro, magari scegliendo un micro piu 
performante.
La scelta del linguaggio dipende da:
- Conoscenze personali e tempo a disposizione (per impararsi il C!)
- Struttura del programma (cosa dovete fare?)
- Target di produzione (se dovete produrre 1000 pezzi mese forse è il 
caso di usare l'assembler per ridurre i costi della FLASH del micro)
- Valutare bene la scelta del micro.
- Manutenzione del programma e/o previsioni di implementazioni future
(in questo caso scarterei completamente il basic)
- Documentazione e routine già fatte
(anche qui in assembler e C c'è una marea di codice)
Personalmente uso da piu di 10 anni in ambito professionale sia 
Assembler che C. Considero il C il linguaggio migliore, che quindi 
consiglio ma, dove non è possibile, si possono comunque creare in 
assembler delle librerie e/o delle macro per gestire il firmware il piu 
possibile ad oggetti....
Emanuele
-- 
*** YOUR ELECTRONICS OPEN SOURCE ***
http://dev.emcelettronica.com
;---------------------------------------------------------
Progetti Completi (Full Projects):
[IperKEY-ResKEY] Chiave elettronica a microcontrollore
(Microcontroller Electronics Key and key reader)
//TAGS:Pic, Eeprom, ADconverter, I2C
[IperCODE] Ricevitore RADIOCOMANDI e decodifiche
(Remote Control Receiver and decoder)
//TAGS:Pic, Radio control, routines, rolling code, UART, CCP1, LCD


Il basic permette in ogni istante di programmare direttamente in assembler, 
apprezzo le tue conclusioni pero' evidentemente avevi scritto per chi vuole 
iniziare se non dai dei riferimenti puo' capire solo chi gia' sa, non credi?

 
I compilatori seri SCONSIGLIANO l'utilizzo di assembler e -linguaggio 
utilizzato- insieme a meno che ovviamente non si deve fare qualcosa di 
semplice in modo statico.
Altrimenti si dovrebbe creare una libreria o driver che fa quella 
funzione che ci interessa, ma per crearla si deve conoscere 
l'assembler.... e ritorniamo sempre li....
Per quanto riguarda i riferimenti anche per hobbisti, sto cercando, di 
realizzare delle pagine ricche di risorse per progettisti e neofiti.
Puoi richiedermi routine o spiegazioni sul mio blog, come il tempo me lo 
permette, saro felice di pubblicare quello che cerchi,
ringraziandoti anticipatamente di aver contribuito a far "crescere"
dev.emcelettronica.com
L'idea è quella di avere un sito di riferimento, pieno di routine, 
problemi risolti, spiegazioni e commenti dove ogni elettronico possa 
attingere liberamente ed a qualsiasi livello..... una sorta di libreria, 
anzi la libreria che ho sempre sognato (invece di perdere ore nelle 
ricerche)


 anche con il C.
in assembler ci sono algoritmi che sono praticamente impossibili da 
implementare per un essere umano nel moneto in cui le variabili 
diventano un numero non effimero non c'e' programmatore in assembler in 
grado di battere un compilatore C
resta all'assembler l'importanza di poter scrivere piccole routine 
altamente ottimizzate
l'errore e' comunque pensare che esista una sola soluzione ottima al 
problema assembler C basic sono solo tanti strumenti
qualcuno direbbe ( dice ) che la soluzione ottima esiste e si chiama FORTH.


 
RI-concordo. (puoi spiegare meglio FORTH mentre cerco su google ovviamente)



 dimenticati il PIC-JAVA!!!)
BASIC PASCAL C cosa altro vuoi
occhio che il lavoro grosso lo fa il compilatore (ed il suo generatore 
di codice ) che non funziona sul micorcontroller , altra storia sono gli 
interpreti o i linguaggi basati su macchine virtuali
in fondo se ci pensi la potenza espressiva di BASIC PASCAL o C ( .... ) 
e' molto ravvicinata e molti dettagli riguardano comunque la gestione 
del sorgente da parte del compilatore e non il codice generato
tornando un attimo alla somiglianza tra linguaggi 'ad alto livello' ed 
assembler se ci pensi un attimo il BASIC-primigenio e' quello piu' vicino :
variabili solo globali
presenza di srutture di controllo molto semplici, GOTO, GOSUB, IF cc THEN
che sostanzialmente  si mappano direttamente col linguaggio macchina
pensa invece alla complessita' del ciclo for del C quanto le renda 
distante dall'assembler

avrai scoperto che il FORTH e' un linguaggio di programmazione 
'stack-based' con una sintassi MOLTO criptica ma che ha una grande 
diffusione in ambito embedded ( a tutti i livelli ) e' un ibrido tra un 
interprete ed un compilatore ( e ne esistono di tutti e due i tipi )