

;*******************************************************************************
; 
; 
; 
; 
; 
; 
; 
; 
;*******************************************************************************
;	DESCRIZIONE:	INCROCIO SEMAFORICO SEMPLICE A DUE MODALITA. 
;			IN MODALITA NOTTE LAMPEGGIANO INSIEME TUTTE LE LUCI
;			GIALLE
;			IN MODALITA GIORNO LAMPEGGIA PER TRE VOLTE LA LUCE VERDE
;			PRIMA DI ACCENDERE LA LUCE GIALLA. 
;*******************************************************************************
;	FILENAME:	SSS.ASM
;	FILEVERSION:	001-A
;	FECHA:		22/07/2006
;*******************************************************************************
;	AUTORE:		ING. NELSON RIZZI	
;*******************************************************************************
;	ANNOTAZIONI: 	QUARZO DI 4 MHZ. 
;			MODALITA GIORNO: RA4=0 
;			MODALITA NOTTE:  RA4=1
;*******************************************************************************
;	PIC:		16F84A	    
;*******************************************************************************
;
;
;
;*******************************************************************************
;									       *
;*******************************************************************************
;-------------------------------------------------------------------------------
;CONFIGURAZIONE 

	__CONFIG   _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC

		INCLUDE	<P16F84A.INC>
;-------------------------------------------------------------------------------
;DECLARAZIONE E ASSEGNAZIONE DEI REGISTRI DI UTENTE

		CBLOCK	H'0C'		; COMINCIA ASSEGNAZIONE IN H'0C'
		
		CounterA		; PER TEMPORIZAZIONE 
		CounterB		; PER TEMPORIZAZIONE 
		CounterC		; PER TEMPORIZAZIONE 
		PATTERN_1		; PATTERN DELLE LUCI
		PATTERN_2		; PATTERN DELLE LUCI
		PATTERN_3		; PATTERN DELLE LUCI
		PATTERN_4		; PATTERN DELLE LUCI
		PATTERN_5		; PATTERN DELLE LUCI

		ENDC			; FINE DELLA ASSEGNAZIONE
;-------------------------------------------------------------------------------
;DEFINIZIONI

#DEFINE		BANCO0	BCF	STATUS,RP0
#DEFINE		BANCO1	BSF	STATUS,RP0
#DEFINE		SWITCH	PORTA,RA4
;-------------------------------------------------------------------------------
;DECLARAZIONE DEI BITS DEI REGISTRI PORTA Y PORTB 

RA0		EQU	0	; USCITA LED INDICATORE MODALITA "NOTTE" 		 
RA1		EQU	1	; USCITA LED INDICATORE MODALITA "GIORNO"
RA2		EQU	2	; USCITA NON UTILIZATA  
RA3		EQU	3	; USCITA NON UTILIZATA 	 
RA4		EQU	4	; INGRESSO (GIORNO RA4=0   NOTTE RA4=1) 
RB0		EQU	0	; USCITA NON UTILIZATA
RB1		EQU	1	; USCITA LUCE VERDE VIA 2
RB2		EQU	2	; USCITA LUCE GIALLA VIA 2
RB3		EQU	3	; USCITA LUCE ROSSA VIA 2
RB4		EQU	4	; USCITA NON UTILIZATA
RB5		EQU	5	; USCITA LUCE VERDE VIA 1	
RB6		EQU	6	; USCITA LUCE GIALLA VIA 1
RB7		EQU	7	; USCITA LUCE ROSSA VIA 1
		
;-------------------------------------------------------------------------------
;===============================================================================
;P R O G R A M M A
;===============================================================================
	ORG	0X00		; VETTORE DI RESET
	GOTO	INIZIO		; INVIA VERSO IL LABEL "INIZIO"
	ORG	0X04		; VETTORE D'INTERRUZIONE
	ORG	0X05

INIZIO	BANCO1			; SI FA IL CAMBIAMENTO AL BANCO 1
	MOVLW	B'10000'
	MOVWF	TRISA		; RA4=INGRESSO RA3=RA2=RA1=RA0=USCITA
	CLRF	TRISB		; PORTB= TUTTO USCITA
	BANCO0			; SI FA IL CAMBIAMENTO AL BANCO 0
	CLRF	PORTB		; AZZERO IL PORTO B

	MOVLW	H'82'		; B'10000010'
	MOVWF	PATTERN_1
	MOVLW	H'84'		; B'10000100'
	MOVWF	PATTERN_2	
	MOVLW	H'80'		; B'10000000'
	MOVWF	PATTERN_3	
	MOVLW	H'44'		; B'01000100'
	MOVWF	PATTERN_4	
	MOVLW	H'00'		; B'00000000'
	MOVWF	PATTERN_5	

SELEZIONE
	BTFSS	SWITCH
	GOTO	GIORNO
	GOTO	NOTTE

SPIA_N	BSF	PORTA,RA0
	BCF	PORTA,RA1
	RETURN

SPIA_G	BSF	PORTA,RA1
	BCF	PORTA,RA0
	RETURN
	
NOTTE	CALL	SPIA_N
	MOVF	PATTERN_4,W
	MOVWF	PORTB
	CALL	T600MSEG
	MOVF	PATTERN_5,W
	MOVWF	PORTB
	CALL	T600MSEG
	GOTO	SELEZIONE

GIORNO	CALL	SPIA_G
	CALL	LL
	CALL	T15SEG
	CALL	MM
	CALL	T600MSEG
	CALL	LL
	CALL	T600MSEG
	CALL	MM
	CALL	T600MSEG
	CALL	LL
	CALL	T600MSEG
	CALL	MM
	CALL	T600MSEG
	CALL	LL
	CALL	T600MSEG
	CALL	CC
	CALL	T3SEG
	
	CALL	CHANGE
	GOTO	SELEZIONE


CHANGE	SWAPF	PATTERN_1,F
	SWAPF	PATTERN_2,F
	SWAPF	PATTERN_3,F
	RETURN
	
LL	MOVF	PATTERN_1,W
	MOVWF	PORTB
	RETURN
	
MM	MOVF	PATTERN_3,W
	MOVWF	PORTB
	RETURN

CC	MOVF	PATTERN_2,W
	MOVWF	PORTB
	RETURN
;-------------------------------------------------------------------------------
;ARCHIVI DA INCLUDERE NELLO STESSO SOTTODIRETTORIO 
		
	INCLUDE	<T15SEG.INC>
	INCLUDE <T3SEG.INC>
	INCLUDE <T600MSEG.INC>
;-------------------------------------------------------------------------------
	END			; FINE DEL PROGRAMMA
;*******************************************************************************	

