Ctec Inserita: 4 febbraio 2014 Segnala Share Inserita: 4 febbraio 2014 (modificato) Fatto esempio simulato, ecco qua. Siano D14-D19 area dati (ho messo quelli del tuo precedente post D5 contiene il numero di dati nella tabella meno uno (nostro caso 5). D0 valore differenza oltre il quale si considera variazione repentina (ho messo 3) D1 conterrà il valore in cui il massimo ha avuto repentina variazione, e IR0 punterà al valore in tabella: D1 sarà 9999 se non trova il massimo IR0 è il registro indice puntatore, e D6 un contatore per verificare di aver trovato un massimo all'uscita del loop E' messo in simil ST per problemi di rappresentazione del ladder... MOVR D14 IR0 // Indirizzo di D14 in IR0 MOV &0 D6 // prepara l'ausiliario a 0 FOR D5 // imposta il FOR al numero di elementi meno uno MOV ,IR0+ D2 // Sposta il valore del dato puntato da IR0 in D2 e incrementa IR0 MOV ,IR0 D3 // Sposta il valore del dato puntato da IR0 in D3 ++ D6 // Incrementa Contatore - D3 D2 D4 // Calcola la differenza tra i due valori letti e mettila in D4 > D4 D0 // Se la differenza è maggiore del preimpostato D0 BREAK // Interrompi la scansione NEXT // Next For Loop MOV &999 D1 // predisponi valore indicante massimo non trovato <= D6 D5 // Se il contatore è inferiore al massimo numero di elementi, allora c'è stato un massimo MOV D3 D1 // Sposta il valore massimo in D1 Modificato: 4 febbraio 2014 da Ctec Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 4 febbraio 2014 Segnala Share Inserita: 4 febbraio 2014 Ti dava errore alla sottrazione perchè stavi tentando di fare la sottrazione tra due IR, cosa non consentita perchè gli IR sono doppia word (quindi avresti dovuto casomai usare -L). Ma l'operazione -L IR1 IR0 IR3 esegue la differenza tra gli indirizzi contenuti in IR0 e IR1 e mette l'indirizzo risultato in IR3, che non è quello che volevi... Fate attenzione alle virgole prima delle IR, specificano il valore puntato da, e non il valore contenuto in... Link al commento Condividi su altri siti More sharing options...
MABE Inserita: 4 febbraio 2014 Autore Segnala Share Inserita: 4 febbraio 2014 Scusa la mia ignoranza, ma ogni riga di comando che hai scritto, nel ladder la inizio con un contatto P_On? Link al commento Condividi su altri siti More sharing options...
Ctec Inserita: 4 febbraio 2014 Segnala Share Inserita: 4 febbraio 2014 Si e no. La FOR, la NEXT non devono avere nulla prima. la BREAK segue la comparazione del rigo che la precede, non serve il contatto P_On Lo stesso per l'ultima MOV che segue il confronto al penultimo rigo. E' una semplificazione del ladder, per motivi grafici. Link al commento Condividi su altri siti More sharing options...
MABE Inserita: 5 febbraio 2014 Autore Segnala Share Inserita: 5 febbraio 2014 Funziona tutto! Grazie Ctec quando farai un tutorial sull'indirizzamento indiretto, sicuramente lo leggerò!!! 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