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

1. Librera P16F877A.INC En el problema 3 hicimos uso de la librera P16F877A.INC con el comando INCLUDE<P16F877A>, por qu?

bueno, en la Memoria de Datos se encuentran los Registros Especiales o SFR los cuales gobiernan al uC y sus recursos, solo hace falta configurarlos para poder hacer uso de ellos. Por tal motivo debemos conocer en que direccin se encuentra el registro que nos permite, por ejemplo, configurar los puertos como entradas o salidas, o que registro nos permite usar el perifrico PWM, etc. Cada registro posee una direccin establecida (ver Memoria de Datos) pero hay una manera ms sencilla de utilizar estos registros y no tener que memorizar cada direccin, Microchip en el MPLAB nos facilita esta tarea con las libreras *.INC segn el modelo del uC, en estas libreras encontraremos los nombres de los registros asignados a su direccin respectiva, por ejemplo: STATUS EQU H'0003' RP0 EQU H'0005' bsf STATUS,RP0 ;el bit 5 del registro STATUS se pone a 1 es lo mismo que poner: bsf .3,.5 solo que el primer ejemplo lo entendemos mejor, nos indica que estamos configurando el bit RP0 del Registro STATUS. Estas libreras las encontramos en la carpeta Microchip/MPASM Suite por si queremos indagar ms. EQU es un comando que sirve para relacionar un valor con un nombre, viene de la palabra "equal" que significa "igual", lo podemos usar no solo para relacionar direcciones sino tambin para crear constantes y variables, eso lo veremos en los ejemplos. 2. Qu es el Registro de Estado (STATUS) El Registro de Estado se encuentra en los 4 bancos de la memoria RAM (pueden constatarlo en el artculo Memoria de Datos) es un Registro muy usado porque, entre otras cosas, nos permite acceder a los registros de cualquier banco de memoria con solo configurar algunos bits, y para que necesitamos eso? pues los registros que hacen posible configurar los puertos como Entrada o Salida de datos pues estn en el Banco 1 y por defecto nos encontramos en el Banco 0. El registro STATUS tienen la siguiente estructura: -----| IRP | RP1 | RP0 | TO# | PD# | Z | DC | C | Bit-----7-----6------5------4------3-----2---1-----0 Por ahora solo nos interesa conocer como cambiar de Banco, para esto se utilizan los bits RP1 y RP0. RP1 y RP0: Nos permiten elegir el Banco de Memoria | RP1| RP0 | |--0--|---0--| |--0--|---1--| |--1--|---0--| |--1--|---1--| Banco | Banco 0 | Banco 1 | Banco 2 | Banco 3 |

Ejemplo: Estamos en el Banco 0 y queremos pasar a Banco 1 bsf STATUS,RP0 ;RP1=0 y RP0=1 con lo que estamos pasando al Banco 1 segn la tabla anterior (RP1=0 por defecto luego de resetear el uC). Bueno vamos aprovechar tambin para conocer para que sirven los bits Z y C. Z: ms conocido como sealizador de 0, se activa o pone en nivel alto "1" cuando el resultado de una operacin es 0, por ejemplo:

movlw .10 sublw .10 esta operacin da como resultado 0, en ese instante el bit Z del Registro STATUS cambia a "1". C: ms conocido como sealizador de acarreo, se pone en nivel alto "1" en las operaciones de suma cuando existe acarreo y se pone en nivel bajo "0" en las operaciones de resta cuando tambin existe acarreo por lo general cuando se resta un numero mayor de uno menor, por ejemplo: movlw .255 addwl .1 la suma supera los 8 bits, por lo tanto se activa "1" el sealizador de acarreo indicando que se ha superado el lmite de registro, es decir, hubo un desbordamiento y por consiguiente un acarreo. movlw .5 sublw .4 la resta da como resultado un nmero negativo, por lo tanto se pone a "0" el sealizador de acarreo. movlw B'10000000' movwf 22H rlf 22H,7 en este caso tambin se activa "1" el sealizador de acarreo. 3. Puertos A, B, C, D y E Puerto A: Tiene 6 bits, de los cuales 5 pueden trabajar como Entradas Analgicas o Entradas/Salidas Digitales. Por defecto, al resetear el PIC, estos 5 bits (RA0,RA1,RA2,RA3 y RA5) se configuran como entradas o canales analgicos para trabajar con el Conversor A/D. Para configurarlos con Entradas/Salidas Digitales se debe configurar antes el registro ADCON1, ubicado en la direccin 9FH en el Banco 1, con el valor 0000011x, x puede ser 1 o 0. movlw B'00000110' movwf ADCON1 De esta forma se configura el puerto A como Entradas/Salidas Digitales, luego para especificar que pines son de Entrada y cuales de Salida se debe modificar el Registro TRISA. bsf STATUS,RP0 movlw B'11110000' movwf TRISA bcf STATUS,RP0 Esto significa que los bits 0..3 estn configurados como Salidas Digitales y los pines 4..7 estn configurados como Entradas Digitales. Puerto B: Este puerto es netamente Digital, tiene 8 bits y solo basta con modificar el Registro TRISB para especificar que bits son de Entrada y cuales de Salida. Por defecto, luego de un Reset todos los puertos estn configurados como entradas (TRISX=11111111). Puerto C: Este puerto es similar al Puerto B, con la diferencia que tambin pueden cumplir otras funciones que no veremos por ahora. Por defecto es un puerto Digital y solo hay que configurar los bits como Entrada o Salida por medio del Registro TRISC.

Puerto D: Este puerto a diferencia de los 2 anteriores dispone en sus entradas de un Trigger Schmitt. Cuenta con 8 bits, por defecto es un puerto Digital y solo hay que configurar los bits como Entrada o Salida por medio del Registro TRISD. Puerto E: Este puerto tiene 3 bits y se puede configurar como E/S Digitales o como entradas analgicas.Por defecto es Digital y hay que configurar si son Entradas o Salidas por medio del Registro TRISE.

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