Semplice switcher programmabile
Inviato: 12/05/2006, 14:54
Ve lo copio pari pari per ampliare il forum...
Salve a tutti,
visto che oggi mi sento magnanime vi presento il progettino che buttai giù tempo fa per switchare i canali di un ampli che poi non ho più costruito (come al solito
)
E' un progetto che fa uso di un PIC16F84 per attivare dei relè o semplicemente dei canali di una testata, questo è lo schema:

Questo è il programma del PIC:
;**************************************************
; LUIX CHANNEL SWITCH *
;**************************************************
PROCESSOR 16F84;
INCLUDE "P16F84.INC";
ERRORLEVEL -302;
ra0 EQU 0D
ra1 EQU 01D
ra2 EQU 02D
ra3 EQU 03D
ra4 EQU 04D
rb0 EQU 0D
rb1 EQU 01D
rb2 EQU 02D
rb3 EQU 03D
rb4 EQU 04D
rb5 EQU 05D
rb6 EQU 06D
rb7 EQU 07D
ORG 00H
INIZIO
bsf STATUS,RP0
movlw 00000000B
movwf TRISB
movlw 11111B
movwf TRISA
bcf STATUS,RP0
clrw
bsf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
bcf PORTB,rb5
bcf PORTB,rb6
bcf PORTB,rb7
KEYSCAN
btfss PORTA,ra0
call CH1
nop
btfss PORTA,ra1
call CH2
nop
btfss PORTA,ra2
call CH3
nop
btfss PORTA,ra3
call CH4
nop
btfss PORTA,ra4
call CH5
nop
goto KEYSCAN
CH1
bsf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH2
bcf PORTB,rb0
bsf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH3
bcf PORTB,rb0
bcf PORTB,rb1
bsf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH4
bcf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bsf PORTB,rb3
bcf PORTB,rb4
return
CH5
bcf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bsf PORTB,rb4
return
END
La funzione Keyscan serve a scansionare i tasti corrispondenti alla porta di ingresso (A), l'istruzione "btfss" (bit test skip if zero) serve per l'appunto a vedere se un tasto si trova a 1, in questo caso chiama la rispettiva funzione CHx, ad esempio se premiamo il tasto RA0 il PIC va alla funzione CH1.
Le varie funzioni CH1 CH2 ect... servono a portare i pin della porta B del PIC ad uno stato alto o basso a seconda che l'istruzione sia "bsf" (bit set) o "bcf" (bit clear) in questo modo tramite l'istruzione bsf "bit set" si attivano i bit della porta B e tramite l'istruzione "bcf" si disattivano i bit della porta, ad esempio nel canale CH5 i bit disattivati sono rb0 rb1 rb2 rb3 ed il bit attivo è rb4.
Come potete vedere potete programmare i 5 canali come vi pare, l'unica limitazione è che non potete farlo onboard, per riprogrammare il PIC dovrete smontarlo dalla scheda....
Quì trovate il pacchetto completo di file hex da caricare nel PIC.
Se di microcontrollori non ne capite nulla prima di fare domande vi prego di informarvi sull'argomento xchè non ho nessuna intenzione di rispondere a domande del tipo "ho messo il PIC in lavatrice ma non si è programmato, come posso fare per caricare il programma...?"
Salve a tutti,
visto che oggi mi sento magnanime vi presento il progettino che buttai giù tempo fa per switchare i canali di un ampli che poi non ho più costruito (come al solito

E' un progetto che fa uso di un PIC16F84 per attivare dei relè o semplicemente dei canali di una testata, questo è lo schema:

Questo è il programma del PIC:
;**************************************************
; LUIX CHANNEL SWITCH *
;**************************************************
PROCESSOR 16F84;
INCLUDE "P16F84.INC";
ERRORLEVEL -302;
ra0 EQU 0D
ra1 EQU 01D
ra2 EQU 02D
ra3 EQU 03D
ra4 EQU 04D
rb0 EQU 0D
rb1 EQU 01D
rb2 EQU 02D
rb3 EQU 03D
rb4 EQU 04D
rb5 EQU 05D
rb6 EQU 06D
rb7 EQU 07D
ORG 00H
INIZIO
bsf STATUS,RP0
movlw 00000000B
movwf TRISB
movlw 11111B
movwf TRISA
bcf STATUS,RP0
clrw
bsf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
bcf PORTB,rb5
bcf PORTB,rb6
bcf PORTB,rb7
KEYSCAN
btfss PORTA,ra0
call CH1
nop
btfss PORTA,ra1
call CH2
nop
btfss PORTA,ra2
call CH3
nop
btfss PORTA,ra3
call CH4
nop
btfss PORTA,ra4
call CH5
nop
goto KEYSCAN
CH1
bsf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH2
bcf PORTB,rb0
bsf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH3
bcf PORTB,rb0
bcf PORTB,rb1
bsf PORTB,rb2
bcf PORTB,rb3
bcf PORTB,rb4
return
CH4
bcf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bsf PORTB,rb3
bcf PORTB,rb4
return
CH5
bcf PORTB,rb0
bcf PORTB,rb1
bcf PORTB,rb2
bcf PORTB,rb3
bsf PORTB,rb4
return
END
La funzione Keyscan serve a scansionare i tasti corrispondenti alla porta di ingresso (A), l'istruzione "btfss" (bit test skip if zero) serve per l'appunto a vedere se un tasto si trova a 1, in questo caso chiama la rispettiva funzione CHx, ad esempio se premiamo il tasto RA0 il PIC va alla funzione CH1.
Le varie funzioni CH1 CH2 ect... servono a portare i pin della porta B del PIC ad uno stato alto o basso a seconda che l'istruzione sia "bsf" (bit set) o "bcf" (bit clear) in questo modo tramite l'istruzione bsf "bit set" si attivano i bit della porta B e tramite l'istruzione "bcf" si disattivano i bit della porta, ad esempio nel canale CH5 i bit disattivati sono rb0 rb1 rb2 rb3 ed il bit attivo è rb4.
Come potete vedere potete programmare i 5 canali come vi pare, l'unica limitazione è che non potete farlo onboard, per riprogrammare il PIC dovrete smontarlo dalla scheda....
Quì trovate il pacchetto completo di file hex da caricare nel PIC.
Se di microcontrollori non ne capite nulla prima di fare domande vi prego di informarvi sull'argomento xchè non ho nessuna intenzione di rispondere a domande del tipo "ho messo il PIC in lavatrice ma non si è programmato, come posso fare per caricare il programma...?"