Home Forum MICROCONTROLLORI retw…..qualcuno conosce il significato di questo comando???

Questo argomento contiene 8 risposte, ha 2 partecipanti, ed è stato aggiornato da  People 4 anni, 7 mesi fa.

Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)
  • Autore
    Articoli
  • #54461

    People
    Membro

    salve non riesco proprio a capire cosa fa questo comando dovrebbe essere retLw e non retW….

    il microntrollore dovrebbe leggere un segnale seriale e convertirlo sempre in un segnale seriale per una com232…io devo dedurre da questo listato il proctocollo seriale sorgente ma non riesco proprio a capire la funzione retW quasi certamente quella è la chiave per la mia risoluzione…grazie per eventuali risposte ^__^

    […]

    :Skip2
    cjne Btn, LastBtn, :Skip3
    cjne LastBtn, LastBt2, :Skip3
    cjne LastBt2, LastBt3, :Skip3

    mov W, Btn
    jmp PC+W
    jmp :Btn0
    jmp :Btn1
    jmp :Btn2
    jmp :Btn3
    jmp :Btn4
    jmp :Btn5
    jmp :Btn6
    jmp :Btn7
    jmp :Btn8
    jmp :Btn9
    […]

    CHE DOVREBBE PUNTARE POI A….

    ResTbl jmp PC+W

    retw 00h, 000h ; Above this is Power 0
    retw 00h, 017h ; Above this is Source 1
    retw 00h, 043h ; Above this is ATT 2 (mute)
    retw 00h, 070h ; Above this is Front 3 (list/disp)
    retw 00h, 09Eh ; Above this is Seek Dn 4 (seek up)
    retw 00h, 0D6h ; Above this is Seek Up 5 (seek dn)
    retw 01h, 026h ; Above this is Vol Dn 6 (vol up)
    retw 01h, 09Ah ; Above this is Vol Up 7 (vol dn)
    retw 02h, 042h ; Above this is Back 8 (select)
    retw 03h, 03Dh ; Above this is Bottom 9 (mode)

    #68123

    Anonimo

    Prima di tutto che microcontrollore è? Microchip? motorola? altera?

    Sembra che la retw ritorni un comando definito nella seconda colonna (000h, 017h, etc) nel registro di memoria indicato dalla prima colonna.

    #68124

    People
    Membro

    scusate mi sembrava di averlo inserito il modello del microcontrollore…. pic12c509…inserisco il sito del progetto da cui l’ho prelevato magari può essere d’aiuto! http://www.armory.com/~charlie/empeg1/ io dovrei realizzare lo scopo inverso dedurre da questo listato i segnali seriali di quel “telecomando”

    #68125

    Emanuele
    Keymaster

    Il codice è per Parallax assembler, quindi diverso dall’assembler solito dei pic.
    Probabilmente RETW ricondurrà ad una macro con RETLW.
    (nei pic non esiste l’istruzione retw, come nemmeno cjne e jmp)
    Puoi verificare nella documentazione Parallax oppure direttamente nel codice generato dopo la compilazione.

    #68126

    Anonimo

    se lo stai leggendo da un disassembly è normale trovare scritto solo “RETW” ..pero la istruzione è “RETLW” ..e serve per ritornare da una subrutina portando un valore nell’accumulatore

    pero come dice l’amico pastus secondo la architettura può avere diverse utilità
    non escludo possa essere nel tuo caso un assegnazione tavola-funzione

    attenzione con i diasassembly di flusso, molti IDE ottimizzano il codice per renderlo leggibile pero se esamini con un dissasembler esterno vedrai le differenze
    o la migliore soluzione è andare in debug inviare un poco di steps “paso paso” e così vedrai cosa fa il tuo codice.

    Se ci dici l’IDE e/o la architettura ti possiamo aiutare meglio

    #68128

    People
    Membro

    il listato non è scritto da me l’ho trovato a questo indirizzo

    http://www.armory.com/~charlie/empeg1/

    più specificatamente (sorgente): http://www.armory.com/~charlie/empeg1/Sony4.src

    non avendo il telecomando RM-X4S della sony sto cercando di dedurre il protocollo seriale con cui comunica con l’autoradio tramite quel listato; che non fa altro che leggere il segnale seriale derivante dal telecomando e convertirlo in seriale per una porta rs232….presumo di trovare delle costanti a 8 bit come controlli di flusso….

    esattamente!!!la funzione “retlw” dovrebbe puntare all’istruzione seguente al jump effettuato salvando nell’accumulatore un dato, solo che nel mio caso ci sono due valori!!!

    la funzione jmp viene specificata nelle istruzioni di quel pic ;)

    ps maledetta sony e renault che mi stanno facendo impazzire -.-”” a che serve un protocollo proprietario chiuso per comandare l’autoradio -.-””’

    #68129

    Anonimo

    0x0038 : 0x0000 nop
    0x0039 : 0x02EB decfsz 0x0B , F
    0x003A : 0x0A38 goto 0x38
    0x003B : 0x0800 retlw 0x00
    0x003C : 0x01E2 addwf 0x02 , F
    0x003D : 0x0800 retlw 0x00
    0x003E : 0x0800 retlw 0x00
    0x003F : 0x0800 retlw 0x00
    0x0040 : 0x0817 retlw 0x17 ; .
    0x0041 : 0x0800 retlw 0x00
    0x0042 : 0x0843 retlw 0x43 ; C
    0x0043 : 0x0800 retlw 0x00
    0x0044 : 0x0870 retlw 0x70 ; p
    0x0045 : 0x0800 retlw 0x00
    0x0046 : 0x089E retlw 0x9E ; .
    0x0047 : 0x0800 retlw 0x00
    0x0048 : 0x08D6 retlw 0xD6 ; .
    0x0049 : 0x0801 retlw 0x01 ; .
    0x004A : 0x0826 retlw 0x26 ; &
    0x004B : 0x0801 retlw 0x01 ; .
    0x004C : 0x089A retlw 0x9A ; .
    0x004D : 0x0802 retlw 0x02 ; .
    0x004E : 0x0842 retlw 0x42 ; B
    0x004F : 0x0803 retlw 0x03 ; .
    0x0050 : 0x083D retlw 0x3D ; =
    0x0051 : 0x0C8F movlw 0x8F
    0x0052 : 0x0002 option

    questo è il codice reale come vedi è RETLW,
    effettivamente era come ti dicevo
    è una assegnazione tavola-funzione
    è una tecnica di enumerare dei valori e con la chiamata all’etichetta + puntatore ti ritornerà il valore della tavola

    TAVOLA MOVWF PCL

    VALORI RETLW VALORE0
    RETLW VALORE1
    RETLW VALORE2
    RETLW VALORE3

    ESEMPIO MOVLW VALORI ;CARICHIAMO LA PRIMA DIREZIONE

    ADDLW 0x02 ;AGGIUNGIAMO UN VALORE (POTREBBE ESSERE UNA VARIABILE O CONTATORE)

    CALL TAVOLA ;CHIAMIAMO LA NOSTRA TAVOLA

    MOVWF PORTA ;METTIAMO IL RISULTATO NEI PIN

    dopo c’e’ un po di codice per catturare il bottone premuto e chiamare la nostra funzione “ESEMPIO”

    spero ti sia utile!

    la migliore soluzione è dotarsi di uno oscilloscopio e in meno de 2 ore staccheresti fuori il protocollo
    e un telecomando semplice semplice non credo sia protetto il suo codice semplicemente invia il risultato per seriale

    ciao
    Maurizio Spoto

    #68130

    People
    Membro

    va bhe ma sto personaggio ha scritto con i piedi sto programma -.-”’ poteva fare le cose con piu semplicita…va bene grazie mille sicuramente sara una costante perchè se in base al segnale il programma deve effetture una scelta ci sara qualche if o case logico con scelte ben precise….

    per l’oscilloscopio….era utile se avevo il telecomando :) sono costretto a cercare dati su internet e l’unica cosa che ho trovato è quel listato….grazie mille a tutti ^__^

    #68131

    People
    Membro

    scusate se riesumo questo post…..abbiamo capito che retlw è un ritorno da una funzione con un ritorno di un dato nell’accumulatore…..ora mi sorge un dubbio

    l’accumulatore può essere un registro di massimo 8 bit????

    e se devo immagazzinare un dato maggiore di 8 bit….come posso fare????

    se notiamo dal retlw 00h, 000h fino al 00h, 0D6h il dato non supera il valore FFh….quando lo supera il primo valore diventa 01h, 026….

    sembrerebbe che è un modo per immagazzinare un dato maggiore di 8bit….es. 01h, 026h sarebbe 1 x FFh + 026h = 125h! un dato maggiore di 8 bit…..

    questo ragionamento potrebbe essere corretto?questo sarebbe un uso pratico di quella chiamata tavola-funzione?

Stai vedendo 9 articoli - dal 1 a 9 (di 9 totali)

Devi aver eseguito l’accesso per poter rispondere a questa discussione.