fabianon Inserito: 21 febbraio 2014 Segnala Inserito: 21 febbraio 2014 ciao chi mi fa un esempio di utilizzo del WAND_W EN IN1 MW10 IN2 W#16#F ENO OUT MW20
JumpMan Inserita: 21 febbraio 2014 Segnala Inserita: 21 febbraio 2014 (modificato) E' un AND tra le 2 word poste in IN1 e IN2, il risultato va in OUT Nel tuo caso IN2 è una costante che in binario vale: 0000 0000 0000 1111 Per cui fare l'AND tra la MW10 che entra in IN1 e la costante 0000 0000 0000 1111 equivale a dire mascherare i bit più significativi lasciando passare solo i primi 4 bit meno significativi, esempio: IN1 = 1010 1111 0100 0101 // <<< MW10 IN2 = 0000 0000 0000 1111 // <<< W#16#F OUT = 0000 0000 0000 0101 // <<< MW20 Modificato: 21 febbraio 2014 da JumpMan
fabianon Inserita: 21 febbraio 2014 Autore Segnala Inserita: 21 febbraio 2014 ti ringrazio per la spiegazione anche se non ho ancora afferrato bene in quali situazioni andrebbe usata.
JumpMan Inserita: 22 febbraio 2014 Segnala Inserita: 22 febbraio 2014 (modificato) Ti faccio un esempio in AWL dove UW corrisponde a WAND_W, supponiamo di voler rilevare il fronte positivo di uno qualsiasi tra 16 allarmi e in caso di nuovo allarme attivare una sirena, per farlo con la logica booleana servono grossomodo una settantina di istruzioni, lavorando con le word il codice si riduce a 10 istruzioni: L #MemAll_0_16 // Memorie 16 allarmi INVI // inverti tutti i bit (ACCU1 ha lo stato precedente NEGATO dei 16 allarmi) L #Allarmi_0_16 // 16 Allarmi (ACCU2 ha lo stato attuale dei 16 allarmi) T #MemAll_0_16 // (memorizza per il ciclo successivo senza cambiare ACCU1 e ACCU2) UW // WAND_W tra ACCU1 e ACCU2 (passano dall' UW solo i bit che sono a 1 e prima erano a 0) L 0 // Confronta il risultato del WAND_W con 0 <>I // se <>0 è stato rilevato un fronte S #Sirena // quindi setta il bit #Nuovo_Allarme U #Tacitazione // Pulsante tacitazione R #Sirena // resetta il bit Lavorando in doppia parola (INVD, UD, <>D) potrei anche gestire 32 allarmi sempre con 10 istruzioni in luogo di 140 istruzioni booleane ! ------------------ Ma ci sono anche applicazioni più banali, come p.es. filtrare la base dei tempi dal valore di un temporizzatore. Modificato: 22 febbraio 2014 da JumpMan
fabianon Inserita: 22 febbraio 2014 Autore Segnala Inserita: 22 febbraio 2014 grazie ora ho qualcosa su cui lavorare!! spero di riuscire a costruire qualcosa di buono.
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