Escolar Documentos
Profissional Documentos
Cultura Documentos
01 de SEP de 2010
1.
PROBLEMA
Disear un decodificador de binario a decimal de 0-15 utilizando el TMR0 como temporizador. 2. OBJETIVOS
OPTION. Cada vez que llega al valor FF, vuelve a 00 generando una interrupcin, si se ha autorizado, y contina su ciclo indefinidamente.
3.2. REGISTRO INTCON Cada bit del registro INTCON tiene un significado concreto que se muestra en la siguiente tabla:
GIE EEIE T0IE INTE RBIE T0IF INTF RBIF bit 7 bit 6 bit 5 bit 4 bit 3 bit 2 bit 1 bit 0
2.1. Objetivo General Disear un decodificador de binario a decimal utilizando el microcontrolador PIC16F84A. 2.2. Objetivos Especficos Aplicar y afianzar los conocimientos obtenidos en clase sobre el lenguaje de programacin Assembler. Utilizar el TMR0 del microcontrolador para realizar un retardo o temporizacin. 3. MARCO TERICO [ 1 ]
3.1. REGISTRO TMR0 El registro TMR0 (Timer 0) almacena el valor del contador TMR0. Las opciones que controlan este contador residen en el registro OPTION. El registro TMR0 se incrementa en una unidad con cada impulso de reloj seleccionado mediante el registro
Bit 5, T0IE: Habilitacin de la interrupcin del temporizador por desbordamiento (Timer 0 Interrupt Enable).
Informe practica de laboratorio decodificador binario a decimal Ing. Oscar Mauricio Galvis L.
01 de SEP de 2010
o 1:
Autoriza las interrupciones debidas al desbordamiento del temporizador. o 0: Interrupcin del temporizador deshabilita de manera que cuando se produzca el flag correspondiente permanecer inactivo. Bit 4, INTE: Habilitacin de la entrada de interrupcin externa (Interrupt Enable) por patilla RB0/INT. o 1: Autoriza las interrupciones provocadas RB0/INT del puerto B. o 0: Interrupcin externa deshabilita de manera que cuando se produzca una interrupcin externa el flag correspondiente permanecer inactivo. Bit 3, RBIE: Habilitacin de las interrupciones del puerto B (RB Interrupt Enable).
o 1: Autoriza las interrupciones provocadas por un
Bit 7, /RBPU (RB Pull Up). Conexin de las resistencias de polarizacin del Puerto B. Se conectan todas cuando el puerto B actua como entrada.
o 1: Todas las resistencias son desconectadas. o 0: Las resistencias se activan de forma
individual. Bit 6, INTDEG (INTerrupt EDGe). Selecciona el tipo de flanco para la interrupcin externa. Este bit indica el tipo de flanco de la seal externa que ha de provocar una interrupcin en la patilla RB0/INT.
o 1: La interrupcin es producida por el flanco
cambio de estado de las lneas RB4 a RB7 del puerto B. o 0: Interrupcin del puerto B deshabilitada. Bit 2 (flag), T0IF: Bit desbordamiento del TMR0. de interrupcin de
ascendente o de subida.
o 0: La interrupcin es producida por el flanco
descendente o de bajada. Bit 5, T0CS (Timer 0 Signal Source). Seleccin de la fuente de reloj para el TMR0.
o 1: TMR0 se usa en modo contador de los pulsos
Bit 1 (flag), INTF: Bit de interrupcin de la Entrada de Interrupcin INT (patilla RB0/INT). o 1: La entrada de interrupcin se ha activado (patilla RBO/INT del puerto B). Se borra por software. o 0: No hay interrupcin externa. Bit 0 (flag), RBIF: Bit de interrupcin del puerto B.
o 1: Cambio de estado en una de las lneas de RB4
uso de los pulsos de reloj internos (Fosc/4). Bit 4, T0SE (Timer 0 Signal Edge). Tipo de flanco activo de T0CKI (patilla RA4/T0CKI).
o 1 = El TMR0 se incrementa con el flanco
a RB7 del puerto B. Se borra por software. o 0: Ninguna lnea de RB4 a RB7 del puerto B ha cambiado. 3.3. REGISTRO OPTION El registro OPTION (o registro de opciones) se emplea para programar las opciones del temporizador TMR0, el tipo de flanco con el que se detecta una interrupcin y la activacin de las resistencias de polarizacin del puerto B. Ocupa la posicin 81h de la pgina 1 del banco de registros. Debe escribirse usando
-2-
ascendente. Bit 3, PSA (PreScaler Assignement). Se usa para la asignacin del divisor de frecuencias o Prescaler.
o 1 = El divisor de frecuencia se asigna al WDT. o 0 = El divisor de frecuencia se asigna a TMR0.
Bits 0, 1 y 2, PS0, PS1 y PS2 (Prescaler Rate Select Bits). Configura la tasa del valor del divisor de frecuencia o prescaler. Difiere dependiendo que se haya asignado al TMR0 o al WDT.
Informe practica de laboratorio decodificador binario a decimal Ing. Oscar Mauricio Galvis L.
01 de SEP de 2010
PS2 0 0 0 0 1 1 1 1
PS1 0 0 1 1 0 0 1 1
PS0 0 1 0 1 0 1 0 1
Divisor TMR0 1:2 1:4 1:8 1:16 1:32 1:64 1:128 1:256
; ; ; ; ; ; ; ;
RB7 ---> g RB6 ---> f RB5 ---> a RB4 ---> b RB3 ---> D2 RB2 ---> c RB1 ---> d RB0 ---> e
Controla el display2
RB0 el LSB
LIST
<P16F84A.INC>
4.
SOLUCIN
CBLOCK ENDC
Para la realizacin del decodificador de binario a decimal se program en assembler el PIC16F84A, utilizando el TMR0 para generar los retardos que permiten mostrar el nmero en los dos displays. Los materiales que se utilizaron para el montaje del decodificador de binario a decimal fueron: 1 PIC16F84A 2 Displays de nodo comn 1 Dipswich 2 Transistores 2N2222A, entre otros. 4.1. DISEO
ORG 00H BSF STATUS,RP0 BCF STATUS,RP1 MOVLW B'11110' MOVWF TRISA MOVLW B'00000000' MOVWF TRISB MOVLW B'11000111' MOVWF OPTION_REG ;Los bits 0,1 y 2 corresponden al divisor de frecuencia, en este ;caso 256 BCF STATUS,RP0 CLRF PORTB INI MOVF MOVWF RRF ANDLW MOVWF MOVLW SUBWF PORTA,W NUM NUM,W D'15' ;NO CAMBIA NUM D'10' NUM,W ; W = NUM - 10
Lista de asignaciones
Smbolo Relativo LSB MSB D1 SEG E SEG D SEG C D2 SEG B SEG A SEG F SEG G Entradas Smbolo Absoluto RA1 RA2 RA3 RA4 Salidas RA0 RB0 RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIN 18 1 2 3 17 6 7 8 9 10 11 12 13
; Si C es 1 el resultado es positivo y si es 0 es negativo. BTFSS STATUS,C GOTO MENOR ;Como el nmero es mayor a 9, se coloca 1 en el display MOVLW MOVWF BSF CALL MOVLW SUBWF GOTO ; NUM<10 MENOR MOVLW MOVWF BSF CALL MOVF CALL MOVWF BCF CALL B'11101011' ;UNO PORTB PORTA,0 DELAY D'10' ; NUM-10 NUM,W $+6
Cdigo en Assembler
;Las entradas son los pines RA1 a RA4, y RA0 es una salida que controla el display 1 ;Las salidas al display son en el puerto B, menos RB3 que controla el display 2 ; RA0 ---> D1 Controla el display1
;CERO
-3-
Informe practica de laboratorio decodificador binario a decimal Ing. Oscar Mauricio Galvis L.
01 de SEP de 2010
GOTO TABLA ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
INI PCL,1 B'10001000' B'11101011' B'01001100' B'01001001' B'00101011' B'00011001' B'00011000' B'11001011' B'00001000' B'00001001'
CONCLUSIONES
;0 ;1 ;2 ;3 ;4 ;5 ;6 ;7 ;8 ;9
del
Siempre en el momento de calcular el tiempo de retardo se debe tener en cuenta la frecuencia de oscilacin y el divisor de frecuencia del TMR0 BIBLIOGRAFA
[1]
;T=1us*(255-TMR0)*Divisor de frecuencia DELAY CLRF MOVLW MOVWF BTFSS GOTO RETURN END INTCON D'224' TMR0 INTCON,2 $-1
http://perso.wanadoo.es/pictob/micropic16f84_2.htm#r egistros_del_pic16f84a
SIMULACIN
DECODIFICADOR DE BINARIO A DECIMAL DE 0-15
VCC
C1
22pF
U1 C2
22pF VCC 16 15 4 OSC1/CLKIN OSC2/CLKOUT MCLR RA0 RA1 RA2 RA3 RA4/T0CKI RB0/INT RB1 RB2 RB3 RB4 RB5 RB6 RB7 PIC16F84A 17 18 1 2 3 6 7 8 9 10 11 12 13
8 7 6 5
OFF
ON
1 2 3 4
D1
R 1k
R1
10k
e d c D2 b a f g VCC
Q1
D1 2N2222 D2
Q2
2N2222
a b c d e f g
a b c d e f g
-4-
Informe practica de laboratorio decodificador binario a decimal Ing. Oscar Mauricio Galvis L.
01 de SEP de 2010
LIST P=16F84A INCLUDE <P16F84A.INC> CBLOCK 0X20 NUM ENDC ORG 00H BSF BCF MOVLW MOVWF MOVLW MOVWF MOVLW MOVWF BCF CLRF STATUS,RP0 STATUS,RP1 B'11110' TRISA B'00000000' TRISB B'11000111' OPTION_REG STATUS,RP0 PORTB
RETURN
TABLA
BTFSS STATUS,C
SI
NO
ADDWF RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW RETLW
PCL,1 B'10001000' B'11101011' B'01001100' B'01001001' B'00101011' B'00011001' B'00011000' B'11001011' B'00001000' B'00001001'
DELAY
MOVF
NUM,W
SI RETURN
-5-