Beruflich Dokumente
Kultur Dokumente
Microcontroladores
IUT Cuman
BSF F,B (Poner a Uno al Bit B del registro F) Ejemplo: bsf Datox,3 Datox= C8H
Microcontroladores
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
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
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
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
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
IUT Cuman
Microcontroladores
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
IUT Cuman
A)
; (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
IUT Cuman
Nota: Estamos asumiendo que en este ejemplo hemos etiquetado previamente a 05H como PuertoA y 06H como PuertoB.
Microcontroladores Prof. Luis Zurita
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
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
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
IUT Cuman
Microcontroladores
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
; C=1?
; RA0=1?
Microcontroladores
IUT Cuman
TOMA DE DECISIONES
Dos Tareas. La condicin puede venir internamente como externamente.
Condicin X=1?
NO
Proceso A
SI
Proceso B
; C=1?
; RA0=1?
Microcontroladores
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
IUT Cuman
RA0=1?
NO
; RA0=1?
Microcontroladores
IUT Cuman
Interna ESPERA
SI
Proceso A
Externa EXPLORA
Microcontroladores
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
IUT Cuman
SI
ProcesoA
Prof. Luis Zurita