| |
| | #1 (permalink) Top |
| User 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 |
| | |
| | #2 (permalink) Top |
| User |
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) |
| | |
| | #3 (permalink) Top | |
| User 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:
| |
| | |
| | #4 (permalink) Top | |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
| | |
| | #5 (permalink) Top | |
| Guest
Messaggi: n/a
| Citazione:
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! | |
|
| | #6 (permalink) Top | |
| User 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:
| |
| | |
| | #7 (permalink) Top | |
| User 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:
| |
| | |
![]() |
| Bookmarks |
| |