-Barrett- Inserito: 15 aprile 2008 Segnala Inserito: 15 aprile 2008 Devo trasformare, per un caricatore di pallettini, un numero dato da una T in esadecimale ( es T12 caricata poi nella var. #20 ) e trasformala in un segnale pulsante. Per far questo il numero deve essere convertito in binario ( in questo caso il 12 in 1100 ). Ora devo scansionare questo numero binario bit per bit, dando un codice M102 quando il bit è a livello, e M101 quando il valore è 1. Dopo questi codici M ci vuole un segnale di clock M103.Questo è quello che ho capito dal riassunto di un programma datomi da un collega. Non si sa se funziona.Chi mi spiega che vuol dire il comando ROUND, GE, ma soprattutto come fanno a lavorare le righe finali #102 = #102- 1 ( DECREMENT ADDRESS COUNTER ) #101 = #101*2 ( INCREMENT BIT MASK, SHIFT LEFT ) ?#100=ROUND[#9]#101=ROUND[#20]#102=14 (INITIALIZE MAGAZINE ADDRESS BIT COUNTER )#101=1 (BIT MASK)N300 (LOOP START)IF [#100 EQ 0] GOTO 400 ( NO NEED TO SEND 0 BITS)IF [[#100 AND #101] EQ 0] GOTO 310 ( DATA BIT 0)M101 (PULSE SET BIT)#100 = #100- #101 ( REMOVE BIT FROM ADDRESS)GOTO 320N310 M102 ( PULSE RESET BIT)N320M103 (PULSE CLOCK )G04X0.05 (DWELL 50MS)#102 = #102- 1 ( DECREMENT ADDRESS COUNTER )#101 = #101*2 ( INCREMENT BIT MASK, SHIFT LEFT )IF [102 GE 1] GOTO 300 ( LOOP IF NOT DONE)ECC.. EC..
lucios Inserita: 5 maggio 2008 Segnala Inserita: 5 maggio 2008 Dunque, non sono un programmatore ISO quindi faccio un po fatica ad analizzare l'esempio, comunque posso dirti che:L'istruzione ROUND, come dice la parola, arrotonda alla prima cifra decimale. #102 = #102- 1 decrementa di 1 #102 ad ogni passaggio, quindi l'intenzione è di fare il loop 14 volte.#101 = #101*2 è un modo "classico" per effettuare uno shift-right. Moltiplicando per 2 un numero ottieni infatti l'effetto di shiftare a destra i bit.Ad es. se scrivi 1 in una word, moltiplicando per 2 più volte otterrai:12481632ecc..quindi "sposti" a destra il bit nella word.Ciao
cisio Inserita: 5 maggio 2008 Segnala Inserita: 5 maggio 2008 Scusa Lucios, vabbè che ormai la sinistra non esiste più, ma questo è uno shift LEFT ciao
lucios Inserita: 5 maggio 2008 Segnala Inserita: 5 maggio 2008 Ops! Hai ragione! Comunque, a parte la confusione della definizione(sto invecchiando , il concetto è corretto.Ciao
-Barrett- Inserita: 30 maggio 2008 Autore Segnala Inserita: 30 maggio 2008 Grazie Lucios !Ora mi è più chiaro il passaggio della moltiplica per 2.Ciao
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora