Vous êtes sur la page 1sur 24

IUT Cuman

TEMA 3. HERRAMIENTAS DE PROGRAMACIN

Microcontroladores

Prof. Luis Zurita

INSTRUCCIONES DE MANIPULACIN DE BITS


BCF F,B (Poner a Cero al Bit B del registro F) Ejemplo: bcf Datox,5 Datox= E4H

IUT Cuman

BSF F,B (Poner a Uno al Bit B del registro F) Ejemplo: bsf Datox,3 Datox= C8H

Microcontroladores

Prof. Luis Zurita

INSTRUCCIONES DE EXPLORACIN/TESTEO DE BITS


BTFSS F,B (Pregunta si el bit B del registro F vale uno) (Bit Test File Skip Set) Ejemplo: btfss suma,2 goto RutinaA goto RutinaB

IUT Cuman

BTFSC F,B (Pregunta si el bit B del Registro F vale cero) (Bit Test File Skip Clear) Ejemplo: btfsc suma,5 goto RutinaA goto RutinaB

Microcontroladores

Prof. Luis Zurita

STATUS
7 (L/E) 6 (L/E) 5 (L/E) 4 (L) 3 (L) 2 (L/E) 1 (L/E) 0 (L/E)

IRP

RP1

RP0

TO

PD

DC

C. Bit de acarreo en el bit MSB Vale 1 cuando en el resultado de una operacin aritmtica, se ha producido una acarreo (suma) Vale 0 si no se ha producido un acarreo. Para el caso de una resta, ocurre todo lo contrario a lo expuesto: Vale 1 si no se ha producido un "prstamo" Vale 0 si se ha producido un "prstamo" DC. Acarreo en el cuarto bit (Nibble bajo). Misma descripcin de C, pero referida al cuarto bit. Z. Cero. Vale 1 si el resultado de una operacin lgico - aritmtica es cero Vale 0 si el resultado de una operacin lgico- aritmtica NO es cero IRP. Bit para direccionamiento indirecto de los bancos de datos. RP1 - RP0. Bits para direccionamiento directo de los bancos de datos. 1 - 1 : Banco 3 1 -0 : Banco 2 0 - 1 : Banco 1 0 - 0 : Banco 0 TO. Time Out Se pone a 1 despus de la conexin de la alimentacin al microcontrolador, o al ejecutarse las instrucciones clrwdt sleep Se pone a 0 cuando el perro guardin se ha desbordado. PD. Power Down Se pone a 1 despus de la conexin de la alimentacin al microcontrolador o al ejecutarse la instruccin clrwdt Se pone a 0 mediante la ejecucin de la instruccin sleep

RESULTADO DE OPERACIONES LGICO/ARITMTICAS

IUT Cuman

Cmo hacemos para saber si la suma de dos registros ha producido acarreo? R= Se suman los dos registros y se pregunta por el bit c del registro STATUS: movf DatoA,0 ;DatoAW addwf DatoB,0 ;DatoA+DatoBW btfss STATUS,0 ; C=1? goto Noacarreo goto Acarreo Cmo sabemos si la suma de dos nibbles (4 bits) ha producido acarreo? R= Se suman los dos registros y se pregunta por el bit DC del Registro STATUS: movf DatoA,0 ;DatoAW addwf DatoB,0 ;DatoA+DatoBW btfss STATUS,1 ; DC=1? goto Noacarreo goto Acarreo

Microcontroladores

Prof. Luis Zurita

RESULTADO DE OPERACIONES LGICO/ARITMTICAS


a 1:

IUT Cuman

Cmo sabemos si un registro es igual a otro? Opcin A: Se restan ambos registros y se pregunta si Z es igual movf subwf btfss goto goto DatoB,0 DatoA,0 STATUS,2 NOIGUAL IGUAL ;DatoBW ;DatoA DatoB W

Opcin B: Se aplica XOR entre ambos registros y: movf DatoB,0 ;DatoBW xorwf DatoA,0 ;DatoA (XOR) DatoB W btfss STATUS,2 goto NOIGUAL goto IGUAL
Microcontroladores

Prof. Luis Zurita

RESULTADO DE OPERACIONES LGICO/ARITMTICAS


Cmo sabemos si un registro es mayor, otro? R= Se restan ambos registros (A B) y: movf DatoB,0 subwf DatoA,0 EXPLORA btfss STATUS,2 goto SIGUE goto IGUAL SIGUE btfsc STATUS,0 goto MAYOR goto MENOR igual o menor a

IUT Cuman

;DatoBW ;DatoA-DatoBW ; Z=1? ;Si Z=1, A=B ;C=0? ; Si C=1, A>B ; Si C=0, A<B

Microcontroladores

Prof. Luis Zurita

SELECCIONANDO LOS BANCOS DE REGISTROS


El PIC 16F84 posee solamente dos (2) bancos de Registros, por lo que para seleccionar el banco deseado, basta con manipular el bit RP0 del registro STATUS. Si RP0= 1, se ha seleccionado el banco 1 Si RPO= 0, se ha seleccionado el banco 0 Ejemplo: Seleccione el banco de registros 1: Seleccione el banco de registros 0:
bsf STATUS,5 ; RP0= 1
bcf STATUS,5 ; RP0=0 As de sencillo es seleccionar los bancos de registros.

IUT Cuman

Microcontroladores

Prof. Luis Zurita

CONFIGURANDO UN PUERTO
1. 2.

IUT Cuman

La configuracin de puertos es muy fcil: Se selecciona el banco 1 Aqu se encuentran los registros que manipulan mediante software a los circuitos triestados que determinan que un pin o puerto trabaje como entrada o salida. Se configuran mediante los registros asociados a los puertos (TRISA y TRISB), los pines de un puerto como entrada o salida. Si coloco un uno (1) en un bit asociado a un puerto (RA0, RA1, RB5, RB7,etc), ste se comportar como una entrada y solamente podremos leer por esta entrada. Si coloco un cero (0) en un bit asociado a un puerto, ste se comportar como una salida y solamente podremos escribir por esta entrada. Podemos hacer analoga de la siguiente forma: 1 = In = Entrada = Solo lectura 0 = Out = Salida = Solo escritura
Prof. Luis Zurita

Microcontroladores

CONFIGURANDO UN PUERTO
3.

IUT Cuman

La configuracin de puertos es muy fcil: Se selecciona o se regresa al banco 0, para trabajar con los puertos que han sido previamente configurados. Si un puerto (o pin) ha sido configurado como salida, entonces se podr escribir sobre l, para sacar datos. Si un puerto (o pin) ha sido configurado como entrada, entonces se podr leer los datos que estn ingresando por l. Nota: Escribir sobre un puerto (o pin) configurado como entrada, no tiene ningn efecto. Si se desea escribir sobre l, es necesario que el mismo sea habilitado como salida.

Microcontroladores

Prof. Luis Zurita

CONFIGURANDO UN PUERTO COMO ENTRADA/SALIDA (POR BYTE)


Recordemos los tres pasos: Por Byte:
bsf movlw movwf
bcf B) bsf movlw movwf bcf C) bsf movlw movwf bcf

IUT Cuman

A)

STATUS, 5 FFH TRISB


STATUS,5 STATUS, 5 00H TRISA STATUS,5 STATUS, 5 B10010001 TRISB STATUS,5

; (1) Seleccin de banco 1 ; B11111111 ; (2) Todos los bits del puertoB estn ; configurados como entradas ; (3) Se regresa al banco 0
; (1) Seleccin de banco 1 ; B00000000 ; (2) Todos los bits del puertoA estn ; configurados como salidas ; (3) Se regresa al banco 0 ; (1) Seleccin de banco 1 ; BESSESSSE ; (2) Mixto E/S en un mismo puerto ; (3) Se regresa al banco 0
Prof. Luis Zurita

Microcontroladores

CONFIGURANDO UN PUERTO COMO ENTRADA/SALIDA (BIT A BIT)


Bit a bit: bsf bsf bcf bsf bcf bcf bcf bsf bcf bcf

IUT Cuman

Recordemos los tres pasos:


STATUS,5 PuertoA,1 PuertoA,2 PuertoA,3 PuertoB,0 PuertoB,2 PuertoB,3 PuertoB,5 PuertoB,7 STATUS,5 ; (1) Seleccin de Banco 1 ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (2) Salida o Entrada? ; (3) Se regresa al banco 0

Nota: Estamos asumiendo que en este ejemplo hemos etiquetado previamente a 05H como PuertoA y 06H como PuertoB.
Microcontroladores Prof. Luis Zurita

ESCRIBIR Y LEER SOBRE UN PUERTO

IUT Cuman

Para configurarlos como entradas y/o salidas, debemos de estar en el banco 1. Una vez configurados, para poder leer y/o escribir sobre estos, debemos de cambiarnos al banco 0. Ejemplo. Realice un programa que configure al Puerto A como entrada y a los primeros cuatro bits del Puerto B como salida, los restantes bits del puerto B como entrada. STATUS equ 03H ; A esta parte se le conoce como zona de ; etiquetas o declaracin de etiquetas. PuertoA equ 05H ; Tambin se puede usar la directiva ; INCLUDE PuertoB equ 06H ; Y se obvian estas declaraciones bsf STATUS,5 ; Hemos cambiado al banco 1, para configurar ; los puertos movlw 1FH movwf PuertoA ; Hemos configurado al PuertoA como entrada movlw b'11110000' movwf PuertoB ; Nibble bajo como salida y nibble alto como ; entrada bcf STATUS,5 ; Cambiamos al banco 0 para poder leer ; escribir en estos, segn sea el caso.

Microcontroladores

Prof. Luis Zurita

REGISTROS ASOCIADOS A LOS PUERTOS

IUT Cuman

De configuracin: TRISA (85H, Banco 1) TRISB (86H, Banco 1) De Trabajo (Lectura/Escritura) PORTA (05H, Banco 0) PORTB (06H, Banco 0) PORTA y PORTB, son registros de Lectura/Escritura, como cualquier otro registro de propsito general, slo que estn directamente vinculados a los puertos del microcontrolador. Por lo tanto su Lectura/Escritura NO difiere de la de cualquier otro registro

Microcontroladores

Prof. Luis Zurita

LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO

IUT Cuman

Ejemplo 1. Lea el valor presente en el puerto A y gurdelo en un Registro DatoA. movf PORTA,0 ; PORTAW movwf DatoA ; WDatoA Ejemplo 2. Escriba sobre el puerto B el siguiente valor: 49H movlw 49H ; 49HW movwf PORTB ; WPORTB Ejemplo 3. Active el bit RB0, desactive el bit RB1 y active el bit RA4: bsf PORTB,0 ; RB0= 1 bcf PORTB,1 ; RB1= 0 bsf PORTA,4 ; RA4= 1

Microcontroladores

Prof. Luis Zurita

LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO


Segn el ejemplo 3, planteado anteriormente; Qu Efectos se tiene sobre el siguiente circuito? Qu Efectos se tiene sobre el circuito si se aplican las siguientes instrucciones? movlw B00000001 movwf PORTB Qu Efectos se tiene sobre el siguiente circuito si se aplican estas siguientes instrucciones? bcf PORTA,0 bsf PORTA,1 bcf PORTA,2

IUT Cuman

Microcontroladores

Prof. Luis Zurita

LEER Y/O ESCRIBIR EL UN VALOR EN UN PUERTO


Para el siguiente circuito, Qu valor debemos colocar en puerto B para que se visualice un 7 en el display?

IUT Cuman

Cmo hacemos para saber el valor del bit RA0? Basta con explorar su estado lgico mediante alguna de las instrucciones de testeo y/o exploracin: btfss f,b btfsc f,b: btfss PORTA,0 goto RutinA goto RutinB
Microcontroladores Prof. Luis Zurita

IUT Cuman

TOMA DE DECISIONES
Una Tarea. La condicin puede venir internamente como externamente.

Condicin X=1?

NO

Proceso A

SI

Interna btfss STATUS,0 goto ProcesoA goto SIGUE

; C=1?

Externa btfss PORTA,0 goto ProcesoA goto SIGUE

; RA0=1?

Microcontroladores

Prof. Luis Zurita

IUT Cuman

TOMA DE DECISIONES
Dos Tareas. La condicin puede venir internamente como externamente.

Condicin X=1?

NO

Proceso A

SI

Proceso B

Interna btfss STATUS,0 goto ProcesoA goto ProcesoB

; C=1?

Externa btfss PORTA,0 goto ProcesoA goto ProcesoB

; RA0=1?

Microcontroladores

Prof. Luis Zurita

IUT Cuman

TOMA DE DECISIONES. EJEMPLO Dado el siguiente circuito, Active el LED ubicado en RB0 si RA0, vale 0 y en caso contrario, active el LED ubicado en RB1.

Microcontroladores

Prof. Luis Zurita

IUT Cuman

TOMA DE DECISIONES. EJEMPLO

RA0=1?

NO

Activar LED en RB0 Externa

SI Activar LED en RB1

ProcesoA ProcesoB SIGUE

btfss goto goto bsf goto bcf goto ----------------

PORTA,0 ProcesoA ProcesoB PORTB,0 SIGUE PORTB,1 SIGUE

; RA0=1?

Microcontroladores

Prof. Luis Zurita

TOMA DE DECISIONES. CERROJO VALIDACIN


Condicin X=1? NO Se queda esperando que la condicin ocurra.

IUT Cuman

Interna ESPERA

SI

btfss goto goto

INTCON,0 ESPERA ProcesoA

Proceso A

Externa EXPLORA

btfss goto goto

PORTA,0 ; RA0=1? EXPLORA ProcesoA

Microcontroladores

Prof. Luis Zurita

IUT Cuman

TOMA DE DECISIONES

Condicin X=1?

NO

Condicin Y=1? SI
Proceso B

NO

Proceso A

SI NO

Proceso C

Condicin Y=1? Multitareas. Dos condiciones permiten elegir entre uno a cuatro procesos distintos.

SI
Proceso D
Microcontroladores

Prof. Luis Zurita

Cmo pasar del diagrama de flujo al programa?


Es sencillo:
Cada smbolo del diagrama de flujo representa una ( varias) instruccin (es). El programador/Diseador, mediante la prctica y/o visualizacin, debe buscar las instrucciones que cumplan con los smbolos y su contenido, e ir colocndolas secuencialmente, segn lo indique el diagrama de flujo previamente elaborado. 35H SUMA CARGA movlw movwf 35H SUMA

IUT Cuman

SI

btfss Z=1? NO goto goto

STATUS,2 ProcesoA Carga

ProcesoA
Prof. Luis Zurita