Visualizza messaggio singolo
Vecchio 22 ottobre 10, 14:27   #58 (permalink)  Top
illez
User
 
L'avatar di illez
 
Data registr.: 06-08-2007
Residenza: Empoli
Messaggi: 1.813
Citazione:
Originalmente inviato da claudio476 Visualizza messaggio
ipotizziamo di avere una variabile Led1 che gestisca un pin di Output,
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?
Assolutamente si.
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
__________________
.......
illez non è collegato   Rispondi citando