Tad67 Inserito: 11 marzo 2007 Segnala Inserito: 11 marzo 2007 Buongiorno a tutti. In questi giorni mi dibatto con la gestione di un parametro attuale passato ad un parametro formale di tipo ANY. Mi chiedevo se tralasciando la parte relativa all'estrazione del tipo di area e di lunghezza ciò che ho scritto come codice sembra secondo voi corretto o se per caso esiste una via + semplice. Mi riferisco per l'esattezza all'estrazione dell'indirizzo contenuto parte nel byte 7 e nel byte 8 -9.A me sinceramente sembra così complicato!!!VAR_INPUT DB_Dati : BLOCK_DB ; INPUT : ANY ; INDICE : INT ; END_VARVAR_OUTPUT output : ANY ; ERR : BYTE ; END_VARVAR_TEMP.................. END_VARBEGINNETWORKTITLE =..................................//Qui viene ricostruito l'indirizzo in formato Byte.Bit fornito al parametro //formale ANY e convertito, (moltilicando #Byte per 8 e aggiungendo il valore //della variabile #Bit), per essere caricato in AR1. // L P##INPUT; LAR1 ; //Estraggo i bit di peso 15-14-13 dell'inidirizzo Byte L B [AR1,P#7.0]; SLW 13; T #_Byte; //Estraggo 16 bit che contengono parte dell'inidirizzo Byte // e l'inidirizzo Bit L W [AR1,P#8.0]; PUSH ; // Estraggo i bit dell'indrizzo Bit e salvo UW W#16#7; T #_Bit; TAK ; // Sposto di peso i restanti bit dell'indirizzo Byte sulla posizione 12 - 0// Per poterne interpretare il giusto valore SRW 3; // Sommo il risultato al valore salvato per ricostruirne il totale L #_Byte; +I ; // Moltiplico per 8 per generare il formato compatibile con AR1 SLD 3; LAR1 ; // Sommo gli eventuali bit di offset per puntare un indirizzo a bit L #_Bit; +D ; // Finalmente carico il risultato in AR1 LAR1 ; U M [AR1,P#0.0]; Grazie a chiunque ci darà un occhio
Vince73PLC Inserita: 12 marzo 2007 Segnala Inserita: 12 marzo 2007 L P##InputAny LAR1 L D [AR1,P#6.0] LAR1 U M [AR1,P#0.0] = A 1.0Se ho inteso bene il tuo quesito. Io farei così... il sesto byte del puntatore any lo perdi nell'interrogazione prima dell'assegnazione qquindi non hai bisogno di pulirlo.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