MPASM 02.20.15 Intermediate   PRAC_19.ASM   10-22-2008  11:00:57         PAGE  1


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

                    00001 ;Curso básico de microcontroladores PIC.  --- micropic@lleida.org
                    00002 ;prac_19asm - Dado electrónico en el display conectado en el PORTB
                    00003 
                    00004         list    p=16F84         ;indica al ensamblador el modelo de PIC
                    00005         include "P16F84.inc"    ;incluye librería de definiciones para el PIC16F84
                    00001         LIST
                    00002 ; P16F84.INC  Standard Header File, Version 2.00    Microchip Technology, Inc.
                    00136         LIST
2007 3FF1           00006         __config        _CP_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC ;palabra de configuración
                    00007 
  0000000C          00008 CONTA_0 equ     0x0C            ;registro para bucle de pausa
  0000000D          00009 DADO    equ     0x0D            ;registro para valor del dado
                    00010 
0000                00011         org     0x00            ;primera posición de la memoria de programa
0000 2805           00012         goto    INICIO          ;salto a la etiqueta inicio
0005                00013         org     0x05            ;para pasar por encima del vector de interrupción
                    00014 
0005 1683           00015 INICIO  bsf     STATUS,RP0      ;selecciona banco 1 del área de datos
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0006 0186           00016         clrf    TRISB           ;configura PORTB todo salidas
0007 301F           00017         movlw   b'00011111'     ;
Message[302]: Register in operand not in bank 0.  Ensure that bank bits are correct.
0008 0085           00018         movwf   TRISA           ;PORTA como entradas
0009 1283           00019         bcf     STATUS,RP0      ;vuelve a banco 0 del área de datos
000A 0186           00020         clrf    PORTB           ;empieza apagando display
000B 2814           00021         goto    ESPERAR         ;salta la subrutina TABLA
                    00022 
                    00023 ;Tabla de código siete segmentos para el display 
                    00024 
000C 0782           00025 TABLA   addwf   PCL,F           ;se suma W al contador de programa para…
                    00026                                 ;...desplazarse por la tabla
000D 343F           00027         retlw   b'00111111'     ;0 en código siete segmentos
000E 3406           00028         retlw   b'00000110'     ;1 en código siete segmentos
000F 345B           00029         retlw   b'01011011'     ;2
0010 344F           00030         retlw   b'01001111'     ;3
0011 3466           00031         retlw   b'01100110'     ;4
0012 346D           00032         retlw   b'01101101'     ;5
0013 347D           00033         retlw   b'01111101'     ;6
                    00034 
                    00035 
0014 1805           00036 ESPERAR btfsc   PORTA,0         ;está pulsador "jugada" activado ?
0015 2814           00037         goto    ESPERAR         ;no
0016 2027           00038         call    PAUSA           ;pausa antirrebotes
0017 1805           00039         btfsc   PORTA,0         ;sigue pulsador "jugada" activado ?
0018 2814           00040         goto    ESPERAR         ;no, falsa pulsación
0019 0186           00041         clrf    PORTB           ;si, apaga display
001A 0A8D           00042 BUCLE   incf    DADO,F          ;incrementa valor DADO
001B 080D           00043         movf    DADO,W          ;pasa dado a W
001C 3C07           00044         sublw   .7              ;resta 7 para saber si ...
001D 1D03           00045         btfss   STATUS,Z        ;...dado es 7 ?
001E 2820           00046         goto    NO_7            ;Z=0, no es 7
001F 018D           00047         clrf    DADO
0020 1C05           00048 NO_7    btfss   PORTA,0         ;se ha soltado pulsador "jugada" ?
MPASM 02.20.15 Intermediate   PRAC_19.ASM   10-22-2008  11:00:57         PAGE  2


LOC  OBJECT CODE     LINE SOURCE TEXT
  VALUE

0021 281A           00049         goto    BUCLE           ;no, sigue dando vueltas al dado
0022 0A8D           00050         incf    DADO,F          ;inc. dado para que no sea "0" de forma que...
                    00051                                 ;...dado girará entre 1 y 6
0023 080D           00052         movf    DADO,W  
0024 200C           00053         call    TABLA           ;llama a tabla con el valor de dado en W
0025 0086           00054         movwf   PORTB           ;visualiza dígito en display
0026 2814           00055         goto    ESPERAR         ;vuelve a esperar nueva "jugada"
                    00056 
0027 0B8C           00057 PAUSA   decfsz  CONTA_0,F
0028 2827           00058         goto    PAUSA
0029 0008           00059         return
                    00060 
                    00061         end
MPASM 02.20.15 Intermediate   PRAC_19.ASM   10-22-2008  11:00:57         PAGE  3


SYMBOL TABLE
  LABEL                             VALUE 

BUCLE                             0000001A
C                                 00000000
CONTA_0                           0000000C
DADO                              0000000D
DC                                00000001
EEADR                             00000009
EECON1                            00000088
EECON2                            00000089
EEDATA                            00000008
EEIE                              00000006
EEIF                              00000004
ESPERAR                           00000014
F                                 00000001
FSR                               00000004
GIE                               00000007
INDF                              00000000
INICIO                            00000005
INTCON                            0000000B
INTE                              00000004
INTEDG                            00000006
INTF                              00000001
IRP                               00000007
NOT_PD                            00000003
NOT_RBPU                          00000007
NOT_TO                            00000004
NO_7                              00000020
OPTION_REG                        00000081
PAUSA                             00000027
PCL                               00000002
PCLATH                            0000000A
PORTA                             00000005
PORTB                             00000006
PS0                               00000000
PS1                               00000001
PS2                               00000002
PSA                               00000003
RBIE                              00000003
RBIF                              00000000
RD                                00000000
RP0                               00000005
RP1                               00000006
STATUS                            00000003
T0CS                              00000005
T0IE                              00000005
T0IF                              00000002
T0SE                              00000004
TABLA                             0000000C
TMR0                              00000001
TRISA                             00000085
TRISB                             00000086
W                                 00000000
WR                                00000001
WREN                              00000002
MPASM 02.20.15 Intermediate   PRAC_19.ASM   10-22-2008  11:00:57         PAGE  4


SYMBOL TABLE
  LABEL                             VALUE 

WRERR                             00000003
Z                                 00000002
_CP_OFF                           00003FFF
_CP_ON                            0000000F
_HS_OSC                           00003FFE
_LP_OSC                           00003FFC
_PWRTE_OFF                        00003FFF
_PWRTE_ON                         00003FF7
_RC_OSC                           00003FFF
_WDT_OFF                          00003FFB
_WDT_ON                           00003FFF
_XT_OSC                           00003FFD
__16F84                           00000001


MEMORY USAGE MAP ('X' = Used,  '-' = Unused)

0000 : X----XXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXX------ ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used:    38
Program Memory Words Free:   986


Errors   :     0
Warnings :     0 reported,     0 suppressed
Messages :     2 reported,     0 suppressed

