Вы находитесь на странице: 1из 20

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  1
RB0  0 NO
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 ; 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

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 ; 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

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: AmayB <- 1


Puerto B : entradas NumA > NumB AigB <- 0
Puerto A : Salidas AmenB <- 0

NumA <- PortB[0-3]


NumB <- PortB[4-7] AmayB <- 0
NumA = NumB 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

9
11/13/2007

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 IGUAL:
GOTO LAZO BCF PORTA, AMAYB
BSF PORTA, AIGB
MAYOR: BCF PORTA, AMENB
BSF PORTA, AMAYB GOTO LAZO
BCF PORTA, AIGB
BCF PORTA, AMENB end
GOTO LAZO

PRÁCTICA 2_2
DECODIFICADOR DE BINARIO
A 7 SEGEMENTOS

10
11/13/2007

HARDWARE
PIC16F84
PIC16F84

RA0 RB0
Entrada RA1 RB1
Binaria RA2 ...
RA3 RB6

COMPORTAMIENTO
ENTRADA SALIDA ENTRADA SALIDA

0000 0011

0001 0100

0010 0101

11
11/13/2007

COMPORTAMIENTO
ENTRADA SALIDA ENTRADA SALIDA

0110 1001

0111 1010

1000 1011

COMPORTAMIENTO
ENTRADA SALIDA ENTRADA SALIDA

1100 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 a
1 1 1 1 1 1 1 0 0 FC
2 1 0 1 0 0 1 0 0 A4
f b
3 1 0 1 1 0 0 0 0 B0
g
4 1 0 0 1 1 0 0 1 99
e c
5 1 0 0 1 0 0 1 0 92 d
6 1 0 0 0 0 0 1 0 82 dp
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
dp g f e d C b a
C 1 1 0 0 0 1 1 0 C6
RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0
E 1 0 0 0 0 1 1 0 86
F 1 0 0 0 1 1 1 0 8E

Programa

El lazo principal :

Lazo: MOVF PORTA, W


CALL DECODIFICA
MOVWF PORTB
GOTO 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 BCD
... a
RB3 7 seg.
UP
RA0
DOWN
RA1
RST
RA2
RB4
... Arreglo de transistores
PNP
RB7

• 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

Del
micro
. .470 
La habilitación se realiza
. .

colocando un 0 lógico en la
terminal del puerto
820 

A
F B
G
E 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

RB0 BCD
... a
RB3 7 seg.
UP
RA0
DOWN
RA1
RST
RA2
RB4
... Arreglo de transistores
PNP
RB7

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

Вам также может понравиться