11/13/2007
1
PRÁCTICA 0
CIRCUITO BASE
SISTEMA MÍNIMO BASADO EN EL PIC16F84
11/13/2007
2
PRÁCTICA 1_1
COMPUERTA “AND” DE TRES
ENTRADAS
Hardware
X0
X1
X2
Y
11/13/2007
3
Comportamiento esperado
INICIO
Configurar Puerto A
como entradas y
Puerto B como salidas
RB0 1
RB0 0
RA0 = 1
RA1 = 1
RA2 = 1
NO
NO
NO
SI
SI
SI
Instrucciones
• movlw k– Mueve la constante k al registro W
• movwf f– Mueve el contenido del registro W a la localidad f de RAM Interna
• bsf f, n– Pone en alto (1 lógico) el bit n de la localidad f (f es de 8 bits)
• bcf f, n– Pone en bajo (0 lógico) el bit n de la localidad f (f es de 8 bits)
• btfss f, n– Evalúa al bit n de la localidad f, si esta en alto brinca a la siguiente
instrucción
• goto <etiqueta>– Salto incondicional
11/13/2007
4
Programa (Parte 1); AND3.ASM – Programa que hace que el PIC se comporte como una compuerta
; AND de 3 entradas
include <p16f84.inc> ; Se incluyen definiciones
; Primer programa utilizando el PIC16F84
LIST P = 16F84 ; Indica al ensamblador el dispositivo a utilizar
ORG 0 ; Indica la dirección de inicio del programa
; Configuración del Puerto A como entrada y el puerto B como salida
bsf STATUS, 5 ; Pone en alto el bit 5 del registro ESTADO
movlw 0xFF ; en el registro W se coloca FF (hex)
movwf PORTA ; El puerto A se configura como entrada
movlw 0x00 ; en el registro W se coloca 00 (hex)
movwf PORTB ; El puerto B se configura como salida
bcf STATUS, 5
Programa (Parte 2)
; Inicia el Lazo
lazo: btfss PORTA, 0 ; Evalúa el bit 0 del puerto A, salta si esta en alto
goto bajo
btfss PORTA, 1 ; Evalúa el bit 1 del puerto A, salta si esta en alto
goto bajo
btfss PORTA, 2 ; Evalúa el bit 2 del puerto A, salta si esta en alto
goto bajo
bsf PORTB, 0
goto lazo
bajo: bcf PORTB, 0 ; Si alguno de los tres bits está en bajo, este
goto lazo ; segmento de código es alcanzado
end
11/13/2007
5
PRÁCTICA 1_2
Suma 2 a un puerto de entrada
Hardware
PIC16F84
PORTA PORTBDato Dato + 2
11/13/2007
6
Comportamiento esperado
Configurar al puerto A como
Entradas y al Puerto B como
Salidas
W Puerto A
W W + 2
Puerto B W
Inicio
Mas Instrucciones
• movf f, d
– Mueve el contenido de f a donde indique d, si d = 0,
el destino es W y si d = 1 el destino será el mismo f
• addlw k
– Suma el valor de la constante k con el registro W,
dejando el resultado en W
• movwf f
– Mueve el contenido de W a la localidad f de RAM
11/13/2007
7
Programa (Parte 1); SUMA2.ASM – Programa que suma 2 al puerto A y muestra el resultado en el
; puerto B
include <p16f84.inc> ; Se incluyen definiciones
; Segundo programa utilizando el PIC16F84
LIST P = 16F84 ; Indica al ensamblador el dispositivo a utilizar
ORG 0 ; Indica la dirección de inicio del programa
; Configuración del Puerto A como entrada y el puerto B como salida
bsf STATUS, 5 ; Pone en alto el bit 5 del registro ESTADO
movlw 0xFF ; en el registro W se coloca FF (hex)
movwf PORTA ; El puerto A se configura como entrada
movlw 0x00 ; en el registro W se coloca 00 (hex)
movwf PORTB ; El puerto B se configura como salida
bcf STATUS, 5
Programa (Parte 2)
; Lazo infinito
LAZO: MOVF PORTA, W
ADDLW 2
MOVWF PORTB
GOTO LAZO
END
11/13/2007
8
PRÁCTICA 2_1
COMPARADOR DE 4 BITS
HARDWARE
Comparador
4 bits
Número A
Número B
A > B
A = B
A < B
Comparador
4 bits
Número A
Número B
A > B
A = B
A < B
ENTRADA/SALIDA REFERENCIA UBICACIÓN
NUMERO A NUMA PUERTO B [0 – 3]
NUMERO B NUMB PUERTO B [4 – 7]
A > B AMAYB PUERTO A [0]
A = B AIGB PUERTO A [1]
A < B AMENB PUERTO A [2]
11/13/2007
9
Comportamiento
INICIO
Configurar:
Puerto B : entradas
Puerto A : Salidas
NumA <- PortB[0-3]
NumB <- PortB[4-7]
NumA > NumB
NumA = NumB
AmayB <- 1
AigB <- 0
AmenB <- 0
AmayB <- 0
AigB <- 1
AmenB <- 0
AmayB <- 0
AigB <- 0
AmenB <- 1
include <p16f84.inc> ; Se incluyen definiciones
NUMA EQU 0x0C ; Referencia a memoria
NUMB EQU 0x0D
AMAYB EQU 0
AIGB EQU 1
AMENB EQU 2
; Comparador de 4 bits
LIST P = 16F84 ; Indica al ensamblador el dispositivo a utilizar
ORG 0 ; Indica la dirección de inicio del programa
; Configuración del Puerto B como entradas y el puerto A como salidas
bsf STATUS, 5 ; Pone en alto el bit 5 del registro ESTADO
movlw 0x00
movwf PORTA ; El puerto A se configura como salidas
movlw 0xFF
movwf PORTB ; El puerto B se configura como entradas
bcf STATUS, 5
11/13/2007
10
LAZO: MOVF PORTB, W ; Separa los números de 4 bits
ANDLW 0X0F
MOVWF NUMA
MOVF PORTB, W
ANDLW 0XF0
MOVWF NUMB
SWAPF NUMB, F
MOVF NUMB, W ; Resta para comparar
SUBWF NUMA, W
BTFSC STATUS, Z
GOTO IGUAL ; Bandera Z en alto, si son iguales
BTFSC STATUS, C
GOTO MAYOR ; Acarreo en alto si A es mayor
MENOR:
BCF PORTA, AMAYB
BCF PORTA, AIGB
BSF PORTA, AMENB
GOTO LAZO
MAYOR:
BSF PORTA, AMAYB
BCF PORTA, AIGB
BCF PORTA, AMENB
GOTO LAZO
IGUAL:
BCF PORTA, AMAYB
BSF PORTA, AIGB
BCF PORTA, AMENB
GOTO LAZO
end
PRÁCTICA 2_2
DECODIFICADOR DE BINARIO
A 7 SEGEMENTOS
11/13/2007
11
HARDWARE
PIC16F84
RA0
RA1
RA2
RA3
Entrada
Binaria
RB0
RB1
. . .
RB6
PIC16F84
RA0
RA1
RA2
RA3
Entrada
Binaria
RB0
RB1
. . .
RB6
COMPORTAMIENTO
ENTRADA
0000
0001
0010
SALIDA ENTRADA
0011
0100
0101
SALIDA
11/13/2007
12
COMPORTAMIENTO
ENTRADA
0110
0111
1000
SALIDA ENTRADA
1001
1010
1011
SALIDA
COMPORTAMIENTO
ENTRADA
1100
1101
1110
SALIDA ENTRADA
1111
SALIDA
11/13/2007
13
Relación de salidas
Num dp g f e d c b a HEX
0 1 1 0 0 0 0 0 0 C0
1 1 1 1 1 1 1 0 0 FC
2 1 0 1 0 0 1 0 0 A4
3 1 0 1 1 0 0 0 0 B0
4 1 0 0 1 1 0 0 1 99
5 1 0 0 1 0 0 1 0 92
6 1 0 0 0 0 0 1 0 82
7 1 1 1 1 1 0 0 0 F8
8 1 0 0 0 0 0 0 0 80
9 1 0 0 1 1 0 0 0 98
A 1 0 0 0 1 0 0 0 88
B 1 0 0 0 0 0 1 1 83
C 1 1 0 0 0 1 1 0 C6
E 1 0 0 0 0 1 1 0 86
F 1 0 0 0 1 1 1 0 8E
a
b
cd
e
fg
dp
dp g f e d C b a
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
Programa
El lazo principal :
Lazo: MOVF PORTA, W
CALL DECODIFICA
MOVWF PORTB
GOTO Lazo
11/13/2007
14
Función de Decodificación
DECODIFICA: ADDWF PCL, F
RETLW 0xC0
RETLW 0xFC
RETLW 0xA4
RETLW 0xB0
RETLW 0x99
RETLW 0x92
RETLW 0x82
RETLW 0xF8
RETLW 0x80
RETLW 0x98
RETLW 0x88
RETLW 0x83
RETLW 0xC6
RETLW 0x86
RETLW 0x8E
PRÁCTICA 3
MANEJO DINAMICO DE
DESPLEGADORES
11/13/2007
15
HARDWAREPIC16F84
RB0
. . .
RB3UP
DOWN
RST
RA0
RA1
RA2RB4
. . .
RB7
BCD
a
7 seg.
Arreglo de transistores
PNP
PIC16F84
RB0
. . .
RB3UP
DOWN
RST
RA0
RA1
RA2RB4
. . .
RB7
BCD
a
7 seg.
Arreglo de transistores
PNP
• Desplegar 0 1 2 3 , en los desplegadores de 7 segmentos.
• Los segmentos de los 4 desplegadores comparten un bus.
• Sólo el desplegador habilitado mostrará la información.
Uso de transistores
A
B
C
D
E
FG
. . ..
Vcc
470
820
Delmicro
La habilitación se realiza
colocando un 0 lógico en la
terminal del puerto
11/13/2007
16
Comportamiento
PUERTO B ACCIÓN
1110 0000 Despliega 0 en el primer visualizador
1101 0001 Despliega 1 en el segundo visualizador
1011 0010 Despliega 2 en el tercer visualizador
0111 0011 Despliega 3 en el cuarto visualizador
Al recorrer los visualizadores a una frecuencia
rápida, da la apariencia de que todos están
encendidos al mismo tiempo.
PRÁCTICA 4
CONTADOR 0 – 9999
ASCENDENTE - DESCENDENTE
11/13/2007
17
HARDWARE
PIC16F84
RB0
. . .
RB3UP
DOWN
RST
RA0
RA1
RA2RB4
. . .
RB7
BCD
a
7 seg.
Arreglo de transistores
PNP
PIC16F84
RB0
. . .
RB3UP
DOWN
RST
RA0
RA1
RA2RB4
. . .
RB7
BCD
a
7 seg.
Arreglo de transistores
PNP
Se agregan botones al Hardware anterior
PERIFERICOS
Los botones proporcionan un 1 lógico si no
se han presionado
11/13/2007
18
COMPORTAMIENTO
• Al principio se desplegará el número 0000
• Al presionar el botón UP el número debe
incrementarse en 1
• Al presionar el botón DOWN el número
debe decrementarse en 1
• Deben meterse retardos para evitar
crecimientos abruptos
• Al presionar RST la cuenta se va a 0000
PRÁCTICA 5
PRUEBA DE INTERRUPCIONES
11/13/2007
19
COMPORTAMIENTO
• Mismo Hardware que el anterior
• Que la cuenta se incremente
automáticamente cada segundo, se
sugiere usar la interrupción por Timer
PROYECTO FINAL
RELOJ DE TIEMPO REAL
11/13/2007
20
COMPORTAMIENTO
• Mismo Hardware que en la práctica
anterior.
• La cuenta de segundos se lleva en forma
interna.
• Externamente se muestra Hora y Minutos.
• Los botones permiten configurar la hora.
Top Related