Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA...

22
Diapositivas 3 Comprobación de registros Concepto de “Salto indexado” Concepto de subrutinas

Transcript of Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA...

Page 1: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Diapositivas 3 Comprobación de registros Concepto de “Salto indexado” Concepto de subrutinas

Page 2: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Comparación de registros1. Comprobación que un registro es igual a cero.

MOVF REGISTRO, FBTFSS STATUS, ZGOTO NoEsCero

EsCero……

NoEsCero…

2. Comprobación que dos registros son iguales.

MOVF REG1, WSUBWF REG2, WBTFSC STATUS, ZGOTO Iguales

NoIguales……

Iguales…

Page 3: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

3. Comprobación que un registro es mayor o menor que otro.

MOVF REG2, WSUBWF REG1, WBTFSS STATUS, CGOTO Menor

MayorIgual……

Menor…

Operación( A – B) Resultado Bits de C y Z

A > B POSITIVO C=1 y Z=0A < B NEGATIVO C=0 y Z=0A = B CERO C=1 y Z=1

Page 4: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valoralmacenado en memoria, de tal forma que:

a) Si PORTA = Número, entonces se encienden todos los leds del puerto B.b) Si PORTA > Número, entonces se activan los leds pares del puerto B.c) Si PORTA < Número, entonces se sólo enciende el nibble alto del puerto B.

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>

NUMERO EQU D’13’

ORG 0x00BSF STATUS, RP0CLRF TRISBMOVLW B’11111111’MOVWF TRISABCF STATUS, RP0

INICIO MOVLW NUMEROSUBWF PORTA, WMOVLW B’11110000’BTFSS STATUS, CGOTO SALIDAMOVLW B’11111111’BTFSC STATUS, ZGOTO SALIDAMOVLW B’01010101’

SALIDA MOVWF PORTBGOTO INICIO

END

Continuación:

Page 5: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

A1 A0 B1 B0 F1A>B

F2A<B

F3A=B

0 0 0 0 0 0 0 1

1 0 0 0 1 0 1 0

2 0 0 1 0 0 1 0

3 0 0 1 1 0 1 0

4 0 1 0 0 1 0 0

5 0 1 0 1 0 0 1

6 0 1 1 0 0 1 0

7 0 1 1 1 0 1 0

8 1 0 0 0 1 0 0

9 1 0 0 1 1 0 0

10 1 0 1 0 0 0 1

11 1 0 1 1 0 1 0

12 1 1 0 0 1 0 0

13 1 1 0 1 1 0 0

14 1 1 1 0 1 0 0

15 1 1 1 1 0 0 1

EJEMPLO.

Diseñe un circuito digitalcomparador de magnitudde 2 bits

A1A0

B1B0

F1: A>B

F2: A<B

F3: A=B?

Page 6: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

F1 = 4,8,9,12,13,14( )må F2 = 1,2,3,6,7,11( )

må F3 = 0,5,10,15( )må

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

A1

B1

B0

A1

A0A0B1

B0 00 01 11 10

00

01

11

10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

A1

B1

B0

A1

A0A0B1

B0 00 01 11 10

00

01

11

10

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

0

A1

B1

B0

A1

A0A0B1

B0 00 01 11 10

00

01

11

10

1 1

1

1

1

1

1

1

1

1

1 1

1

1

1

1

F1 = A1 B1 + A0 B1 B0 + A1 A0 B0 F2 = A1 B1 + A0 B1 B0 + A1 A0 B0

Las funciones resultantes son:

F3 = A1 A0 B1 B0 + A1 A0 B1 B0 + A1 A0 B1 B0 + A1 A0 B1 B0 = A0 Å B0( ) A1 Å B1( )

Page 7: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

B1A1

B0A0

A1B1

A0B0

F1

F2

A0B0

A1B1

F3

Page 8: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

SALTO INDEXADOEs una técnica que permite resolver problemas que se basan en elcomportamiento de una tabla de verdad.

La dirección de salto se consigue sumando a un registro base(registro PCL) un valor de desplazamiento almacenado en unregistro índice (registro W). A este valor de desplazamiento se ledenomina offset.

Page 9: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

A1 A0 B1 B0 F1A>B

F2A<B

F3A=B

0 0 0 0 0 0 0 1

1 0 0 0 1 0 1 0

2 0 0 1 0 0 1 0

3 0 0 1 1 0 1 0

4 0 1 0 0 1 0 0

5 0 1 0 1 0 0 1

6 0 1 1 0 0 1 0

7 0 1 1 1 0 1 0

8 1 0 0 0 1 0 0

9 1 0 0 1 1 0 0

10 1 0 1 0 0 0 1

11 1 0 1 1 0 1 0

12 1 1 0 0 1 0 0

13 1 1 0 1 1 0 0

14 1 1 1 0 1 0 0

15 1 1 1 1 0 0 1

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>

ORG 0BSF STATUS, RP0CLRF TRISBMOVLW B’11111111’MOVWF TRISABCF STATUS, RP0

INICIO MOVF PORTA, WANDLW B’00001111’

ADDWF PCL, FGOTO CONFIG0GOTO CONFIG1GOTO CONFIG2GOTO CONFIG3GOTO CONFIG4...GOTO CONFIG15

PROGRAMA 3: Diseñar un comparador de magnitud

Page 10: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

CONFIG0 MOVLW B’00000001’GOTO SALIDA

CONFIG1 MOVLW B’00000010’GOTO SALIDA

CONFIG2 MOVLW B’00000010’GOTO SALIDA

CONFIG3 MOVLW B’00000010’GOTO SALIDA

CONFIG4 MOVLW B’00000100’GOTO SALIDA

.

.

.CONFIG15 MOVLW B’00000001’

SALIDA MOVWF PORTBGOTO INICIO

END

A1 A0 B1 B0 F1A>B

F2A<B

F3A=B

0 0 0 0 0 0 0 1

1 0 0 0 1 0 1 0

2 0 0 1 0 0 1 0

3 0 0 1 1 0 1 0

4 0 1 0 0 1 0 0

5 0 1 0 1 0 0 1

6 0 1 1 0 0 1 0

7 0 1 1 1 0 1 0

8 1 0 0 0 1 0 0

9 1 0 0 1 1 0 0

10 1 0 1 0 0 0 1

11 1 0 1 1 0 1 0

12 1 1 0 0 1 0 0

13 1 1 0 1 1 0 0

14 1 1 1 0 1 0 0

15 1 1 1 1 0 0 1

CONTINUACIÓN:

Page 11: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

SUBRUTINASUna subrutina es un conjunto de instrucciones al que se tieneacceso desde cualquier punto del programa principal.

Es un subprograma que se ejecuta cada vez que el programaprincipal lo necesita.

LLAMADA DE SUBRUTINA: Acción de pasar del programaprincipal a la subrutina. Se realiza con la instrucción CALL, desdeel programa principal.

RETORNO DE SUBRUTINA: Acción de volver al programa principaldespués de llevar a cado las tareas implementadas en lasubrutina. Se realiza con la instrucción RETURN, al final de lasubrutina.

Page 12: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Proceso_X

Proceso_X

Proceso_X

Programa principalsin subrutinas

Proceso_X

RETURNCALL Proceso_X

CALL Proceso_X

CALL Proceso_X

Programa principalcon subrutinas

Page 13: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

La PILA (STACK) es una zona de memoria que se encuentra separadade las memorias de programa y la de datos, dentro delmicrocontrolador.

Tiene una estructura tipo LIFO (Last In First Out).

El PIC 16F84A tiene una pila de 8 niveles o registros de 13 bits delongitud cada uno.

Cuando se realiza la llamada de subrutina, en automático su guardael contenido del registro PC en la posición superior de la PILA.

La recuperación el contenido de la pila y escribirlo de nuevo en elregistro PC se ejecuta retorno de subrutina.

Page 14: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

…0A6 CALL PROCESO0A7 .............1B5 PROCESO .............1C3 RETURN... .......

PILA0A7

0A6 1B5 xxx 1C3 0A7PC PC PC PC PC

PILA PILA0A7

PILA0A7

PILA0A7

Antes delCALL PROCESO

Al ejecutarCALL PROCESO

Durante lasubrutina PROCESO

Antes delRETURN

Al ejecutarRETURN

Page 15: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

PROGRAMA CON USO DE SUBRUTINA:

ENTRADAS SALIDAS

A B C S5 S4 S3 S2 S1 S0

0 0 0 0 0 0 1 0 1 0

1 0 0 1 0 0 1 0 0 1

2 0 1 0 1 0 0 0 1 1

3 0 1 1 0 0 1 1 1 1

4 1 0 0 1 0 0 0 0 0

5 1 0 1 0 0 0 1 1 1

6 1 1 0 0 1 0 1 1 1

7 1 1 1 1 1 1 1 1 1

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>

ORG 0BSF STATUS, RP0CLRF TRISBMOVLW B’11111111’MOVWF TRISABCF STATUS, RP0

INICIO MOVF PORTA, WANDLW B’00000111’CALL TABLAMOVWF PORTBGOTO INICIO

TABLA ADDWF PCL, FRETLW B’00001010’RETLW B’00001001’RETLW B’00100011’RETLW B’00001111’RETLW B’00100000’RETLW B’00000111’RETLW B’00010111’RETLW B’00111111’

END

Page 16: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

EJEMPLO. Realice el programa para el control tinaco-cisterna mostrado en la figura.Para ello debe utilizar lo siguiente:

Tres sensores de humedad en el tinaco:a) SV: Sonda de vacíob) SLL: Sonda de llenadoc) SR : Sonda de rebose o derrame

Dos bombas de agua:a) Bomba B1b) Bomba B2

Cinco indicadores:a) Luz de vacíob) Luz de llenándosec) Luz de llenod) Luz de rebosee) Alarma audible

Page 17: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Condiciones de funcionamiento:

Cuando ninguna sonda está mojada se entiende que el tinaco está vacío deberánencenderse ambas bombas. La luz de “VACÍO” se activa únicamente.

Cuando el agua toca la sonda SV seguirá llenándose el tinaco con ambas bombas. Laluz de “LLENÁNDOSE” se activa únicamente.

Cuando el agua toca la sonda SLL se detiene la bomba B2 y sigue funcionando labomba B1. La luz de “LLENO” se activa únicamente.

Si el agua toca la sonda SR se detiene la bomba B1, lo que detiene el llenado del tinacoy la luz de “REBOSE” se activa únicamente.

Al producirse un fallo en las sondas de entrada, se detendrán ambas bombas y se activala alarma audible.

Page 18: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Solución.Realizar la tabla de verdad para definir el comportamientodel sistema:

ENTRADAS SALIDAS

SR SLL SV B2 B1 AL REB LLENO LLENAND VACIO

0 0 0 1 1 0 0 0 0 10 0 1 1 1 0 0 0 1 00 1 0 0 0 1 0 0 0 00 1 1 0 1 0 0 1 0 01 0 0 0 0 1 0 0 0 01 0 1 0 0 1 0 0 0 01 1 0 0 0 1 0 0 0 01 1 1 0 0 0 1 0 0 0

NOTA: Entradas en color rojo indican condiciones de fallo del sistema.

Page 19: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

Código: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>

ORG 0BSF STATUS, RP0CLRF TRISBMOVLW B’11111111’MOVWF TRISABCF STATUS, RP0

INICIO MOVF PORTA, WANDLW B’00000111’CALL TABLAMOVWF PORTBGOTO INICIO

TABLA ADDWF PCL, FRETLW B’01100001’RETLW B’01100010’RETLW B’00010000’RETLW B’00100100’RETLW B’00010000’RETLW B’00010000’RETLW B’00010000’RETLW B’00001000’

END

Page 20: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

PROGRAMA 4. Lectura de los primeros 3 bits del puerto A que fijanel número de LEDS que se iluminarán, conectados en el puerto B.

Si por ejemplo se lee PortA=“-----011” entonces se encenderán losdiodos D2, D1 y D0, el resto permanecerán apagados.

PIC16F84A

PortA PortB

- - - - - 0 1 1

Page 21: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

PROGRAMA 5. Lectura de los primeros 4 bitsdel puerto A y su escritura en el puerto B,visualizando en un display de 7 segmentosde cátodo común.

PIC16F84A

PortA PortB

RB7 RB6 RB5 RB4 RB3 RB2 RB1 RB0abcdefg

Conexión del display de 7segmentos al puerto B:

0 B’00111111’ = H’3F’1 B’00000110’ =H’06’2 B’01011011’ =H’5B’3 B’01001111’ =H’4F’4 B’01100110’ =H’66’5 B’01101101’ =H’6D’6 B’01111101’ =H’7D’7 B’00000111’ =H’07’8 B’01111111’ =H’7F’9 B’01100111’ =H’67’A B’01110111’ =H’77’B B’01111100’ =H’7C’C B’00111001’ =H’39’D B’01011110’ =H’5E’E B’01111001’ =H’79’F B’01110001’ =H’71’

Page 22: Diapositivas 3 indexado y subrutinas.pdf · A < B NEGATIVO C=0 y Z=0 A = B CERO C=1 y Z=1. PROGRAMA 2. Comparar el dato de entrada por el puerto A con un valor ... (re gistro PCL)

CÓDIGO: __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSCLIST P=16F84AINCLUDE <P16F84A.INC>

ORG 0BSF STATUS, RP0CLRF TRISBMOVLW B’11111111’MOVWF TRISABCF STATUS, RP0

INICIO MOVF PORTA, WANDLW B’00001111’CALL TABLAMOVWF PORTBGOTO INICIO

TABLA ADDWF PCL, FRETLW H’3F’RETLW H’06’RETLW H’5B’RETLW H’4F’RETLW H’66’RETLW H’6D’...

END