está la descripción de las diferentes prácticas

Anuncio
11/13/2007
PRÁCTICA 0
CIRCUITO BASE
SISTEMA MÍNIMO BASADO EN EL PIC16F84
1
11/13/2007
PRÁCTICA 1_1
COMPUERTA “AND” DE TRES
ENTRADAS
Hardware
X0
X1
Y
X2
2
11/13/2007
Comportamiento esperado
INICIO
Configurar Puerto A
como entradas y
Puerto B como salidas
NO
RA0 = 1
SI
RB0  0
NO
RB0  1
RA1 = 1
SI
NO
RA2 = 1
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
3
11/13/2007
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
ORG 0
; Indica al ensamblador el dispositivo a utilizar
; Indica la dirección de inicio del programa
; Configuración del Puerto A como entrada y el puerto B como salida
bsf
movlw
movwf
movlw
movwf
bcf
STATUS, 5
0xFF
PORTA
0x00
PORTB
STATUS, 5
; Pone en alto el bit 5 del registro ESTADO
; en el registro W se coloca FF (hex)
; El puerto A se configura como entrada
; en el registro W se coloca 00 (hex)
; El puerto B se configura como salida
Programa (Parte 2)
; Inicia el Lazo
lazo:
alto
btfss
PORTA, 0
; Evalúa el bit 0 del puerto A, salta si esta en
goto
btfss
bajo
PORTA, 1
; Evalúa el bit 1 del puerto A, salta si esta en
goto
btfss
bajo
PORTA, 2
; Evalúa el bit 2 del puerto A, salta si esta en
goto
bsf
goto
bajo
PORTB, 0
lazo
bcf
goto
PORTB, 0
lazo
alto
alto
bajo:
; Si alguno de los tres bits está en bajo, este
; segmento de código es alcanzado
end
4
11/13/2007
PRÁCTICA 1_2
Suma 2 a un puerto de entrada
Hardware
PIC16F84
Dato
PORTA
PORTB
Dato + 2
5
11/13/2007
Comportamiento esperado
Inicio
Configurar al puerto A como
Entradas y al Puerto B como
Salidas
W
Puerto A
W
W+2
Puerto B
W
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
6
11/13/2007
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
ORG 0
; Indica al ensamblador el dispositivo a utilizar
; Indica la dirección de inicio del programa
; Configuración del Puerto A como entrada y el puerto B como salida
bsf
movlw
movwf
movlw
movwf
bcf
STATUS, 5
0xFF
PORTA
0x00
PORTB
STATUS, 5
; Pone en alto el bit 5 del registro ESTADO
; en el registro W se coloca FF (hex)
; El puerto A se configura como entrada
; en el registro W se coloca 00 (hex)
; El puerto B se configura como salida
Programa (Parte 2)
; Lazo infinito
LAZO:
MOVF PORTA, W
ADDLW 2
MOVWF PORTB
GOTO
LAZO
END
7
11/13/2007
PRÁCTICA 2_1
COMPARADOR DE 4 BITS
HARDWARE
A>B
Número A
Comparador
A=B
Número B
4 bits
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]
8
11/13/2007
Comportamiento
INICIO
Configurar:
Puerto B : entradas
Puerto A : Salidas
NumA > NumB
AmayB <- 1
AigB <- 0
AmenB <- 0
NumA = NumB
AmayB <- 0
AigB <- 1
AmenB <- 0
NumA <- PortB[0-3]
NumB <- PortB[4-7]
AmayB <- 0
AigB <- 0
AmenB <- 1
include
NUMA
NUMB
AMAYB
AIGB
AMENB
EQU
EQU
EQU
EQU
EQU
<p16f84.inc>
0x0C
0x0D
0
1
2
; Se incluyen definiciones
; Referencia a memoria
; 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
movlw
movwf
movlw
movwf
bcf
STATUS, 5
0x00
PORTA
0xFF
PORTB
STATUS, 5
; Pone en alto el bit 5 del registro ESTADO
; El puerto A se configura como salidas
; El puerto B se configura como entradas
9
11/13/2007
LAZO:
MOVF
ANDLW
MOVWF
MOVF
ANDLW
MOVWF
SWAPF
PORTB, W
0X0F
NUMA
PORTB, W
0XF0
NUMB
NUMB, F
; Separa los números de 4 bits
MOVF
SUBWF
BTFSC
GOTO
BTFSC
GOTO
NUMB, W
NUMA, W
STATUS, Z
IGUAL
STATUS, C
MAYOR
; Resta para comparar
BCF
BCF
BSF
GOTO
PORTA, AMAYB
PORTA, AIGB
PORTA, AMENB
LAZO
BSF
BCF
BCF
GOTO
PORTA, AMAYB
PORTA, AIGB
PORTA, AMENB
LAZO
; Bandera Z en alto, si son iguales
; Acarreo en alto si A es mayor
MENOR:
MAYOR:
IGUAL:
BCF
BSF
BCF
GOTO
PORTA, AMAYB
PORTA, AIGB
PORTA, AMENB
LAZO
end
PRÁCTICA 2_2
DECODIFICADOR DE BINARIO
A 7 SEGEMENTOS
10
11/13/2007
HARDWARE
PIC16F84
PIC16F84
Entrada
Binaria
RA0
RA1
RA2
RA3
RB0
RB1
...
RB6
COMPORTAMIENTO
ENTRADA
SALIDA
ENTRADA
0000
0011
0001
0100
0010
0101
SALIDA
11
11/13/2007
COMPORTAMIENTO
ENTRADA
SALIDA
ENTRADA
0110
1001
0111
1010
1000
1011
SALIDA
COMPORTAMIENTO
ENTRADA
1100
SALIDA
ENTRADA
SALIDA
1111
1101
1110
12
11/13/2007
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
f
g
e
c
d
dp
dp
g
f
e
d
C
b
a
RB7
RB6
RB5
RB4
RB3
RB2
RB1
RB0
Programa
El lazo principal :
Lazo: MOVF
CALL
MOVWF
GOTO
PORTA, W
DECODIFICA
PORTB
Lazo
13
11/13/2007
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
14
11/13/2007
HARDWARE
PIC16F84
RB0
...
RB3
UP
RA0
DOWN
RST
BCD
a
7 seg.
RA1
RA2
RB4
...
RB7
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
. .
Vcc
. .
470 
Del
micro
820 
La habilitación se realiza
colocando un 0 lógico en la
terminal del puerto
A
F
G
E
B
C
D
15
11/13/2007
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
16
11/13/2007
HARDWARE
PIC16F84
UP
DOWN
RST
RB0
...
RB3
BCD
a
7 seg.
RA0
RA1
RA2
RB4
...
RB7
Arreglo de transistores
PNP
Se agregan botones al Hardware anterior
PERIFERICOS
Los botones proporcionan un 1 lógico si no
se han presionado
17
11/13/2007
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
18
11/13/2007
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
19
11/13/2007
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.
20
Descargar