BaroneRosso.it - Forum Modellismo

BaroneRosso.it - Forum Modellismo (https://www.baronerosso.it/forum/)
-   Circuiti Elettronici (https://www.baronerosso.it/forum/circuiti-elettronici/)
-   -   Come Impostare Pin Vref 12f683 (https://www.baronerosso.it/forum/circuiti-elettronici/159227-come-impostare-pin-vref-12f683.html)

buby72 21 gennaio 10 07:32

Attivare 2 Uscite
 
CIAO,ho proseguito il mio circuito, mi sono trovato un piccolo problema, l'ho bypassato ma vorrei sapere il perchè:
quando il comparatore mi da uscita alta attiva 2 uscite, con due istruzioni come a seguito non succede nulla:
BSF GPIO,LED
BSF GPIO,RF
ho modificato con
MOVLW B'00110000'
MOVWF GPIO
così ottengo il mio scopo,
dopo un tot di tempo devo spegnere il led,mettto
BCF GPIO,LED

MSchiepp 21 gennaio 10 09:35

Citazione:

Originalmente inviato da buby72 (Messaggio 1893081)
...con due istruzioni come a seguito non succede nulla:
BSF GPIO,LED
BSF GPIO,RF

Visto così non sembra sbagliato... come hai definito LED e RF?

Michele

buby72 22 gennaio 10 22:45

ciao, ho impostato LED e RF in due modi:
ho collocato 2 memorie

FLY1 EQU 0X24
FLY2 EQU 0X25

poi ho collocato nelle memorie i seguenti binari

MOVLW B'00110000'
MOVWF FLY1
MOVLW B'00010000'
MOVWF FLY2

in questo modo FLY1 mette a valore alto il bit n°5 (LED) e n°4 (RF)
è FLY2 mette a valore alto il bit n°4(RF)
nel programma ho bisogno di RF attivo e LED lampeggiante per un lasso di tempo x.
con l'istruzione

go
MOVF FLY1,GPIO ;"dovrei" accendere il LED e abilitare l'uscita RF.
CALL TIME1 ;tempo di ritardo per lampeggio LED
MOVF FLY2,GPIO ;"dovrebbe" spegnere il LED e restare attivo RF.
GOTO go

:huh: invece non si attiva nulla.

ho risolto togliendo i FLY1 e FLY2 e modificato il programma così

go
MOVLW B'00110000' ; :)
MOVWF GPIO ; :)
CALL TIME1 ; :)
MOVLW B'00010000' ; :)
MOVWF GPIO ; :)
GOTO go

così ho 5 istruzioni dove, secondo il mio ragionamento ne bastano 3!
Ho anche provato a mettere

FLY1 EQU B'00110000'
FLY2 EQU B'00010000'

ho tolto le 4 istruzioni per collocare i binari nelle 2 FLY ma nulla
ho usato anche

#DEFINE FLY1 B'00110000' ; ho anche sostituito il binario con 30H
#DEFINE FLY2 B'00010000' ; ho anche sostituito il binario con 10H

ma nulla, mi sono tenuto il programma con le faccette. forse è il mio ragionamento che è errato? :mumble:

MSchiepp 23 gennaio 10 10:15

Citazione:

Originalmente inviato da buby72 (Messaggio 1895983)
... forse è il mio ragionamento che è errato? :mumble:

Non del tutto, ma un po' sì.

MOVF FLY1,GPIO

Non puoi muovere direttamente il contenuto di un registro in un altro: devi sempre passare dal registro W; l'istruzione MOVF reg,d muove il contenuto del registro in W se d=0 in reg se d=1.
Nel tuo caso ti servono due valori costanti da usare per settare le uscite di GPIO; la soluzione più semplice è:

#define FLY1 0x30
#define FLY2 0x10
.
.
.
MOVLW FLY1
MOVWF GPIO

Michele


Tutti gli orari sono GMT +2. Adesso sono le 14:07.

Basato su: vBulletin versione 3.8.11
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
E' vietata la riproduzione, anche solo in parte, di contenuti e grafica. Copyright 1998/2019 - K-Bits P.I. 09395831002