;Programma che mostra sul display il numero di interruttori
;che sono attivati.                


                list    p=16c84
                list    c=132
ra              equ     5               ;indirizzo della porta A
rb              equ     6               ;indirizzo della porta b
trisa           equ     5               ;indirizzo del registro 
                                        ;di stato della porta A
trisb           equ     6               ;indirizzo del registro
                                        ;di stato della porta B
status          equ     3               ;indirizzo del registro di stato
contator        equ     0x0c            ;contatore

                org     0               ;iniziare dal vettore di reset
                goto    inizio
                org     4               ;   "     "   "    "    " interrupt
                goto    inizio          ;per mandarli all'inizio

                org     5               ;seguito del vettore di interrupt
inizio          bsf     status,5        ;attivare pagina 1
                clrf    trisb           ;dichiarare porta b come tutta di uscita
                movlw   b'00011111'     ;
                movwf   trisa           ;dichiarare la porta A (RA0-RA4) di entrata
                bcf     status,5        ;attivare pagina 0
loop            movlw   0x00
                movfw   contator
                btfsc   ra,4            ;testare ra4
                incf    contator,1      ;se è 1, aumentare contatore
                btfsc   ra,3            ;testare ra3            
                incf    contator,1      ;se è 1, aumentare contatore                
                btfsc   ra,2            ;...
                incf    contator,1      ;se è 1, aumentare contatore                
                btfsc   ra,1
                incf    contator,1      ;se è 1, aumentare contatore
                btfsc   ra,0
                incf    contator,1      ;se è 1, aumentare contatore                
test5           decfsz  contator,1
                goto    test4           ;se il risultato della decfsz
                                        ;non è zero verifica per vedere se contatore=4
                goto    num1            ;se il risultato della decfsz 
                                        ;è zero salta a num5
test4           decfsz  contator,1
                goto    test3
                goto    num2

test3           decfsz  contator,1
                goto    test2
                goto    num3

test2           decfsz  contator,1
                goto    test1
                goto    num4

test1           decfsz  contator,1
                goto    num0
                goto    num5



num5            movlw   b'01101101'     ;cinque in 7 segmenti si carica in W
                movwf   rb
                goto    loop

num4            movlw   b'01100110'     ;4 in 7seg. a W
                movwf   rb
                goto    loop

num3            movlw   b'01001111'     ;3 in 7seg. a W
                movwf   rb
                goto    loop
                
num2            movlw   b'01011011'     ;2 in 7seg. a W
                movwf   rb
                goto    loop

num1            movlw   b'00000110'     ;1 in 7seg. a W
                movwf   rb
                goto    loop

num0            movlw   b'00111111'     ;0 in 7seg al W
                movwf   rb
                goto    loop
                
   
                
                end

