| | #51 (permalink) Top | |
| User Data registr.: 12-04-2006 Residenza: Mondovì
Messaggi: 103
| Citazione:
A parte gli errori di "lingua", ovvero il ==, c' erano un po' di errori di concetto che adesso ti spiego. Per capire lo stato di un bit, non puoi fare un test secco, esempio if (portb == 0b00000001), perchè non testi il bit, ma l'intera porta. Questo significa che... questa condizione NON SOLO si verifica quando un pulsante è premuto E CONTEMPORANEAMENTE l'altro non lo è, ma anche quando I DUE LED SONO SPENTI. Ecco che... la condizione è un po' differente da quello che pensavi. Ma questo sarebbe valso in qualsiasi linguaggio. La condizione giusta la puoi (devi?) fare con una AND bit a bit, ovvero con la &. io infatti ho scritto if ((portb & PULSANTE1) ... dove pulsante 1 è stato definito con una direttiva "define" imponendo il valore 0b00000001. Questa operazione è una mascheratura che lascia "vivo" solo l'ultimo bit, poichè questo è a 1. In generale una mascheratura mediante AND bit a bit lascia "vivi" tutti i bit che nella mascheratura sono a 1 mentre quelli che sono a 0 vengono azzerati. Quindi il risultato di questa AND può essere 0b00000001 oppure 0b00000000, a seconda del valore dell'ultimo bit... nel caso di questa maschera. Altro nel caso di altre maschere, vedi PULSANTE2. L'altra operazione, la |, è una OR bit a bit, e funziona in maniera duale. Significa che... se faccio la OR con una maschera, i bit che nella maschera sono a 0 vengono lasciati invariati, quelli a 1 vengono settati a 1 indipendentemente dal loro valore. L'ultima operazione è una operazione sulla maschera, che ho fatto per "azzerare" il bit 6 o 7 indipendentemente dal valore degli altri. Questo lo puoi fare con una AND, ma devi "invertire il numero bit a bit" e lo fai con la "tilde", alt+126, ovvero la NOT. Questo significa che nel tuo caso, spegnevi il led non interessato... Anche qui la cosa è indipendente dal linguaggio. Per quanto riguarda le "define", abituati ad usarle abbondantemente, soprattutto perchè è più semplice leggere il mio programma del tuo. Inoltre, supponendo di voler invertire la mappatura dei pulsanti o dei led, cambi le define senza rincorrere il codice. Una domanda intelligente potrebbe essere "ma che differenza c'è tra le define e le const?". Prova a pensarci... se poi non lo capisci, chiedi. | |
| | |
| | #52 (permalink) Top |
| User Data registr.: 14-05-2005 Residenza: bergamo
Messaggi: 1.278
|
ciao e grazie,devo ancora finire di leggere il linguaggio c e mi devo decidere a prendere un bel po di appunti. comunque grazie della spiegazione provo a rispondere alla tua domanda,ma parlo da inesperto -define,credo che serva x dare un assegnazione riguardante al pic --conts,che credo sia costante,penso venga usata x definire un bit,un numero........ bocciato?scusami,ma sono ancora indietro
__________________ NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s GRUPPO LASER https://www.facebook.com/groups/1880460478909243/ |
| | |
| | #53 (permalink) Top | |
| User Data registr.: 12-04-2006 Residenza: Mondovì
Messaggi: 103
| Citazione:
Ritenta. Se poi hai bisogno di altro aiuto, fatti sentire. | |
| | |
| | #54 (permalink) Top |
| User Data registr.: 14-05-2005 Residenza: bergamo
Messaggi: 1.278
|
ok,lasciami studiare ancora un po,cosi poi almeno non sparo cavolate....avevo postato il programma solo x tirarmi via un dubbio,se no non andavo piu avanti.....x ora ti ringrazio x il tuo aiuto
__________________ NUOVO DRONE TAGLIATO AL LASER CO2 https://www.youtube.com/watch?v=cBgCVNyPH5c&t=7s GRUPPO LASER https://www.facebook.com/groups/1880460478909243/ |
| | |
| | #55 (permalink) Top | |
| User Data registr.: 21-01-2004 Residenza: Milano
Messaggi: 989
| Citazione:
Michele
__________________ __________________________________________________ The worst day flying is better than the best day working. | |
| | |
| | #56 (permalink) Top |
| Rivenditore - B.C.M. Power & Tools Data registr.: 28-09-2004 Residenza: Veroli (Fr)
Messaggi: 2.722
|
__________________ www.quattrociocchi.it (aeromodellismo,fotografie,energie,varie ed eventuali..) [Fusione Fredda, come spiegarla a mia nonna] |
| | |
| | #57 (permalink) Top | |
| Rivenditore - B.C.M. Power & Tools Data registr.: 28-09-2004 Residenza: Veroli (Fr)
Messaggi: 2.722
| Citazione:
dalla tua risposta e dal link che ho postato prima deduco che scrivere Led1 = !Led1 apparentemente simile a Led1 = ~Led1 ma nel primo caso funziona ma solo per caso! in quanto sto prendendo in considerazione una variabile di un solo bit, giusto? ne deduco che non funzionerebbe se scrivessi portb = !portb cioè tale istruzione non negherebbe tutti gli 8 bit singolarmente ma porterebbe portb a 0 o 1 a seconda se la porta B sia 1 o 0 e farebbe casino nel caso in cui sia un valore diverso da questi, giusto?
__________________ www.quattrociocchi.it (aeromodellismo,fotografie,energie,varie ed eventuali..) [Fusione Fredda, come spiegarla a mia nonna] | |
| | |
| | #58 (permalink) Top | |
| User Data registr.: 06-08-2007 Residenza: Empoli
Messaggi: 1.813
| Citazione:
Il risultato della not logica è 1 oppure 0. ESEMPIO: i=0b0101; j=!i; b=~i; Risultato assembler dopo la compilazione: .................... i=0b0101; 004B: MOVLW 05 004C: BCF 03.5 004D: MOVWF 21 .................... j=!i; 004E: MOVF 21,F 004F: BTFSC 03.2 0050: GOTO 053 0051: MOVLW 00 <----- risultato = 0 0052: GOTO 054 0053: MOVLW 01 <----- risultato = 1 0054: MOVWF 22 .................... b=~i; 0055: MOVF 21,W 0056: MOVWF 23 0057: COMF 23,F Nota come la NOT logica sia più lunga della semplice b=~i; già questo potrebbe suggerire ottimizzazioni nel programma
__________________ ....... | |
| | |
| | #59 (permalink) Top | |
| User Data registr.: 12-04-2006 Residenza: Mondovì
Messaggi: 103
| Citazione:
Ma la prima ha senso come... if (a=b). Il compilatore non si inca... ma non è detto che il risultato sia quello che deve. | |
| | |
![]() |
| Bookmarks |
| |
Discussioni simili | ||||
| Discussione | Autore discussione | Forum | Commenti | Ultimo Messaggio |
| modificare linguaggio menù mc3030 | ravenlinux2000 | Radiocomandi | 0 | 24 aprile 07 20:03 |
| info | francescospina | Elimodellismo in Generale | 0 | 26 ottobre 06 11:41 |
| Linguaggio E Versioni Simulatore Reflex Xtr | ctenos | Simulatori | 1 | 30 novembre 05 16:02 |