Curso PIC16f87X 5
Transcript of Curso PIC16f87X 5
-
8/14/2019 Curso PIC16f87X 5
1/8
MODULO TIMER0El mdulo TIMER0 es untemporizador/contador con lassiguientes caractersticas:q El temporizador / contador
dispone de 8 bitsq Puede escribirse y leerseq Preescaler programable por
software de 8 bitsq Puede trabajar con el reloj
interno o con una seal de relojexterna
q Dispone de una interrupcin pordesbordamiento al pasar de FFha 00h
q Seleccin de flanco ascendente odescendente para el flaco delreloj externo
En la Figura 1 se muestra undiagrama de bloques del TIMER0y el preescaler que comparte con elWDT. Puede encontrarseinformacin adicional sobreel mdulo Timer0 en el manual
de referencia de losmicrocontroladores de la escalamedia (DS33023).
El modo temporizador seselecciona poniendo a cero el bitT0CS (registro OPTION_REG). En el modo temporizador, elmdulo Timer0 se incremento encada ciclo de instruccin (sin elpreescaler). Si el registro TMR0 seescribe, el incremento se inhibedurante los siguientes dos ciclos deinstruccin. EL usuario puedetrabajar teniendo en cuenta esto yajustando el valor a cargar en elTMR0.
El modo contador se seleccionaponiendo a uno el bit T0CS(registro OPTION_REG ). Elmodo contador, Timer0 seincremento en cada flaco de subidao de bajada de la seal que le llegapor RA4/TOCK1. El flanco deincremento se determina por el bitT0SE (registro OPTION_REG
). Ponindose a cero T0SE seselecciona el flanco ascendente.El preescaler se comparteexclusivamente entre el TIMER0 yel WDT. Y adems no es delectura/escritura.
INTERRUPCIN DEL TIMER0La interrupcin de TMR0 se
produce cuando el registro TMR0se desborda al pasar de FFh a 00h.Este desbordamiento pone auno el bit T0IF (INTCON).La ininterrupcin puedeenmascararse poniendo a cero elbit T0IE (INTCON ). EL bitT0IF debe ponerse a cero porsoftware al finalizar la rutina deatencin a la interrupcin deldesbordamiento de TMR0. Lainterrupcin de TMR0 no saca almicrocontrolador del estado deSLEEP, debido a que eltemporizador est desactivadodurante el modo SLEEP
CURSO DEMICROCONTROLADOREPIC16F87X (...y V)
CURSO DEMICROCONTROLADOREPIC16F87X (...y V)
Fernando Remiro DomnguezProfesor de Sistemas Electrnicos
IES. Juan de la Ciervawww.terra.es/personal/fremiro
Foosc/4
Bus de datos
El bit T0IF sepone a 1 si hayoverflow
T0SE
RA4/T0CKIpin
Sincronizaci ncon el reloj
internoTMR0
8
0
11
0
T0CS
PreescalerProgramable
PS2,PS1,PS0 PSA
3
PSout
PSout
(Retardo de 2 ciclos) M I C R O C O N
T R O L A D O R E S
52RESISTOR
Figura 1.- Diagrama de bloques del TIMER 0
Notas:
1. El preescaler es compartido con el WDT (En la Figura 2 se puede ver un diagrama de bloques detallado2. TOCS, TOSE, PSA, PS2:PS0 (OPTION_REG)
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 52
-
8/14/2019 Curso PIC16f87X 5
2/8
UTILIZACIN DEL TIMER0CON UN RELOJ EXTERNO
Cuando no se utiliza elpreescaler, la entrada de relojexterna es igual a la salida delpreescaler. La sincronizacin deTOCKI con los relojes de faseinterior se acopla, a la salida delpreescaler en los ciclos Q2 y Q4 delos relojes de fase internos. Porconsiguiente, es necesario queTOCKI est a nivel alto por almenos durante 2Tosc (y unpequeo retardo de 20ns) y a nivelbajo por lo menos 2Tosc (y unretardo RC de 20ns).
PREESCALERHay slo un preescaler
disponible que est compartido y
puede asignarse indistintamente almodul de TIMER0 y el al WDT.La asignacin del preescaler alTimer0 hace que no haya ningnpreescaler para el WDT, y viceversa.Este preescaler no se puede leer niescribir (ver la Figura 2).
El bit PSA y PS2:PS0(OPTION_REG )determinan la asignacin delpreescaler y el rango del preescaler.Cuando se le asigna al mdulo delTirner0 , todas las instrucciones, queescriben en el registro TMR0 (porejemplo CLRF TMR0, MOVWFTMR0, BSF TMR0,x... etc.) ponena cero el preescaler. Cuando se leasigna al WDT, una instruccinCLRWDT limpia el preescaler junto con el temporizador del
WDT. EL preescaler no se puedeleer ni escribir.
Nota.- Escribir en TMR0,cuando el preescaler es asignado aTIMER0, limpia la cuenta delpreescaler, pero no cambia laconfiguracin del preescaler.
PROGRAMA EJEMPLO DEFUNCIONAMIENTO DELTIMER0
Para comprobar elfuncionamiento de este programadebemos de montar un circuitocomo el que se muestra en la Figura3, en el que se ha conectado undisplay del tipo ctodo comn alPORTB de PIC16F876. Una vezcargado el programa TMR0_2.asm,en el display se irn representado
CLKOUT (=Foosc/4)Bus de datos
El bit T0IF sepone a 1 si hayoverflow
T0SE
RA4/T0CKIpin
PS2:PS0
PSA
WDTtime-out
WDT bit de habilitaci n
MUX
T0CS
0
1
Retardode 2
ciclosRegistro TMRO
MUX
PSA
1
0
MUX
PSA
0
1
Multiplexor 1-8
Preescaler de 8 bits
MUX
PerroGuardi n
8
0 1
8
3
Figura 2.- Diagrama de bloques del TMR0
Leyenda: x = desconocido, u = inalterado; - = no implementado se lee como 0. Las celdas sombreadas no son usadas por el TIMER0
Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en elPOR,BOR resto de Reset
01h 101h TMR0 Mdulo del registro del TMR0 xxxx xxxx uuuu uuuu0bh, 8Bh
10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTF RBIF 0000 000x 0000 000x81h,181h OPTION_REG RBPU INTEDGT0CS T0SE PSA PS2 PS1 PS0 1111 1111 1111 111185h TRISA --- --- Registro de direccionamiento de datos del PORTA --11 1111 --11 1111
TABLA DE REGISTROS ASOCIADOS AL TIMER0
53RESISTOR
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 53
-
8/14/2019 Curso PIC16f87X 5
3/8
M I C R O C O N
T R O L A D O R E S
los nmeros del 0 al 9 con unacadencia de aproximadamente unsegundo.
El organigrama del programa esel que se muestra en la Figura 4 yen el programa que est pensadopara cargarlo con el bootloader, sehan separado con un ";" y se hanmarcado en azul, las l neas quehabr a que cargar si se utiliza unprogramador como el ic-prog. Eneste programa al TIMER0 se lehace trabajar como temporizador,que genera una interrupcincuando se desborda TMR0.
EL MDULO DE TIMER1El mdulo de TIMER1 es un
temporizador/contador de 16 bits,formado por dos registros de 8 bitscada uno TMR1H y TMR1L, queson de lectura y escritura y que sonlos que guardan el valor de lacuenta en cada momento. El valorde los registros TMR1H y TMR1Lse incrementan desde 0000H hastaFFFFH, en cuyo instante se vuelvea poner a 0000h y se activa elflag TMR1IF (PIR1). Laininterrupcin de TMR1 puede serhabilitada/deshabilitada segn estea uno/cero el bit TMR1IE (PIE1).
EL TIMERl tiene los siguientesmodos de trabajo:
1. Como Temporizador2. Como contador S ncrono3. Como contador As ncrono
Figura 3.- Circuito de aplicacin para el programa TMR0_2 utilizando el PIC16F876
54RESISTOR
Vcc= 5V
MCLR
RA0RA1RA2RA3RA4RA5Vss
OSC1
OSC2/CKOUT
RC0RC1RC2
RC3
RB7
RB6
RB5RB4RB3RB2RB1RB0
VDD
VSS
RC7RC6RC5RC4
Reset
R110K
R2 100
R7 300
R8 300
R9 300
R10 300
R11 300
R12 300
a
b
c
d
e
a
b
c
d
e
f
g
f
g
R13 300
Vcc=5V
C1 27 pF
C2 27 pF
XT 4Mhz
TMR0_2.asm
INICIALIZA
RPORTB-->SALIDA
PREESCALER--> 256 TMRO
16-->CONTA
0-->TMR0
0-->DIGITO
LEETABL
A
DIGITO=10?NO
SI
INT_TMR0
0 -->TMR0
CONTA-1 --> CONTA
CONTA=0?
DIGITO+1-->DIGITO
16 -->CONTA
REPONER WY
STATUS
1 -->TOIF
RETFIE
SI
NO
Guardar W ySTATUS
Reg.TEMPORALES
Figura 4.- Cronograma del programaTMR0_2
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 54
-
8/14/2019 Curso PIC16f87X 5
4/8
;*************************************************************************************; Programa TMR0_2.ASM Fecha : 15 - Abril - 2003; Este programa presenta en el display de ctodo comn conectado en el PORTB; los nmeros del 0 al 9, mostrando un dato por segundo (aproximadamente), la
; temporizacin la realiza utilizando la interrupcin por TMR0 y el registro auxiliar CONTA; Revisin : 0.0 Programa para PIC16F87X; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS; Perro Guardin : deshabilitado Tipo de Reloj : XT; Proteccin del cdigo : OFF;********************************************************************************************
List p=16F876 ;Tipo de procesadorinclude "P16F876.INC" ;Definiciones de registros internos
;************************** DEFINICION DE VARIABLES ************************************W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupcinS_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupcinDIGITO equ 0x22 ;numero a representar en displayCONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo
;entre cada cambio de digito, ya que los 256 (FF) del Timer,;aunque se divida por 256, es 4x256x256=262,144 ms
;*******************************************************************************************; ORG 0x00; goto INICIO
ORG 0x04;*************************** ATENCION A LA INTERRUPCION *******************************INT_TMR0
movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpeswapf STATUS,W ;Intercambia nibbles y guarda en Wmovwf S_TEMPORAL ;Almacena Status pero cambiado el ..
;.. nibble alto por el bajoclrf TMR0 ;Inicializa TMR0=00decfsz CONTA,f ;Decrementa CONTAy si =0 incrementa DIGITOgoto FIN_INT ;Si cont_aux 0 finaliza interrupcinincf DIGITO,F ;Incrementa el DIGITOmovlw D'16' ;Al cargar TMR0 con 0 hace 256 cuentas con un predivisor de 256
;(programado en OPTION_REG). Como queremos 1sg. ponemos 16 en CONTA; as obtenemos 4*256*256*16 = 1,048576s
movwf CONTA ;inicializa de nuevo CONTA para un nuevo digito
FIN_INTswapf S_TEMPORAL,W ;Deja Status como estaba antes y en Wmovwf STATUSswapf W_TEMPORAL,F ;Intercambia nibbles del W guardadoswapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en Wbcf INTCON,T0IF ;Borra el flag de la interrupcinretfie ;Retorno de interrupcin
;********************* PROGRAMA PRINCIPAL *************************************INICIObcf STATUS,RP0bsf STATUS,RP0 ;Habilita Banco1 de registrosclrf TRISB ;direcciona PortB como salidasmovlw B'00000111' ;Reloj interno asignado aTMR0 con divisor por 256movwf OPTION_REGbsf INTCON,GIE ;habilitacin general de las interrupcionesbsf INTCON,T0IE ;habilitacin de la interrupcin por TMR0bcf STATUS,RP0 ;RP0=0 habilita Banco0 de registrosclrf TMR0 ;Inicializa TMR0 a 0movlw D'16' ;Carga CONTA con 16movwf CONTA
PONER_0clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta
LEETABLAcall TABLAmovwf PORTB ;Muestra digito en el display 7 segmentos (PortB)movlw D'9' ;subwf DIGITO,W ;Compara DIGITO con 9
btfss STATUS,Z ;goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITOgoto PONER_0 ;Si DIGITO=9,lo pone a 0 de nuevo.
;********************* TABLA CON LOS VALORES DE LOS DIGITOS ******************TABLA
movf DIGITO,W ;Guarda digito en acumuladoraddwf PCL,F ;Suma al contador de programa el digitoDT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67
;*******************************************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto INICIO ;Salto a la direccin de INICIO del programa
;*******************************************************************************END
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 55
-
8/14/2019 Curso PIC16f87X 5
5/8
-
8/14/2019 Curso PIC16f87X 5
6/8
contina la cuenta incluso en elmodo SLEEP y puede generar unainterrupcin por desbordamientoque despierta al procesador. Hayque tener especial cuidado con elsoftware al leer o escribir elcontador.
Cuando se trabaja en el modocontador as ncrono, el TIMER1 nopuede usare como base de tiempos
para el mdulo CCP (Captura ycomparacin-PWM)
LECTURA Y ESCRITURA EN ELTIMER1 CUANDO SETRABAJA EN EL MODOCONTADOR AS NCRONO
Se pueden leer los contadoresTMR1H y TMR1L mientras laseal externa del contador se est
recibiendo (teniendo cuidado con elhardware). Sin embargo, el usuariodebe tener en cuenta que elcontador es de 16 bits y se puedentener ciertos problemas al leer losdos registros de ocho bits, ya que elcontador puede desbordarse entrelas lecturas.
Para escribir en l, serecomienda que el usuario
57RESISTOR
T1CK1(Por defecto a
nivel alto)
T1CKI(Por defecto anivel bajo)
Nota.- Las flechas indicas los incrementos del contador
TMR1H TMR1L1
0
Preescaler1,2,4,8
sincronizaci ndetecci n
0
1
El bit TMR1F se pone a 1cuando se desborda
RC0/T1OSO/T1CKI
RC1/T1OSI/CCP2
TMR1ONon/off
FOSC/4ClokInterno
TMR1CST1CKPS1:T1CKPS0
2
Entrada SLEEP
T1SYNC
Entrada ClockSincronizada
T1OSCENHabilita
Oscilador
TMR1
Figura 5.- Diagrama de bloques de TIMER1
Tabla 1.- Seleccin de los condensadores para el oscilador del TIMER1
Tipo de Oscilador Frecuencia C1 C2LP 32 kHz 33pF 33pF
100kHz 15 pF 15 pF200 15 pF 15 pF
Estos valores son para los siguientes cristales de referencia32.768 EpsonC-001R21.768K-A 20 PPM100 kHz Epson C-2 100.000 KC-p1 20 PPM200 kHz STD XTL 200.000 kHz 20 PPMNota.-1. Capacidades mayores aumentan la estabilidad del oscilador, pero tambin aumentan el start-up.2. Cada cirstal/resonador tiene sus propias caractersticas, el usuario debe consultar los valores apropiados
de los componentes externos al cristal.
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 57
-
8/14/2019 Curso PIC16f87X 5
7/8
simplemente pare el contador yescriba los valores deseados.Cuando se escribe el registro delcontador puede haber conflictomientras este se estincrementando. Esto puedeproducir un valor imprevisible en elcontador.
OSCILADOR DEL TIMER1Se puede conectar un oscilador
a cristal entre los pines T1OSI(entrada) y T1OSO (salidadel amplificador). Se debehabilitar poniendo a uno el bit de
control TLOSCEN (TICON ).El oscilador de bajo consumopuede trabajar hasta 200 kHz. Enestas condiciones el oscilador siguefuncionando aunque se fuerce el
modo SLEEP. Est pensado paratrabajar con un cristal de hasta 32kHz. La Tabla 1 muestra el valorde los condensadores para elTIMER1.
El oscilador TIMER1 esidntico al oscilador LP. Elusuario debe proporcionar untiempo de retardo por softwarepara asegurar la salida apropiadadel oscilador.
RESTABLECIMIENTO DELTIMER1 UTILIZADO LASALIDA TRIGGER DEL CCP
Si el mdulo CCP1 o CCP2se configuran en modocomparacin para generar un"disparo por evento especial"(CCP1M3:CCP1M0 = 1011
(CP1CON)), esta sealreestablecer el TIMIER1.Nota.- El evento especial que
activa los mdulos CCP1 y CCP2 noactivar el flag
TMR1IF (PIR1).El TIMER1 debe configurarse
como temporizador o contadors ncrono.
Restablecimiento TIMER1 queusa un disparador de CCP.
TIMER1 debe configurarsepara temporizador o contadors ncrono para aprovechar estacaracter stica. Si el TIMER1 est
trabajando en modo contadoras ncrono, el reset no puede seractivado.
En el caso de escribir sobre elTIMER1 en el momento del
disparo del evento especial deCCP1 o CCP2, se tomar el valoranterior.
En el caso de escribir sobreTIMER1 si coincide con un disparopor evento especial de CCP1 oCCP2, se carga el valor anterior.
En este modo defuncionamiento, el par de registrosCCPRxH:CCPRxL se reponenpara volver a tener el periodo delTIMER1.
RESTABLECIMIENTO DEL PARDE REGISTRO DEL TIMER1(TMR1H, TMR1L)
Los registros TMR1H yTMR1L no se inicializan a 00hdespus de un Power-on Reset opor cualquier otro reset excepto por
un disparo de evento especial enCCP1 y CCP2. El registro T1CONse inicializa a 00h despus de unPower-on Reset o Brown-out Resetque deja a 1:1 el preescaler. En losdems reset, el registro no esalterado.
TIMER1 PREESCALEREl contador del preescaler se
pone a cero al escribir en losregistros TMR1H o TMR1L.
RESUMEN DE REGISTROS ASOCIADOS AL TIMER1
En la siguiente tabla se muestranlos registros principales quecontrolan el comportamiento delTIMER1 y la distribucin de losbit.
PROGRAMA EJEMPLO DEFUNCIONAMIENTO DELTIMER1
Para comprobar elfuncionamiento de este programautilizaremos el circuito de laFigura 3 que es el mismoque hemos utilizado paracomprobare el funcionamiento delTIMER0, en el que se haconectado un display del tipoctodo comn al PORTB dePIC16F876. Una vez cargado elprograma TMR1_0.asm, en eldisplay se irn representado losnmeros del 0 al 9 con unacadencia de aproximadamente unsegundo.
Direccin Nombre Bit 7 Bit 6 Bit 5 Bit 4 Bit 3 Bit 2 Bit 1 Bit 0 Valor en Valor en elPOR,BOR resto de Reset
0Bh,8Bh10Bh,18Bh INTCON GIE PEIE T0IE INTE RBIE TOIF INTE RBIF 0000 000x 0000 000u0Ch PIR1 PSPIF ADIF RCIF TXIF SSPIF CCP1IF TMR2IF TMR1IF 0000 0000 0000 00000Bh PIE1 PSPIE ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE 0000 0000 0000 00000Eh TMR1L Registro de carga del byte de menor peso del registro de 16 bits de TMR1 xxxx xxxx uuuu uuuu0Fh TMR1H xxxx xxxx uuuu uuuu
10h T1CON --- --- T1CKPS1 T1CKPS0 T1OSCEN T1SYNC TMR1CS TMR1ON--xx xxxx --uu uuuu
Leyenda x = desconocido, u = inalterado; - = no implementado se lee como 0. Las celdas sombreadas no son usa-das por el TIMER1
Nota 1: Los bits PSPIE y PSPIF estn reservados para el PIC16F873/876, mantener estos bits a cero.
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 58
-
8/14/2019 Curso PIC16f87X 5
8/8
;*************************************************************************************; Programa TMR1_0.ASM Fecha : 15 - Abril - 2003; Este programa presenta en el display de ctodo comn conectado en el PORTB; los nmeros del 0 al 9, mostrando un dato por segundo (aproximadamente), la; temporizacin la realiza utilizando la interrupcin por TMR1 y el registro auxilar CONTA; Revisin : 0.0 Programa para PIC16F87X; Velocidad del Reloj: 4 MHz Reloj Instruccin: 1 MHz = 1 uS; Perro Guardin : deshabilitado Tipo de Reloj : XT; Proteccin del cdigo : OFF;********************************************************************************************
List p=16F876 ;Tipo de procesadorinclude "P16F876.INC" ;Definiciones de registros internos
;********************* DEFINICION DE VARIABLES *****************************W_TEMPORALequ 0x20 ;Almacena W antes de atender la interrupcinS_TEMPORAL equ 0X21 ;Almacena Status antes de atender la interrupcinDIGITO equ 0x22 ;numero a representar en displayCONTA equ 0x23 ;Contador auxiliar para alargar el tiempo a 1 segundo
;entre cada cambio de digito, ya que los 256 (FF) del Timer,;aunque se divida por 256, es 4x256x256=262,144 ms
;*******************************************************************************; ORG 0x00; goto INICIO
ORG 0x04;******************* ATENCION A LA INTERRUPCION **************************INT_TMR1
movwf W_TEMPORAL ;Guarda el valor actual de W cuando se interrumpeswapf STATUS,W ;Intercambia nibbles y guarda en Wmovwf S_TEMPORAL ;Almacena Status pero cambiado el ..
;.. nibble alto por el bajomovlw low ~.62500 ;Carga parte baja del contador con el complementomovwf TMR1L ; de 62500 en hex.movlw high ~.62500 ;Carga parte baja del contador con el complementomovwf TMR1H ;de 62500 en hex.bcf PIR1,0 ;Desconecta el flag del TMR1incf PORTB,F ;Incrementa el contador de la Puerta Bdecfsz CONTA,f ;Decrementa CONTAy si =0 incrementa DIGITOgoto FIN_INT ;Si cont_aux 0 finaliza interrupcionincf DIGITO,F ;Incrementa el DIGITOmovlw D'2'movwf CONTA ;inicializa de nuevo cont_aux para un nuevo digito
FIN_INTswapf S_TEMPORAL,W ;Deja Status como estaba antes y en Wmovwf STATUSswapf W_TEMPORAL,F ;Intercambia nibbles del W guardadoswapf W_TEMPORAL,W ;Vuelve a intercambiar pero ya en Wbcf INTCON,T0IF ;Borra el flag de la interrupcinretfie
;********************* PROGRAMA PRINCIPAL *************************************INICIO
bcf STATUS,RP0bsf STATUS,RP0 ;Habilita Banco1 de registrosclrf TRISB ;direcciona PortB como salidasmovlw b'11111111'movwf OPTION_REG ;Preescaler d 128 asociado al WDTbsf PIE1,0 ;habilita interrupcin del TMR1bcf STATUS,RP0 ;Selecciona banco 0
;El TMR1 trabaja con oscilador interno y un preescaler de 1:8. Si se trabaja a una frecuencia;de 4 MHz, el TMR1 deber ser cargado con 62500 para que provoque interrupcin al de 0.5s b
movlw b'00110001'movwf T1CONmovlw b'11000000'movwf INTCON ;Habilitacin global de interrupcionesmovlw D'2' ;Carga CONTA con 2movwf CONTA
PONER_0clrf DIGITO ;Carga DIGITO a 0 para iniciar cuenta
LEETABLAcall TABLAmovwf PORTB ;Muestra digito en el display 7 segmentos (PortB)movlw D'9' ;subwf DIGITO,W ;Compara DIGITO con 9btfss STATUS,Z ;goto LEETABLA ;Si DIGITO NO = 9, incrementa DIGITOgoto PONER_0 ;Si DIGITO=9, lo pone a 0 de nuevo.
;********************* TABLA CON LOS VALORES DE LOS DIGITOS ******************TABLA
movf DIGITO,W ;Guarda digito en acumuladoraddwf PCL,F ;Suma al contador de programa el digitoDT 0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X67
;*******************************************************************************ORG 0x1F00bcf PCLATH,4bcf PCLATH,3 ;Selecciona la pgina 0goto INICIO ;Salto a la direccin de INICIO del programa
;*******************************************************************************END
Curso microcontroladoresPAGS 29/4/03 10:38 Pgina 59