- Codice: Seleziona tutto
PROCESSOR 16F84A
RADIX DEC
INCLUDE "P16F84A.INC"
ERRORLEVEL -302
#define Banco0 bcf STATUS,RP0
#define Banco1 bsf STATUS,RP0
__CONFIG 3FF1H
RXData EQU 0 ; Pin RA0
TXData EQU 1 ; Pin RA1
Triac EQU 2 ; Pin RA2
Relay EQU 3 ; Pin RA3
LedRosso EQU 4 ; Pin RA4
; ---------------------------------
LedGiallo EQU 0 ; Pin RB0
LedArancione EQU 1 ; Pin RB1
Ingresso1 EQU 2 ; Pin RB2
Ingresso2 EQU 3 ; Pin RB3
Ingresso3 EQU 4 ; Pin RB4
CBLOCK 0x0C
Count: 3
ENDC
ORG 0x00
Banco1
movlw B'00000001'
movwf TRISA
movlw B'11011100'
movwf TRISB
movlw B'00000000'
movwf OPTION_REG
Banco0
bsf PORTA,Relay ; Attiva il Relay
bsf PORTB,LedGiallo ; Accendi il led giallo
bcf PORTB,LedArancione ; Spegni il led arancione
MainLoop
call Delay
btfsc PORTA,Relay ; Controlla lo stato della porta e salta l'istruzione successiva se a 0
goto Fase2
Fase1
bcf PORTA,Relay ; Disattiva il Relay
bcf PORTB,LedGiallo ; Spegni il led giallo
bsf PORTB,LedArancione ; Accendi il led arancione
goto Avanti
Fase2
bsf PORTA,Relay ; Attiva il Relay
bsf PORTB,LedGiallo ; Accendi il led giallo
bcf PORTB,LedArancione ; Spegni il led arancione
goto Avanti
Avanti
goto MainLoop
Delay
clrf Count
clrf Count+1
clrf Count+2
movlw 6
movwf Count+2
DelayLoop
decfsz Count,1
goto DelayLoop
decfsz Count+1,1
goto DelayLoop
btfss PORTA,LedRosso ; Se il led è acceso salta all' istruzione successiva
goto AccendiLed
SpegniLed
bcf PORTA,LedRosso ; Spegni il led
goto Continua
AccendiLed
bsf PORTA,LedRosso ; Accendi il led
goto Continua
Continua
decfsz Count+2,1
goto DelayLoop
return
END
ritardo software PIC16F84A
Moderatore:
Paolino
3 messaggi
• Pagina 1 di 1
0
voti
ho qualche problema con il funzionamento della temporizzazione sul PIC; non riesco a far scattare ad intervalli regolari il relay; in pratica mi sembra che una volta avviato il ciclo di delay non ne esca più. Dove sbaglio?
0
voti
Secondo me è invertito il controllo dopo la chiamata alla Delay: non deve essere
btfsc PORTA,Relay ; Controlla lo stato della porta e salta l'istruzione successiva se a 0
ma
btfss PORTA,Relay ; Controlla lo stato della porta e salta l'istruzione successiva se a 0
btfsc PORTA,Relay ; Controlla lo stato della porta e salta l'istruzione successiva se a 0
ma
btfss PORTA,Relay ; Controlla lo stato della porta e salta l'istruzione successiva se a 0
Fabio
0
voti
grande !; appena cambiato, riprogrammato e testato, era proprio quello .... continuavo a concentrami sul codice del delay perché pensavo che ci fosse qualcosa di errato che non lo facesse uscire dai loop di ritardo. Grazie.
3 messaggi
• Pagina 1 di 1
Torna a Firmware e programmazione
Chi c’è in linea
Visitano il forum: Nessuno e 4 ospiti

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

