Torna indietro   BaroneRosso.it - Forum Modellismo > Elettronica > Circuiti Elettronici


Rispondi
 
Strumenti discussione Visualizzazione
Vecchio 11 dicembre 07, 18:49   #1 (permalink)  Top
User
 
L'avatar di faustog
 
Data registr.: 28-02-2006
Messaggi: 1.059
Assembler per PIC

non so chi di voi si occupa di programmazione dei PIC..
premetto che io sono un programmatore : JAVA, C, C++, PHP, Visual Basic ecc
insomma solo linguaggi ad alto livello... .l'assembler dell' 8088 studiato solo teoricamente all'Università
..con i PIC sto iniziando da poco ..però non ho il programmatore.. vorrei acquistarlo più in là quando avrò acquisito una certa dimestichezza..
la mattina mi alzo alle 6:00 e prima di andare a lavoro mi faccio un oretta.. stamani mi sono assegnato l'esercizio di realizzare la divisione.. ..vorrei sapere da qualche anima buona se per il 16F84 è giusta la seguente routine,
ovvero se c'è qualcuno che la provi per me che non ho appunto il programmatore!

a dopo
faustog:

;-----------------------------------------------------
; Divisione = numero di volte che il DIVIDENDO puo essere
; sottratto dal DIVISORE. per esempio 8:3
; by FaustoG
;-----------------------------------------------------
PROCESSOR 16F84
RADIX DEC
INCLUDE "P16F84.INC"

ORG 0

EQU RISULTATO 18
EQU DIVISORE 20
EQU DIVIDENDO 22

CLRF RISULTATO
MOVLW 8
MOVWF DIVIDENDO ;carica 8 nel registro DIVIDENDO
MOVLW 3 ;carica il DIVISORE nell accumulatore
AA SUBWF DIVIDENDO, F ; sottrae al DIVIDENDO il DIVISORE
BTFSC STATUS, C ;se C=0 allora salta alla FINE perche
GOTO INCR ;il DIVIDENDO ha raggiunto lo zero oppure
GOTO FINE ;e negativo
INCR INCF RISULTATO
GOTO AA
FINE BSF STATUS, PR0
CLRF TRISB
BCF STATUS,RP0
MOVF RISULTATO, W
MOVWF PORTB
SLEEP

Invece il resto rimane nel registro DIVIDENDO.

a dopo
fausto
faustog non è collegato   Rispondi citando
Vecchio 11 dicembre 07, 19:23   #2 (permalink)  Top
User
 
L'avatar di ElNonino
 
Data registr.: 06-05-2007
Residenza: Tre Ville (Preore)
Messaggi: 3.605
Invia un messaggio via MSN a ElNonino
Guarda che se usi l'ambiente di sviluppo MPLAB della Microchip con il relativo assembler, puoi testare il tuo programma anche senza possedere il programmatore.

Personalmente, poichè utilizzo i PIC professionalmente e per applicazioni piuttosto complesse, programmo in C ed utilizzo l'assembler solo per alcune routine molto critiche come temporizzazione. Esistono anche molte librerie ben testate anche per l'assembler.

Buoni esperimenti.

__________________
Peace & Love
Fate le cose nel modo più semplice possibile, ma senza semplificare. (A. Einstein)
ElNonino non è collegato   Rispondi citando
Vecchio 11 dicembre 07, 22:57   #3 (permalink)  Top
User
 
L'avatar di faustog
 
Data registr.: 28-02-2006
Messaggi: 1.059
grazie..

grazie non lo sapevo. ...appunto da vero neofita non so le cose più banali.. .il
MPLAB è gratuito oppure serve la licenza?
bene penso che comunque mi piacerebbe affrontare la programmazione in assembler ...visto che i PIC hanno un numero ridottissimo di risorse... e poi magari dopo che avrò cazzeggiato abbastanza in assembler passerò al C ..che sicuramente è più familiare..

..ti spiego il mio obbiettivo è quello di realizzare un insieme di librerie JAVA o meglio classi Java per palmari.. .i quali attraverso la USB pilotano i servi di un aereo..

http://www.pololu.com/products/pololu/0390/

Quindi l'utente finale potrebbe in futuro scaricare da Internet software per computer palmari .. .installare su l proprio aeromodello il palmare più il servocontroller e ...via.... ..altro che UAV!!

a dopo
fausto






Citazione:
Originalmente inviato da ElNonino
Guarda che se usi l'ambiente di sviluppo MPLAB della Microchip con il relativo assembler, puoi testare il tuo programma anche senza possedere il programmatore.

Personalmente, poichè utilizzo i PIC professionalmente e per applicazioni piuttosto complesse, programmo in C ed utilizzo l'assembler solo per alcune routine molto critiche come temporizzazione. Esistono anche molte librerie ben testate anche per l'assembler.

Buoni esperimenti.

faustog non è collegato   Rispondi citando
Vecchio 11 dicembre 07, 23:42   #4 (permalink)  Top
User
 
L'avatar di MSchiepp
 
Data registr.: 21-01-2004
Residenza: Milano
Messaggi: 989
Citazione:
Originalmente inviato da faustog
MPLAB è gratuito oppure serve la licenza?
E' gratuito! Lo scarichi dal sito Microchip e hai sia la funzione simulatore che ti permette di vedere passo passo o a blocchi il funzionamento del programma, con la trace dei registri/variabili che ti interessano e con la funzione 'logic analyzer' vedi anche lo stato dei pin del micro proprio come se stessi usando un analizzatore logico!

Michele
__________________
__________________________________________________
The worst day flying is better than the best day working.
MSchiepp non è collegato   Rispondi citando
Vecchio 12 dicembre 07, 00:12   #5 (permalink)  Top
jijuja
Guest
 
Messaggi: n/a
Citazione:
Originalmente inviato da faustog
grazie non lo sapevo. ...appunto da vero neofita non so le cose più banali.. .il
MPLAB è gratuito oppure serve la licenza?
bene penso che comunque mi piacerebbe affrontare la programmazione in assembler ...visto che i PIC hanno un numero ridottissimo di risorse... e poi magari dopo che avrò cazzeggiato abbastanza in assembler passerò al C ..che sicuramente è più familiare..

..ti spiego il mio obbiettivo è quello di realizzare un insieme di librerie JAVA o meglio classi Java per palmari.. .i quali attraverso la USB pilotano i servi di un aereo..

http://www.pololu.com/products/pololu/0390/

Quindi l'utente finale potrebbe in futuro scaricare da Internet software per computer palmari .. .installare su l proprio aeromodello il palmare più il servocontroller e ...via.... ..altro che UAV!!

a dopo
fausto
Ciao,a parte le tue idee sull'UAV che risultano a questo punto chiare
ti posso dire che esistono già molti software per palmari
che "pilotano" dei servo,in Germania ho visto molte volte
modellisti che mettevano a punto il proprio modello al campo
utilizzando il palmare,adirittura ti posso dire che ci sono delle riceventi
in commercio che si interfacciano con il palmare via Usb ed anche wireless.
Passando al sodo ti confermo che Mplab è gratuito,si scarica dal sito
della Microchip ed è integrato (ultime versioni) con Picc Lite della Hitech
cioè ti permette di utilizzare tale software (già compreso) per programmare
nello stesso ambiente di sviluppo in Ansi C i Pic, tale è Free fino a 2K linee
di codice (tradotte in assembler) quindi è praticamente senza limitazioni con il
16F84.
Io,su tali piccoli micro uso di default l'assembler proprio per
l'ottimizzazione che riesci a raggiungere (usandolo correttamente)
e lavori in modo trasparente quando la gestione dei tempi,
come detto sopra,è critica.
Per quanto riguarda la divisione il codice,mi dispiace dirtelo,è
assolutamente inuttilizzabile messo giù così,sembra più "C" che assembler.
Ti consiglio di andarti a vedere "Pic By Exemple" corso veramente
fatto bene per capire l'assembler.
Lì trovi anche degli esempi di codice per divisione a 8 bit e 16 bit con
Micro a 8 bit quali sono i Pic serie 16.
Il C,che stò prendendo in considerazione in questo periodo,
non perchè ne senta l'esigenza ma perchè dicono tutti essere "migliore"
quindi a mio avviso và provato ti permette di sviluppare molto + velocemente
i software senza complicazioni ma a livello di codice
(provato) non ti permette di ottenere la stessa compattezza e velocità che ti permette l'assembler.
Ho provato ad utilizzare gli LCD con il C ed il Basic per confrontare
il software che avevo sviluppato a suo tempo in assembler...
praticamente il codice prodotto è 1/3 più grande in C e circa 3 volte in Basic...
certo che in C o in Basic ci vogliono 20 minuti (senza utilizzare
i comandi pre-compilati) ed in Assembler all'epoca ci sono voluti giorni di lavoro...

Ciao!
  Rispondi citando
Vecchio 12 dicembre 07, 19:38   #6 (permalink)  Top
User
 
L'avatar di faustog
 
Data registr.: 28-02-2006
Messaggi: 1.059
ok

grazie a tutti..
x jijuja.. ... si in effetti il discorso dei palmari è azzeccato.. ..però vorrei sapere se esiste già un driver per JAVA tale che attraverso l'import del pakage pre-posto posso utilizzaree delle classi che comunicano con il servo controller.. dal palmare ovviamente.. ..penso che ciò sarebbe fantastico.. .

Per il corso consigliato da te ..sto proprio seguendo quello da te suggerito..


a dopo
fausto

Citazione:
Originalmente inviato da jijuja
Ciao,a parte le tue idee sull'UAV che risultano a questo punto chiare
ti posso dire che esistono già molti software per palmari
che "pilotano" dei servo,in Germania ho visto molte volte
modellisti che mettevano a punto il proprio modello al campo
utilizzando il palmare,adirittura ti posso dire che ci sono delle riceventi
in commercio che si interfacciano con il palmare via Usb ed anche wireless.
Passando al sodo ti confermo che Mplab è gratuito,si scarica dal sito
della Microchip ed è integrato (ultime versioni) con Picc Lite della Hitech
cioè ti permette di utilizzare tale software (già compreso) per programmare
nello stesso ambiente di sviluppo in Ansi C i Pic, tale è Free fino a 2K linee
di codice (tradotte in assembler) quindi è praticamente senza limitazioni con il
16F84.
Io,su tali piccoli micro uso di default l'assembler proprio per
l'ottimizzazione che riesci a raggiungere (usandolo correttamente)
e lavori in modo trasparente quando la gestione dei tempi,
come detto sopra,è critica.
Per quanto riguarda la divisione il codice,mi dispiace dirtelo,è
assolutamente inuttilizzabile messo giù così,sembra più "C" che assembler.
Ti consiglio di andarti a vedere "Pic By Exemple" corso veramente
fatto bene per capire l'assembler.
Lì trovi anche degli esempi di codice per divisione a 8 bit e 16 bit con
Micro a 8 bit quali sono i Pic serie 16.
Il C,che stò prendendo in considerazione in questo periodo,
non perchè ne senta l'esigenza ma perchè dicono tutti essere "migliore"
quindi a mio avviso và provato ti permette di sviluppare molto + velocemente
i software senza complicazioni ma a livello di codice
(provato) non ti permette di ottenere la stessa compattezza e velocità che ti permette l'assembler.
Ho provato ad utilizzare gli LCD con il C ed il Basic per confrontare
il software che avevo sviluppato a suo tempo in assembler...
praticamente il codice prodotto è 1/3 più grande in C e circa 3 volte in Basic...
certo che in C o in Basic ci vogliono 20 minuti (senza utilizzare
i comandi pre-compilati) ed in Assembler all'epoca ci sono voluti giorni di lavoro...

Ciao!
faustog non è collegato   Rispondi citando
Vecchio 12 dicembre 07, 19:46   #7 (permalink)  Top
User
 
L'avatar di faustog
 
Data registr.: 28-02-2006
Messaggi: 1.059
ops!

[...Per quanto riguarda la divisione il codice,mi dispiace dirtelo,è
assolutamente inuttilizzabile messo giù così,sembra più "C" che assembler.]

Si in effetti era un programma in C che faccio ai ragazzi diciamo che ho usato lo stesso diagramma di flusso solo che mi hanno consigliato di
cambiare il salto con questo che in effetti dovrebbe essere più ottimale perchè
la BTFSS salta se la C = 1 e siccome per la sottrazion la C vale = 1 fin quando il risultato è maggiore di zero quindi salta ed esegue l'incremento ..... fino a quando la sottrazione non produce un numero negativo a quel punto esegue il GOTO per chiudere


AA----SUBWF DIVIDENDO, F
------BTFSS STATUS, C
------GOTO FINE
------INCF RISULTATO,F
------GOTO AA
FINE-- BSF STATUS, PR0

==============================================






Citazione:
Originalmente inviato da faustog
grazie a tutti..
x jijuja.. ... si in effetti il discorso dei palmari è azzeccato.. ..però vorrei sapere se esiste già un driver per JAVA tale che attraverso l'import del pakage pre-posto posso utilizzaree delle classi che comunicano con il servo controller.. dal palmare ovviamente.. ..penso che ciò sarebbe fantastico.. .

Per il corso consigliato da te ..sto proprio seguendo quello da te suggerito..


a dopo
fausto
faustog non è collegato   Rispondi citando
Rispondi

Bookmarks




Regole di scrittura
Non puoi creare nuove discussioni
Non puoi rispondere alle discussioni
Non puoi inserire allegati
Non puoi modificare i tuoi messaggi

BB code è Attivato
Le faccine sono Attivato
Il codice [IMG] è Attivato
Il codice HTML è Disattivato
Trackbacks è Disattivato
Pingbacks è Disattivato
Refbacks è Disattivato




Tutti gli orari sono GMT +2. Adesso sono le 03:47.


Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002