Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Laboratorio de Microprocesadores
INFORME
Práctica No: 7
Tema: Control de tiempos en bajo nivel
Realizado por:
CPR3
Estudiante: Kevin Carrillo, Boris Barros Grupo:
(Espacio Reservado)
Fecha de entrega: 2019 / 06 / 26 f. _________________________
Año mes día Recibido por:
Sanción: ____________________________________________________
PERÍODO 2019 – A
ESCUELA POLITÉCNICA NACIONAL ESFOT
2. Marco teórico
Display 7 Segmentos ánodo y cátodo común
El display cátodo común es aquel que tiene el pin común conectado a los negativos de los Leds
(cátodo). Esto significa que este tipo de display se «controla» con ‘1’ s lógicos o con voltaje positivo.
El arreglo para un display de cátodo común seria el siguiente: [1]
El display ánodo común es aquel cuyos ánodos están conectados al mismo punto. Este tipo de
display es controlado por ceros, es decir que el microcontrolador o MCU, FPGA o microprocesador,
le asigna a cada segmento un cero lógico (también llamada tierra digital). El esquema o diagrama del
display de 7 segmentos en ánodo común es: [1]
TEMPORIZADOR Y CONTADOR
MANEJO DE TEMPORIZACIONES
En la mayor parte de los programas, resulta necesario controlar el tiempo que tardan en ejecutarse
algunas acciones o bien establecer una duración determinada para un estado del sistema digital que
se quiere realizar. [2]
Registro OPTION:
Contiene varios bits de control para configurar el divisor de frecuencia o preescalador del
TMR0/WDT, la interrupción externa INT, TMR0 y los pull-ups para el PORTB. [3]
La combinación de los BIT's; PS2, PS1 y PS0 (0, 1 y 2) determinan el valor del divisor de frecuencia, el
cual se puede ver en la siguiente tabla. [3]
3. Desarrollo
1. Elaborar un programa utilizando lenguaje de bajo nivel (MPLAB), que cumpla con los siguientes
requerimientos:
Leer el pin 1 del puerto A mediante un dipswitch, si se encuentra un 1 lógico en este pin se
deberán mostrar en el pin RC4 las señales de un oscilador de 4 Hz. Si se encuentra un 0
lógico en el pin 1 del puerto A se deberán mostrar en el pin RC5 las señales de un oscilador
de 12 Hz., hasta que el estado del pin 1 del puerto A cambie. Mientras un led este encendido
el otro debe permanecer apagado.
Código implementado.
LIST P=16F870
INCLUDE "P16F870.INC"
AUX1 EQU 0x20
AUX2 EQU 0X21
ORG 0X00
GOTO INICIO
INICIO BSF STATUS,RP0
BCF STATUS,RP1
MOVLW B'11010001'
MOVWF OPTION_REG
MOVLW .6
MOVWF ADCON1
MOVLW 0X3F
MOVWF TRISA
MOVLW B'11001111'
MOVWF TRISC
BCF STATUS,RP0
CLRF PORTA
PULSO BTFSS PORTA,4
GOTO RET2
GOTO RET1
RET1 BCF PORTC,5
CLRF AUX1
AB MOVLW .83
MOVWF TMR0
BB BTFSS INTCON,2
GOTO BB
BCF INTCON,2
INCF AUX1,1
MOVLW .250
XORWF AUX1,0
BTFSS STATUS,2
GOTO AB
COMF PORTC
GOTO PULSO
RET2 BCF PORTC,4
CLRF AUX2
BD MOVLW .11
MOVWF TMR0
AD BTFSS INTCON,2
GOTO AD
BCF INTCON,2
INCF AUX2,1
MOVLW .255
XORWF AUX2,0
BTFSS STATUS,2
GOTO BD
COMF PORTC
GOTO PULSO
END
Simulación en Proteus
C17
22pF
X22 U3
CRYSTAL
C26 9 21
OSC1/CLKIN RB0/INT
10 22
OSC2/CLKOUT RB1
1 23
MCLR/Vpp/THV RB2
R16(1) 22pF 24
R16 R26 2
RB3/PGM
25
RA0/AN0 RB4
3 26
10k 100 RA1/AN1 RB5
4 27
RA2/AN2/VREF- RB6/PGC
5 28
RA3/AN3/VREF+ RB7/PGD
6
0 7
RA4/T0CKI
RA5/AN4 RC0/T1OSO/T1CKI
11
12
RC1/T1OSI
13
RC2/CCP1
14 R1
RC3
15 R2
RC4
16 330
RC5
17 330
RC6/TX/CK
18
RC7/RX/DT
D1
PIC16F870 LED-GREEN
D2
LED-BLUE
Código implementado.
LIST P=16F870
INCLUDE "P16F870.INC"
CONT EQU 0x20
AUX2 EQU 0X21
ORG 0X00
GOTO INICIO
RETARDO
D1 MOVLW .45
MOVWF TMR0
R1 BTFSS INTCON,2
GOTO R1
BCF INTCON,2
INCF AUX2,F
MOVLW .250
XORWF AUX2,0
BTFSS STATUS,2
GOTO D1
TABLA
ADDWF PCL,1
RETLW 0XC0 ;0
RETLW 0X92 ;5
RETLW 0X82 ;6
RETLW 0XF8 ;7
RETLW 0X80 ;8
RETLW 0X90 ;9
RETLW 0X88 ;A
RETLW 0X83 ;b
RETLW 0XC6 ;C
RETLW 0XA1 ;d
RETLW 0X86 ;E
XORLW .5
BTFSC STATUS,Z
GOTO ENCE
BCF PORTA,0
GOTO RETORNO
ENCE BSF PORTA,0
GOTO RETORNO
END
Simulación en Proteus
C17
22pF
X22 (COM)
CRYSTAL
C26
U3 RN3
9 21 1 16
22pF OSC1/CLKIN RB0/INT
R16(1) 10 22 2 15
R16 R26 1
OSC2/CLKOUT RB1
23 3 14
MCLR/Vpp/THV RB2
24 4 13
10k 100 RB3/PGM
2 25 5 12
RA0/AN0 RB4
3 26 6 11
RA1/AN1 RB5
4 27 7 10
RA2/AN2/VREF- RB6/PGC
5 28 8 9
0 6
RA3/AN3/VREF+ RB7/PGD
R1 7
RA4/T0CKI
11 330
330 RA5/AN4 RC0/T1OSO/T1CKI
12
RC1/T1OSI
13
RC2/CCP1
14
RC3
15
RC4
16
RC5
17
D1 RC6/TX/CK
18
LED-BLUE RC7/RX/DT
PIC16F870
4. Análisis de resultados
Se procedió a calcular los retardos de los TMR0 para el tiempo de las luces leds de acuerdo a
las frecuencias establecidas en el preparatorio.
Para este caso se debe utilizar dos variables para los dos tiempos que se va a realizar los
retardos.
Se debe modificar el OPTION_REG para utilizar el preescalador y ver si se quiere utilizar
como contador o temporizador.
Se testeó el registro INTCON para saber si se procedió al desbordamiento del TMR0.
5. Cuestionario
1.-Explicar el funcionamiento de timer0 como contador
Para el PIC16F877A el registro TMR0 del timer0 PIC está formado por 8 bits por lo que se puede
contar desde 0 hasta 255, al utilizar timer0 PIC como contador este no aumentará sus valores o su
cuenta con cada ciclo de instrucción, en este caso el timer0 estará conectado al pin T0CKI por donde
se le hará llegar una señal, la cual al cambiar de estado hará que el timer0 PIC se incremente en una
unidad, estos incrementos en su cuenta pueden ser por cada flanco de subida o cada por flanco de
bajada de la señal, el flanco a utilizar se elige por programa. [4]
El registro TMR0 aumentará en una unidad, de esta manera se le puede utilizar como
contador, cuando la señal pase de un alto a un bajo o de 1 a 0 el registro TMR0 no
aumentará su valor o no se incrementará.
La programación del Timer0 PIC como contador se hace mediante el bit5 o el bit T0CS del
registro OPTION_REG. [4]
6. Conclusiones y recomendaciones
Kevin Carrillo
Conclusiones:
Existen dos métodos para realizar un contador, uno es por medio de bucles anidados
donde el programador puede calcular los retardos que se producirán entre los
valores y, el segundo método es por medio de banderas o desbordamientos
configurando el OPTION_REG.
El único pin que permite configurar al PIC para realizar un contador es el pin RA4 del
pórtico A.
La configuración del OPTION_REG permite que al poner en 1L del bit 5 (TOCS) se
configure al PIC para que realice un contador.
La configuración del OPTION_REG permite que al poner la combinación de los bits 0,
1 y 2 (PS2, PS1 Y PS0) se asigne un pre-escalador adecuado a los requerimientos del
programador y pueda funcionar por medio del TMR0 o del WDT, aunque esté último
método permite contar y mostrar un valor por cada pulsación que realice el
operario.
Recomendaciones:
Verificar en el circuito uno que las frecuencias calculadas en el código como los
dispositivos conectados sean de valores iguales ya que si se conectan de diferente
valor mostrarán frecuencias diferentes con un rango de error muy alto.
Colocar adecuadamente la tabla del código de programa de los números
hexadecimales ya que los valores pueden variar si el display es de ánodo o cátodo
común.
Boris Barros:
Conclusiones:
Se debe utilizar el mismo tipo de cristal tanto al simular el circuito y al momento de
realizar los cálculos del TMR0, evitando problemas al momento de visualizar la
frecuencia en un oscilador.
Verificar que las etiquetas que se utiliza en el código ya que si no colocamos bien el
programa no va a reconocer la etiqueta ni a donde quiere que vaya el programa.
Calcular los correctamente los valores del TMR0 ya que en la simulación del proteus
podemos ver algo diferente cuando este se vaya a implementar físicamente.
Recomendaciones:
Se debe verificar el armado del circuito para evitar problemas, conectar todo los
pines que se utilizara y revisar la alimentación y la conexión a tierra.
Revisar el cristal y colocar los capacitores para evitar problemas al simular en tiempo
real.
7. Bibliografía / Referencia
Bibliografía