Home
Accesso / Registrazione
 di 

retw.....qualcuno conosce il significato di questo comando???

8 risposte [Ultimo post]
ritratto di People
Offline
Titolo: User
Utente
Ultima visita:
4 anni 11 settimane fa
Utente dal: 04/03/2010
Messaggi: 9

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)

Pastus (non verificato)
ritratto di Pastus
Prima di tutto che

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.

ritratto di People
Offline
Titolo: User
Utente
Ultima visita:
4 anni 11 settimane fa
Utente dal: 04/03/2010
Messaggi: 9
scusate mi sembrava di

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"

ritratto di Emanuele
Offline
Titolo: Moderator
Moderatore
Ultima visita:
1 ora 40 min fa
Utente dal: 28/07/2007
Messaggi: 1019
Utente PREMIUM
RETW

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.

Maurizio Spoto (non verificato)
ritratto di Pastus
se lo stai leggendo da un

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

ritratto di People
Offline
Titolo: User
Utente
Ultima visita:
4 anni 11 settimane fa
Utente dal: 04/03/2010
Messaggi: 9
il listato non è scritto da

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 -.-'''''

Maurizio Spoto (non verificato)
ritratto di Pastus
0x0038 : 0x0000 nop

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

ritratto di People
Offline
Titolo: User
Utente
Ultima visita:
4 anni 11 settimane fa
Utente dal: 04/03/2010
Messaggi: 9
va bhe ma sto personaggio ha

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 ^__^

ritratto di People
Offline
Titolo: User
Utente
Ultima visita:
4 anni 11 settimane fa
Utente dal: 04/03/2010
Messaggi: 9
scusate se riesumo questo

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?

 

 

Login   
 Twitter Facebook LinkedIn Youtube Google RSS

Chi è online

Ultimi Commenti