Chi mi da una mano a modificare un file asm ? [ RISOLTO ]

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
10 Anni 5 Mesi fa - 10 Anni 3 Mesi fa #1 da lo_sty
Ho ritrovato un vecchio progetto lasciato in garage e vorrei renderlo " FUNZIONANTE " ( in realtà lo è già ) -
Il problema è che l'ho scritto in assembly ed essendo passato al C quel poco che conoscevo l'ho dimenticato .
Il programma modifica dei valori in una eeprom esterna tramite dati ed indirizzi preimpostati nel programma .
Originariamente l'operazione viene effettuata nel momento che viene alimentato il pic16f84 .
Voglio aggiungere un pulsante su RB2 e fare in modo che alla pressione del pulsante il programma inizia la scrittura ed a fine scrittura va in pausa .
La modifica è semplice ma non riesco -.-''
Mi dareste gentilmente una mano ?
Se qualcuno mi dice di si posto volentieri il codice
Grazie
Ultima Modifica 10 Anni 3 Mesi fa da lo_sty.

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
10 Anni 5 Mesi fa #2 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Chi mi da una mano a modificare un file asm ?
Non so cosa faccia di preciso il tuo sistema, ma le librerie LaurTec includono le funzioni per scrittura di EEPROM esterne.
magari non ti sara' difficile riscrivere il tutto in C.

...ora hai capito di persona, perche' sconsiglio di scrivere in Assembly.
Quando sei dentro capisci tutto...ma dopo che lasci il progetto torna tutto piu' difficile.
..Con il C, una buona organizzazione e commenti, tutto e' piu' facile.

Magari posta comunque il software.

Saluti,

Mauro

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
10 Anni 5 Mesi fa #3 da lo_sty
Risposta da lo_sty al topic Chi mi da una mano a modificare un file asm ?
Il programma gira su un pic16f84 .
Il codice è questo
Code:
LIST P=16C84 list r=hex CONSTANT INDF=00H,TMR0=01H,FSR=04H,PORTA=05H,PORTB=06H CONSTANT EEADR=09H,EEDATA=08H,EECON1=88H,EECON2=89H CONSTANT CODELAY=11H,CICLI=12H,TRISB=86H,TRISA=85H CONSTANT ANTIR=13H,USER=16H,NUMCAR=15H,CODCAR=17H CONSTANT RESULT=1AH,INTCON=0BH,OKLOW=1EH,STATUS=03H AVVIO CLRF USER CLRF PORTA CLRF PORTB CALL DELAY15 ;ASPETTA STABILIZZAZIONE TENSIONE BSF STATUS,5 ;SELECT BANK 1 MOVLW 00H ;CONFIGURA LA PORTA A TUTTA OUTPUT.. MOVWF TRISA ;.. MOVLW 00H ;LA PORTA B TUTTA COME OUTPUT... MOVWF TRISB ;... BCF STATUS,5 ;SELECT BANK 0,QUELLO DELLE PORTE I/O CALL WRITE24 ;SCRIVE IL BYTE SELEZIONATO AL IND. OK BSF PORTB,1 ;LED VERDE SCRITTURA OK GOTO OK WRITE24 MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 0BH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 07H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 18H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 0E0H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 01BH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 07H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 44H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 80H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 45H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 0C2H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 46H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 040H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 47H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 08CH ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4CH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 81H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4DH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 44H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4EH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4FH ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4FH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 44H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 54H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 80H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 55H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 82H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 56H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 40H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 57H ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 08CH ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 5CH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 81H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 5DH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 04H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 5EH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 4FH ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE MOVLW 08H ;CONTA 8 BIT... MOVWF NUMCAR ;...PER OGNI BYTE TRASMESSO BSF PORTA,3 ;SDA HIGH BSF PORTA,2 ;SCL HIGH CALL DELAY100 BCF PORTA,3 ;SDA LOW WHILE SCL HIGH=START C. MOVLW 0A0H ;DEVICE ID A0 A1 A2 = 0 + WR MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 5FH ;QUESTO E'L'INDIRIZZO DOVE SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE MOVLW 44H ;QUESTO E' IL DATO DA SCRIVERE MOVWF CODCAR CALL TRASMETTIBYTE BCF PORTA,2 ;SCL LOW CALL DELAY100 BCF PORTA,3 ;SDA=LOW CALL DELAY100 BSF PORTA,2 ;SCL HIGH CALL DELAY100 BSF PORTA,3 ; SDA HIGH WHILE SCL HIGH=STOP C. CALL DELAY15 ;ASPETTA TEMPO DI WRITE RETURN ;*** SUBROUTINE DI TRASMISSIONE DI UN BYTE NELLA 24C02 (SISTEMA IIC BUS) TRASMETTIBYTE CALL DELAY100 BCF PORTA,2 ;SCL LOW RLF CODCAR,1 ;RUOTA A SINISTRA IL BYTE... BTFSS STATUS,0 GOTO SDALOW SDAHIGH BSF PORTA,3 GOTO NEXT SDALOW BCF PORTA,3 NEXT CALL DELAY100 BSF PORTA,2 ;SCL HIGH DECFSZ NUMCAR,1 GOTO TRASMETTIBYTE BCF PORTA,2 ;SCL LOW PER ACK BSF STATUS,5 ;BANK 1 BSF TRISA,3 ;CONFIGURA SDA COME INPUT PER ACK BCF STATUS,5 ;BANK 0 CALL DELAY100 BSF PORTA,2 ;SCL HIGH LATCHA TESTACK BTFSC PORTA,3 GOTO TESTACK BSF STATUS,5 ;BANK 1 BCF TRISA,3 ;SDA COME OUTPUT BCF STATUS,5 ;BANK 0 MOVLW 08H MOVWF NUMCAR RETURN ;*** SUBROUTINE DI RITARDO 5 MICROSECONDI ************************ DELAY100 MOVLW 10H MOVWF 0EH DECE100 DECFSZ 0EH,1 GOTO DECE100 RETURN ;*** SUBROUTINE DELAY 15 mS ************************************** DELAY15 MOVLW 64H ;DUE REGISTRI... MOVWF 0DH ;...CHE SONO 0D & 0E LOOPE15 MOVLW 32H MOVWF 0EH REDEC15 DECFSZ 0EH,1 ; E IL REGISTRO C... GOTO REDEC15 DECFSZ 0DH,1 GOTO LOOPE15 ;..CARICATO ESTERNAMENTE... RETURN END

In pratica non ricordo come far partire il micro dall'indirizzo 00h e far eseguire il programma se viene premuto un pulsante messo su RB2 .

1 - Inizio programma
2 - Controlla RB2 . Se viene premuto il pulsante inizia scrittura , altrimenti controlla RB2
3 - Se la scrittura è ok accendi il led e torna a controllare RB2

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • Mauro Laurenti
  • Moderatore
  • Moderatore
Di più
10 Anni 4 Mesi fa #4 da Mauro Laurenti
Risposta da Mauro Laurenti al topic Chi mi da una mano a modificare un file asm ?
L'inizio del programma e' definito dalla direttiva ORG che non vedo.
La direttiva ORG deve essere seguita dalla chiamata alla funzione principale.

Nel tuo caso credo che stai facendo uso di qualche valore di default per ORG e al reset vector poni l'etichetta AVVIO.

Per il controllo dei bit devi far uso delle istruzioni Bit Test, sulla porta PORTB bit 2.
Tali istruzioni ti permettono di saltare una istruzione. Questi test sono seguiti da un'istruzione CALL o GOTO, le quali ti permettono di andare ad una nuova etichetta e quindi proseguire in altre parti del codice. Se l'istruzione non viene saltata il codice salta con CALL o GOTO, mentre se l'istruzione e' saltata il codice continua con il resto del programma.

Devi pero' implementare anche un filtro, anti rimbalzo.

Onestamente mettere mani in un codice assembly non e' la mia passione, se non strettamente necessario.

Saluti,

Mauro

Si prega Accesso o Crea un account a partecipare alla conversazione.

  • lo_sty
  • Autore della discussione
  • Giovane Utente
  • Giovane Utente
Di più
10 Anni 3 Mesi fa #5 da lo_sty
Risposta da lo_sty al topic Chi mi da una mano a modificare un file asm ?
Alla fine ho risolto riscrivendo tutto in C :)

Si prega Accesso o Crea un account a partecipare alla conversazione.

Moderatori: Mauro LaurentiStefAMatteo Garia

Registrati al sito

Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.

Registrati al sito LaurTec.

Forum - Ultimi messaggi