Vous êtes sur la page 1sur 26

+

ESCUELA POLITECNICA NACIONAL


AGOSTO-DICIEMBRE
2013

MICROPROCESADORES



Nombre: -Csar Gonzalo Viracocha Garca
-Roberto Duran Fecha:
Paralelo: CET2

Tema: Timers.

LABORATORIO DE MICROPROCESADORES

INFORME #10

TITULO: TIMERS

OBJETIVO: Utilizar el TMR0 del PIC 16F870 programado con lenguaje Assembly, para medir
intervalos de tiempo que deben durar ciertos eventos que se requieren sean producidos por el
microcontrolador.

MARCO TERICO:
LOS PIC16F87X
Forman una subfamilia de microcontroladores PIC de gama media de 8 bits, fabricados por Microchip
Technology Inc..
Cuentan con memoria de programa de tipo EEPROM Flash mejorada, lo que permite programarlos
fcilmente usando un dispositivo programador de PIC. Esta caracterstica facilita sustancialmente el
diseo de proyectos, minimizando el tiempo empleado en programar los microcontroladores (C).
Esta subfamilia consta de los siguientes modelos que varan de acuerdo a prestaciones, cantidad de
terminales y encapsulados:








TRABAJO PRCTICO

CONTADOR

Presente el circuito elaborado en el simulador PROTEUS.


Presente los archivos xx.C y xx.HEX generados en el proceso de programacin.
ARCHIVO .HEX
:020000040000FA
:020000000528D1
:06000A008316383081006E
:0E0010000030860083128101010886000C2852
:02400E00F13F80
:00000001FF

ARCHIVO .ASM
LIST P=16F870 ;directiva que define el procesador
#INCLUDE <P16F870.INC> ;definicin de variables especficas del
procesador

__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC ;Configura el funcionamiento; del
microcontrolador


ORG 0x0 ;vector de reset del procesador
GOTO INICIO
ORG 0X5

INICIO BSF STATUS,RP0 ; vamos al banco 1 de memoria
MOVLW 0X38 ;se asigna el prescalrer al WDT y se selecciona
;RA4 como entrada de reloj externo
MOVWF OPTION_REG ;se configura el Registro OPTION
MOVLW 0X0
MOVWF TRISB ;se configura el prtico B como salida de datos
BCF STATUS,RP0 ;se regresa al banco 0 de memoria
CLRF TMR0 ;se encera el TMR0
OTRO MOVF TMR0, 0 ;el contenido del TMR0 se pone en W
MOVWF PORTB ;el contenido de W se enva al prtico B
GOTO OTRO

END ;final del programa

ARCHIVO.LST
MPASM 5.43 CONTADOR.ASM 11-26-2013 0:01:49 PAGE 1
LOC OBJECT CODE LINE SOURCE TEXT
VALUE
Warning[205]: Found directive in column 1. (LIST)
00001 LIST P=16F870 ;directiva que define el
procesador
00002 #INCLUDE <P16F870.INC> ;definicin de
variables especficas del procesa
dor
00001 LIST
00002
00003
;=======================================================
===================
00004 ; MPASM PIC16F870 processor include
00005 ;
00006 ; (c) Copyright 1999-2011 Microchip Technology, All rights
reserved
00007
;=======================================================
===================
00008
00422 LIST
00003
Warning[205]: Found directive in column 1. (__CONFIG)
2007 3FF1 00004 __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
;Configura el funcionamiento; del microcontrolador
00005

0000 00006 ORG 0x0 ;vector de reset del
procesador
0000 2805 00007 GOTO INICIO
00008
0005 00009 ORG 0X5
00010
0005 1683 00011 INICIO BSF STATUS,RP0 ;vamos al
banco 1 de memoria
0006 3038 00012 MOVLW 0X38 ;se asigna el prescales
al WDT y se selecciona
00013 ;RA4 como entrada de reloj
externo
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0007 0081 00014 MOVWF OPTION_REG ;se configura el
Registro OPTION
00015
0008 3000 00016 MOVLW 0X0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0009 0086 00017 MOVWF TRISB ;se configura el prtico
B como salida de datos
000A 1283 00018 BCF STATUS,RP0 ;se regresa al
banco 0 de memoria
000B 0181 00019 CLRF TMR0 ;se encera el TMR0
000C 0801 00020 OTRO MOVF TMR0,0 ;el contenido
del TMR0 se pone en W
00021
000D 0086 00022 MOVWF PORTB ;el contenido de W se
enva al prtico B
000E 280C 00023 GOTO OTRO
00024
00025 END ;final del programa

MPASM 5.43 CONTADOR.ASM 11-26-2013 0:01:49 PAGE 2
SYMBOL TABLE
LABEL VALUE

ADCON0 0000001F
ADCON1 0000009F
ADCS0 00000006
ADCS1 00000007
ADDEN 00000003
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
BRGH 00000002
C 00000000
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCPR1 00000015
CCPR1H 00000016
CCPR1L 00000015
CHS0 00000003
CHS1 00000004
CHS2 00000005
CREN 00000004
CSRC 00000007
DC 00000001
EEADR 0000010D
EEADRH 0000010F
EECON1 0000018C
EECON2 0000018D
EEDATA 0000010C
EEDATH 0000010E
EEIE 00000004
EEIF 00000004
EEPGD 00000007
F 00000001
FERR 00000002
FSR 00000004
GIE 00000007
GO 00000002
GO_DONE 00000002
GO_NOT_DONE 00000002
INDF 00000000
INICIO 00000005
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001

MPASM 5.43 CONTADOR.ASM 11-26-2013 0:01:49 PAGE 3
SYMBOL TABLE
LABEL VALUE
IRP 00000007
NOT_BO 00000000
NOT_BOR 00000000
NOT_DONE 00000002
NOT_PD 00000003
NOT_POR 00000001
NOT_RBPU 00000007
NOT_RC8 00000006
NOT_T1SYNC 00000002
NOT_TO 00000004
NOT_TX8 00000006
OERR 00000001
OPTION_REG 00000081
OTRO 0000000C
PCFG0 00000000
PCFG1 00000001
PCFG2 00000002
PCFG3 00000003
PCL 00000002
PCLATH 0000000A
PCON 0000008E
PEIE 00000006
PIE1 0000008C
PIE2 0000008D
PIR1 0000000C
PIR2 0000000D
PORTA 00000005
PORTB 00000006
PORTC 00000007
PR2 00000092
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RA0 00000000
RA1 00000001
RA2 00000002
RA3 00000003
RA4 00000004
RA5 00000005
RB0 00000000
RB1 00000001
RB2 00000002
RB3 00000003
RB4 00000004
RB5 00000005
RB6 00000006
RB7 00000007
RBIE 00000003
RBIF 00000000
RC0 00000000
RC1 00000001
RC2 00000002
MPASM 5.43 CONTADOR.ASM 11-26-2013 0:01:49 PAGE 4
SYMBOL TABLE
LABEL VALUE

RC3 00000003
RC4 00000004
RC5 00000005
RC6 00000006
RC7 00000007
RC8_9 00000006
RC9 00000006
RCD8 00000000
RCIE 00000005
RCIF 00000005
RCREG 0000001A
RCSTA 00000018
RD 00000000
RP0 00000005
RP1 00000006
RX9 00000006
RX9D 00000000
SPBRG 00000099
SPEN 00000007
SREN 00000005
STATUS 00000003
SYNC 00000004
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
T1CKPS0 00000004
T1CKPS1 00000005
T1CON 00000010
T1INSYNC 00000002
T1OSCEN 00000003
T1SYNC 00000002
T2CKPS0 00000000
T2CKPS1 00000001
T2CON 00000012
TMR0 00000001
TMR0IE 00000005
TMR0IF 00000002
TMR1CS 00000001
TMR1H 0000000F
TMR1IE 00000000
TMR1IF 00000000
TMR1L 0000000E
TMR1ON 00000000
TMR2 00000011
TMR2IE 00000001
TMR2IF 00000001
TMR2ON 00000002
TOUTPS0 00000003
TOUTPS1 00000004
TOUTPS2 00000005
TOUTPS3 00000006
TRISA 00000085
MPASM 5.43 CNTADOR.ASM 11-26-2013 0:01:49 PAGE 5
SYMBOL TABLE
LABEL VALUE
TRISA0 00000000
TRISA1 00000001
TRISA2 00000002
TRISA3 00000003
TRISA4 00000004
TRISA5 00000005
TRISB 00000086
TRISB0 00000000
TRISB1 00000001
TRISB2 00000002
TRISB3 00000003
TRISB4 00000004
TRISB5 00000005
TRISB6 00000006
TRISB7 00000007
TRISC 00000087
TRISC0 00000000
TRISC1 00000001
TRISC2 00000002
TRISC3 00000003
TRISC4 00000004
TRISC5 00000005
TRISC6 00000006
TRISC7 00000007
TRMT 00000001
TX8_9 00000006
TX9 00000006
TX9D 00000000
TXD8 00000000
TXEN 00000005
TXIE 00000004
TXIF 00000004
TXREG 00000019
TXSTA 00000098
W 00000000
WR 00000001
WREN 00000002
WRERR 00000003
Z 00000002
_BODEN_OFF 00003FBF
_BODEN_ON 00003FFF
_BOREN_OFF 00003FBF
_BOREN_ON 00003FFF
_CONFIG 00002007
_CPD_OFF 00003FFF
_CPD_ON 00003EFF
_CP_All 00000FCF
_CP_OFF 00003FFF
_CP_ON 00000FCF
_DEBUG_OFF 00003FFF
_DEBUG_ON 000037FF
_DEVID1 00002006
_FOSC_EXTRC 00003FFF

MPASM 5.43 CONTADOR.ASM 11-26-2013 0:01:49 PAGE 6
SYMBOL TABLE
LABEL VALUE
_FOSC_HS 00003FFE
_FOSC_LP 00003FFC
_FOSC_XT 00003FFD
_HS_OSC 00003FFE
_IDLOC0 00002000
_IDLOC1 00002001
_IDLOC2 00002002
_IDLOC3 00002003
_LP_OSC 00003FFC
_LVP_OFF 00003F7F
_LVP_ON 00003FFF
_PWRTE_OFF 00003FFF
_PWRTE_ON 00003FF7
_RC_OSC 00003FFF
_WDTE_OFF 00003FFB
_WDTE_ON 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_WRT_ALL 00003FFF
_WRT_ENABLE_OFF 00003DFF
_WRT_ENABLE_ON 00003FFF
_WRT_OFF 00003DFF
_XT_OSC 00003FFD
__16F870 00000001
__DEBUG 1

MEMORY USAGE MAP ('X' = Used, '-' = Unused)
0000 : X----XXXXXXXXXX- ---------------- ---------------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------
All other memory blocks unused.

Program Memory Words Used: 11
Program Memory Words Free: 2037


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

Presente el circuito elaborado en el simulador PROTEUS.

ARCHIVO .HEX
:020000040000FA
:020000000528D1
:06000A0087018316C730D8
:1000100081000030870083120C3087001E201E20D4
:100020001E201E200A3087001E20213087001E203F
:100030001E201E20113087001E200C280830A00032
:10004000A130810081090B110B1D2428A00B23284E
:020050000800A6
:02400E00F13F80
:00000001FF
ARCHIVO .ASM
LIST P=16F870 ;directiva que define el procesador
#INCLUDE <P16F870.INC> ;definicin de variables especficas del
procesador
__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC ;Configura el funcionamiento; del
micro controlador

REGIS20 EQU 0X20
ORG 0x0 ;vector de reset del procesador
GOTO INICIO
ORG 0X5

INICIO CLRF PORTC ;se encera el puerto C
BSF STATUS, RP0 ;se cambia al banco 1 de la RAM
MOVLW b'11000111' ;se asigna el divisor de frecuencia al TIMER0
MOVWF OPTION_REG ;se usa una frecuencia f/256 del oscilador interno
MOVLW 0X0 ;se carga W con el nmero 00H
MOVWF TRISC ;se configura el Prtico C como salida de datos
BCF STATUS, RP0 ;se regresa al banco 0 de la RAM
OTRO MOVLW 0X0C ;se pone en W el cdigo para encender la luz verde en sentido N - S
MOVWF PORTC ; se enciende la luz verde en sentido N - S
CALL RETARDO
CALL RETARDO
CALL RETARDO
CALL RETARDO
MOVLW 0X0A ; se pone en W el cdigo para encender la luz amarilla
en sentido N-S
MOVWF PORTC ;se enciende la luz amarilla en sentido N-S
CALL RETARDO
MOVLW 0X21 ;se pone en W el cdigo para encender la luz verde en
sentido E-O
MOVWF PORTC ;se enciende la luz verde en sentido E-O
CALL RETARDO
CALL RETARDO
CALL RETARDO
MOVLW 0X11 ;se pone en W el cdigo para encender la luz amarilla
en sentido E-O
MOVWF PORTC ;se enciende la luz amarilla en sentido E-O
CALL RETARDO
GOTO OTRO ;continua el semforo en su trabajo rutinario

RETARDO MOVLW d'8' ;se carga W con 8
MOVWF REGIS20 ;se lleva el contenido de W a REGIS20
MOVLW d'161' ;carga W con 161
MOVWF TMR0 ;pasa el contenido de W al registro TMR0
COMF TMR0 ;pone en TMR0 el complemento de TMR0

RETARD BCF INTCON,T0IF ;encera el bit T0IF de sobreflujo del registro INTCON
RETARD1 BTFSS INTCON,T0IF ;chequea si aparece el bit de sobreflujo
GOTO RETARD1 ;mantiene la espera por el bit de sobreflujo
DECFSZ REGIS20,1 ;decrementa el contenido de REGIS20
GOTO RETARD ;va a contar una nueva vuelta
RETURN ;termina la subrutina RETARDO
END

ARCHIVO.LST

MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 1

LOC OBJECT CODE LINE SOURCE TEXT
VALUE

Warning[205]: Found directive in column 1. (LIST)
00001 LIST P=16F870 ;directiva que define el procesador
00002 #INCLUDE <P16F870.INC> ;definicin de variables
especficas del procesador
00001 LIST
00002
00003
;=========================================================
=================
00004 ; MPASM PIC16F870 processor include
00005 ;
00006 ; (c) Copyright 1999-2011 Microchip Technology, All rights reserved
00007
;=========================================================
=================
00008
00422 LIST
Warning[205]: Found directive in column 1. (__CONFIG)
2007 3FF1 00003 __CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC
;Configura el funcionamiento; del micro controla
dor
00004
00000020 00005 REGIS20 EQU 0X20
00006
00007

0000 00008 ORG 0x0 ;vector de reset del procesador
0000 2805 00009 GOTO INICIO
00010
0005 00011 ORG 0X5
00012
0005 0187 00013 INICIO CLRF PORTC ;se encera el puerto C
0006 1683 00014 BSF STATUS,RP0 ;se cambia al banco 1 de
la RAM
0007 30C7 00015 MOVLW b'11000111' ;se asigna el divisor de
frecuencia al TIMER0
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
0008 0081 00016 MOVWF OPTION_REG ;se usa una frecuencia f/256
del oscilador interno
0009 3000 00017 MOVLW 0X0 ;se carga W con el nmero 00H
Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct.
000A 0087 00018 MOVWF TRISC ;se configura el Portico C como
salida de datos
000B 1283 00019 BCF STATUS,RP0 ;se regresa al banco 0 de
la RAM
000C 300C 00020 OTRO MOVLW 0X0C ;se pone en W el cdigo para encender
la luz verde en sentido N - S
000D 0087 00021 MOVWF PORTC ;se enciende la luz verde
en sentido N - S
000E 201E 00022 CALL RETARDO
000F 201E 00023 CALL RETARDO
0010 201E 00024 CALL RETARDO
0011 201E 00025 CALL RETARDO
0012 300A 00026 MOVLW 0X0A ;se pone en W el cdigo para
encender la luz amarilla en sentid
o N-S
0013 0087 00027 MOVWF PORTC ;se enciende la luz amarilla en
sentido N-S
0014 201E 00028 CALL RETARDO
0015 3021 00029 MOVLW 0X21 ;se pone en W el cdigo para
encender la luz verde en sentido E-
O
0016 0087 00030 MOVWF PORTC ;se enciende la luz verde en
sentido E-O
0017 201E 00031 CALL RETARDO
0018 201E 00032 CALL RETARDO
0019 201E 00033 CALL RETARDO
001A 3011 00034 MOVLW 0X11 ;se pone en W el cdigo para
encender la luz amarilla en sentido
E-O
001B 0087 00035 MOVWF PORTC ;se enciende la luz amarilla en
sentido E-O
MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 2


LOC OBJECT CODE LINE SOURCE TEXT
VALUE

001C 201E 00036 CALL RETARDO
001D 280C 00037 GOTO OTRO ;continua el semforo en
su trabajo rutinario
00038
001E 3008 00039 RETARDO MOVLW d'8' ;se carga W con 8
001F 00A0 00040 MOVWF REGIS20 ;se lleva el contenido de W a
REGIS20
0020 30A1 00041 MOVLW d'161' ;carga W con 161
0021 0081 00042 MOVWF TMR0 ;pasa el contenido de W al
registro TMR0
Message[305]: Using default destination of 1 (file).
0022 0981 00043 COMF TMR0 ;pone en TMR0 el
complemento de TMR0
00044
0023 110B 00045 RETARD BCF INTCON,T0IF ;encera el bit T0IF de
sobreflujo del registro INTCON
0024 1D0B 00046 RETARD1 BTFSS INTCON,T0IF ;chequea si aparece el bit
de sobreflujo
0025 2824 00047 GOTO RETARD1 ;mantiene la espera por el bit
de sobreflujo
0026 0BA0 00048 DECFSZ REGIS20,1 ;decrementa el contenido
de REGIS20
0027 2823 00049 GOTO RETARD ;va a contar una nueva vuelta
0028 0008 00050 RETURN ;termina la subrutina RETARDO
00051 END

MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 3


SYMBOL TABLE
LABEL VALUE

ADCON0 0000001F
ADCON1 0000009F
ADCS0 00000006
ADCS1 00000007
ADDEN 00000003
ADFM 00000007
ADIE 00000006
ADIF 00000006
ADON 00000000
ADRESH 0000001E
ADRESL 0000009E
BRGH 00000002
C 00000000
CCP1CON 00000017
CCP1IE 00000002
CCP1IF 00000002
CCP1M0 00000000
CCP1M1 00000001
CCP1M2 00000002
CCP1M3 00000003
CCP1X 00000005
CCP1Y 00000004
CCPR1 00000015
CCPR1H 00000016
CCPR1L 00000015
CHS0 00000003
CHS1 00000004
CHS2 00000005
CREN 00000004
CSRC 00000007
DC 00000001
EEADR 0000010D
EEADRH 0000010F
EECON1 0000018C
EECON2 0000018D
EEDATA 0000010C
EEDATH 0000010E
EEIE 00000004
EEIF 00000004
EEPGD 00000007
F 00000001
FERR 00000002
FSR 00000004
GIE 00000007
GO 00000002
GO_DONE 00000002
GO_NOT_DONE 00000002
INDF 00000000
INICIO 00000005
INTCON 0000000B
INTE 00000004
INTEDG 00000006
INTF 00000001

MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 4


SYMBOL TABLE
LABEL VALUE

IRP 00000007
NOT_BO 00000000
NOT_BOR 00000000
NOT_DONE 00000002
NOT_PD 00000003
NOT_POR 00000001
NOT_RBPU 00000007
NOT_RC8 00000006
NOT_T1SYNC 00000002
NOT_TO 00000004
NOT_TX8 00000006
OERR 00000001
OPTION_REG 00000081
OTRO 0000000C
PCFG0 00000000
PCFG1 00000001
PCFG2 00000002
PCFG3 00000003
PCL 00000002
PCLATH 0000000A
PCON 0000008E
PEIE 00000006
PIE1 0000008C
PIE2 0000008D
PIR1 0000000C
PIR2 0000000D
PORTA 00000005
PORTB 00000006
PORTC 00000007
PR2 00000092
PS0 00000000
PS1 00000001
PS2 00000002
PSA 00000003
RA0 00000000
RA1 00000001
RA2 00000002
RA3 00000003
RA4 00000004
RA5 00000005
RB0 00000000
RB1 00000001
RB2 00000002
RB3 00000003
RB4 00000004
RB5 00000005
RB6 00000006
RB7 00000007
RBIE 00000003
RBIF 00000000
RC0 00000000
RC1 00000001
RC2 00000002
MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 5


SYMBOL TABLE
LABEL VALUE

RC3 00000003
RC4 00000004
RC5 00000005
RC6 00000006
RC7 00000007
RC8_9 00000006
RC9 00000006
RCD8 00000000
RCIE 00000005
RCIF 00000005
RCREG 0000001A
RCSTA 00000018
RD 00000000
REGIS20 00000020
RETARD 00000023
RETARD1 00000024
RETARDO 0000001E
RP0 00000005
RP1 00000006
RX9 00000006
RX9D 00000000
SPBRG 00000099
SPEN 00000007
SREN 00000005
STATUS 00000003
SYNC 00000004
T0CS 00000005
T0IE 00000005
T0IF 00000002
T0SE 00000004
T1CKPS0 00000004
T1CKPS1 00000005
T1CON 00000010
T1INSYNC 00000002
T1OSCEN 00000003
T1SYNC 00000002
T2CKPS0 00000000
T2CKPS1 00000001
T2CON 00000012
TMR0 00000001
TMR0IE 00000005
TMR0IF 00000002
TMR1CS 00000001
TMR1H 0000000F
TMR1IE 00000000
TMR1IF 00000000
TMR1L 0000000E
TMR1ON 00000000
TMR2 00000011
TMR2IE 00000001
TMR2IF 00000001
TMR2ON 00000002
TOUTPS0 00000003

MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 6


SYMBOL TABLE
LABEL VALUE

TOUTPS1 00000004
TOUTPS2 00000005
TOUTPS3 00000006
TRISA 00000085
TRISA0 00000000
TRISA1 00000001
TRISA2 00000002
TRISA3 00000003
TRISA4 00000004
TRISA5 00000005
TRISB 00000086
TRISB0 00000000
TRISB1 00000001
TRISB2 00000002
TRISB3 00000003
TRISB4 00000004
TRISB5 00000005
TRISB6 00000006
TRISB7 00000007
TRISC 00000087
TRISC0 00000000
TRISC1 00000001
TRISC2 00000002
TRISC3 00000003
TRISC4 00000004
TRISC5 00000005
TRISC6 00000006
TRISC7 00000007
TRMT 00000001
TX8_9 00000006
TX9 00000006
TX9D 00000000
TXD8 00000000
TXEN 00000005
TXIE 00000004
TXIF 00000004
TXREG 00000019
TXSTA 00000098
W 00000000
WR 00000001
WREN 00000002
WRERR 00000003
Z 00000002
_BODEN_OFF 00003FBF
_BODEN_ON 00003FFF
_BOREN_OFF 00003FBF
_BOREN_ON 00003FFF
_CONFIG 00002007
_CPD_OFF 00003FFF
_CPD_ON 00003EFF
_CP_All 00000FCF
_CP_OFF 00003FFF
_CP_ON 00000FCF

MPASM 5.43 SEMAFORO.ASM 11-28-2013 9:32:48 PAGE 7


SYMBOL TABLE
LABEL VALUE

_DEBUG_OFF 00003FFF
_DEBUG_ON 000037FF
_DEVID1 00002006
_FOSC_EXTRC 00003FFF
_FOSC_HS 00003FFE
_FOSC_LP 00003FFC
_FOSC_XT 00003FFD
_HS_OSC 00003FFE
_IDLOC0 00002000
_IDLOC1 00002001
_IDLOC2 00002002
_IDLOC3 00002003
_LP_OSC 00003FFC
_LVP_OFF 00003F7F
_LVP_ON 00003FFF
_PWRTE_OFF 00003FFF
_PWRTE_ON 00003FF7
_RC_OSC 00003FFF
_WDTE_OFF 00003FFB
_WDTE_ON 00003FFF
_WDT_OFF 00003FFB
_WDT_ON 00003FFF
_WRT_ALL 00003FFF
_WRT_ENABLE_OFF 00003DFF
_WRT_ENABLE_ON 00003FFF
_WRT_OFF 00003DFF
_XT_OSC 00003FFD
__16F870 00000001
__DEBUG 1


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

0000 : X----XXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXX------- ----------------
2000 : -------X-------- ---------------- ---------------- ----------------

All other memory blocks unused.

Program Memory Words Used: 37
Program Memory Words Free: 2011


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

CONCLUSIONES DE CESAR VIRACOCHA.

I. EL bit TOCS es muy importante este se encuentra en el OPTION_REG que sirve para
seleccionar los pulsos internos (0) Fosc/4, y para que se den pulsos externos (1) por
medio del pin RA4/TOCKI.

II. El registro INTCON tiene la funcin principal de controlar las interrupciones. Est
ubicado en la localidad OBH de la RAM; El TOIF se encuentra en el BIT2 que es la
bandera de TMR0 que indica desbordamiento.

III. En el pin 6 se encuentra el RA4/TOCKI que sirve para ingresar una frecuencia externa
para el temporizador TMR0.


IV. A menudo al utilizar un microcontrolador nos encontramos con la necesidad de contar
generar eventos cada cierto tiempo, por lo que el microcontrolador tiene circuitos
internos para ese uso.

V. PS2, PS1, PS0 sirven como divisor de frecuencia, y as se den las funciones de retardo.

VI. Sabemos que, la bandera T0IF del registro I NTCON (bit2) que se pone a 1 siempre
que hay un desborde en el Registro TMR0 es decir cuando pasa de 255 a 0. Esta
bandera puede servir nuestros intereses ya que una vez producido el desborde el bit
T0IF permanece en "1" y es necesario que lo pongamos a "0".

CONCLUSIONES DE ROBERTO DURN:
I. El timer0 funciona como un temporizador o contador, segn la procedencia de la
seal que recibe.

II. El Timer0, usado como temporizador, puede contar perodos de tiempo exactos,
acumulndolos en un registro auxiliar, cada vez que ocurra un pulso de entrada
podemos consultar el registro auxiliar y comparar el incremento acumulado desde el
anterior pulso. Conocidos los perodos, podemos calcular el tiempo transcurrido.

III. Algo muy importante para tomar en cuenta es que el TMR0 cuenta exclusivamente de
forma ascendente, nunca descendente. Si el TMR0 se carga con un valor, este
comenzar a contar desde el valor cargado hasta que se desborda(cuando pasa a
00H)

IV. Para hacer una temporizacin con el registro TMR0,el tiempo empleado en una
temporizacin se puede calcular a partir de un ciclo de instruccin, es decir, si usamos
un XT de 4 MHz, 1 instruccin por cada microsegundo, necesitaremos el valor del
divisor de frecuencia (el que se selecciona con los bit's PS2, PS1 y PS0) y tambin el
complemento del valor cargado en TMR0 (es decir 255 - TMR0),

V. Un punto importante a recordar es que, debemos cargar el TMR0 con el valor
apropiado para conseguir el retardo deseado.


Bibliografa: PDF de Laboratorio de micros; cuaderno de microprocesadores.

WEB: http://www.hispavila.com/3ds/chipspic/tmr0.html

http://www.slideshare.net/madbax/timer0

Vous aimerez peut-être aussi