alexamod Inserito: 23 novembre 2010 Segnala Share Inserito: 23 novembre 2010 Buongiorno a tutti!!Volevo chiedere se qualcuno conosce come richiamare dentro un FC il bit di una word dichiarata localmente.ad esempio IN=Valore tipo INTIo vorrei per esempio il bit 2 della variabile Valore dichiarata come INTgrazie. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 23 novembre 2010 Segnala Share Inserita: 23 novembre 2010 Se con bit 2 intendi il terzo bit da dx verso sx: LAR1 P##Valore U L [AR1,P#1.2] = .......Questo perché in S7 l'allineamento dei byte è secondo lo standard "Motorola" (Big Endian), con il byte più significativo che prende l'indirizzo più basso.Piccola curiosità: sapete da dove nascono le diciture Big Endian e Little Endian?Dal libro "I viaggi di Gulliver", e indicano il lato da cui si dovevano aprire le uova.Il re di Lilliput si tagliò aprendo un uovo dalla parte più piccola. Emanò quindi un editto che obbligava tutti ad aprire le uova dalla parte grande. I membri della comunità che vollero continuare ad aprire le uova dalla parte piccola furono costretti a fuggire e si rifugiarono sulla vicina isola di Blefuscu. Nacquero così i nomi delle due fazioni antagoniste, Big Endian per Lilliput e Little Endian per Blefuscu che, per questo banale motivo, diedero inizio ad una sanguinosa guerra.Ancora più curioso sapere che, per l'autore "Jonathan Swift", questa guerra per futili motivi rappresentava l'assurda guerra religiosa scoppiata tra l'Inghilterra protestante e la Francia cattolica. Link al commento Condividi su altri siti More sharing options...
mubeta Inserita: 23 novembre 2010 Segnala Share Inserita: 23 novembre 2010 Se la tua variabile locale è una variabile di tipo TEMP, allora è allocata nell'area L della funzione e, nel contesto della medesima funzione, è gestibile come una area M. Attenzione però che: se un giorno manipoli le dichiarazioni delle variabili temporanee, tutto cosa nella funzione non è simbolico, non viene aggiornato ed il codice è tutto da rivedere.Sarebbe più pulito fare i set/rest all'interno delle variabili complesse con degli OR/AND dei bit desiderati.Se invece la variabile è di ingresso credo non si possa fare nulla. Dico credo perché per il varo qualcosina si può fare, utilizzando i registri AR1 ed AR2, ma siccome ho sempre e solo fatto su word o dword, non ho idea se funziona anche con i bit. Link al commento Condividi su altri siti More sharing options...
suppaman Inserita: 24 novembre 2010 Segnala Share Inserita: 24 novembre 2010 aneddoto interessante.. batta ne sa sempre una piu del diavoloComunque seguendo il codice di batta puoi interrogare qualsiasi bit spostando la posizione del puntatore con l'offset, che è appunto P#x.x Link al commento Condividi su altri siti More sharing options...
batta Inserita: 24 novembre 2010 Segnala Share Inserita: 24 novembre 2010 Comunque seguendo il codice di batta puoi interrogare qualsiasi bit spostando la posizione del puntatore con l'offset, che è appunto P#x.xNon è proprio così.Io ho postato quel codice perché nel post iniziale si parlava di "word dichiarata localmente" e il titolo della discussione è "Indirizzamento Bit Di Word Variabili Locali Fc".Il termine "variabile locale" è riferito alle variabili dichiarate come "TEMP".La lettera "L" nell'istruzione "U L[AR1,P#1.2]" sta ad indicare proprio LOCALE, ed è riferita unicamente all'area TEMP.Se con "locale" c'era invece l'intenzione di indicare genericamente tutte le variabili dell'interfaccia della funzione, comprendendo anche "IN", "OUT" e "IN_OUT", la sintassi cambia leggermente: L P##Valore LAR1 U [AR1,P#1.2] = ......Omettendo la lettera "L" viene presa dal registro indirizzi anche l'area di memoria, e non solo l'indirizzo.A dire il vero, la lettera "L" potrebbe essere omessa anche nel caso della variabile TEMP ma, quando lavoro in quest'area, per chiarezza io preferisco scriverla.Altro sistema, è quello di creare delle maschere da mettere in AND con la variabile "Valore". Link al commento Condividi su altri siti More sharing options...
ken Inserita: 25 novembre 2010 Segnala Share Inserita: 25 novembre 2010 Non è possibile scrivere U L0.0?Vado a memoria, non sono sicuro che la sintassi sia corretta, ma per un lavoro guardavo il segno della mia variabile interrogando un bit e scrivevo qualcosa del genere, senza andare ad utilizzare i puntatori.Sempre come temp naturalmente. Link al commento Condividi su altri siti More sharing options...
gaserma Inserita: 25 novembre 2010 Segnala Share Inserita: 25 novembre 2010 Non è possibile scrivere U L0.0?Si è possibile, chiaramente così vai a caricare il bit L0.0 della prima word locale, per cui devi essere certo che è proprio quello l'indirizzo che ti serve.Volevo chiedere se qualcuno conosce come richiamare dentro un FC il bit di una word dichiarata localmente.Ad esempio IN=Valore tipo INTPer andare a leggere un bit della word citata ad esempio, dovresti fare un Move della variabile Int , del campo IN, su una Word locale del campo Temp e poi andarti a leggere i singoli bit nei vari modi già citati. Link al commento Condividi su altri siti More sharing options...
amed Inserita: 25 novembre 2010 Segnala Share Inserita: 25 novembre 2010 Sono variabili "L" accessibili a bit, byte, word ,e doppie word. Bisogna avere l'indirizzo assoluto della tua varibile e poi accedi al terzo bit. ES: L4.3 che è il bit 3 del byte 4 di memoria locale L. Link al commento Condividi su altri siti More sharing options...
alexamod Inserita: 3 dicembre 2010 Autore Segnala Share Inserita: 3 dicembre 2010 grazie per le vostre risposte. Link al commento Condividi su altri siti More sharing options...
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