;Programma che mostra sul display quale è l'interruttore 
;premuto di maggior peso                 


                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

                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            btfsc   ra,4            ;testare ra4
                goto    num5            ;se è 1, saltare al num5
                btfsc   ra,3            ;testare ra3            
                goto    num4            ;se è 1, saltare al num4
                btfsc   ra,2            ;...
                goto    num3
                btfsc   ra,1
                goto    num2
                btfsc   ra,0
                goto    num1
                goto    num0            ;se non c'è nessun interruttore 
                                        ;premuto saltare al num0
                
num5            movlw   b'01101101'     ;caricare W con codice a 7 seg. di 5
                movwf   rb              ;mandare alla porta B
                goto    loop            ;testare ancora

num4            movlw   b'01100110'     ;.....
                movwf   rb
                goto    loop
                
num3            movlw   b'01001111'
                movwf   rb
                goto    loop

num2            movlw   b'01011011'
                movwf   rb
                goto    loop
                
num1            movlw   b'00000110'
                movwf   rb
                goto    loop

num0            movlw   b'00111111'
                movwf   rb
                goto    loop
                
                end

