20
11/13/2007 1 PRÁCTICA 0 CIRCUITO BASE SISTEMA MÍNIMO BASADO EN EL PIC16F84

PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

  • Upload
    hathuy

  • View
    224

  • Download
    0

Embed Size (px)

Citation preview

Page 1: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

11/13/2007

1

PRÁCTICA 0

CIRCUITO BASE

SISTEMA MÍNIMO BASADO EN EL PIC16F84

Page 2: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

11/13/2007

2

PRÁCTICA 1_1

COMPUERTA “AND” DE TRES

ENTRADAS

Hardware

X0

X1

X2

Y

Page 3: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 4: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 5: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

11/13/2007

5

PRÁCTICA 1_2

Suma 2 a un puerto de entrada

Hardware

PIC16F84

PORTA PORTBDato Dato + 2

Page 6: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 7: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 8: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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]

Page 9: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 10: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 11: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 12: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

11/13/2007

12

COMPORTAMIENTO

ENTRADA

0110

0111

1000

SALIDA ENTRADA

1001

1010

1011

SALIDA

COMPORTAMIENTO

ENTRADA

1100

1101

1110

SALIDA ENTRADA

1111

SALIDA

Page 13: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 14: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 15: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 16: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 17: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 18: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 19: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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

Page 20: PRÁCTICA 0 - utm.mxfsantiag/PICS/PRACTICAS.pdf · Instrucciones • movlw k –Mueve la constante k al registro W • movwf f –Mueve el contenido del registro W a la localidad

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.