Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Elctrica y Electrnica
Ing. Marco Antonio Reyes Gonzlez Ingeniera Elctrica y Electrnica Instituto Tecnolgico de Toluca
El PIC16F84 es un microcontrolador, una especie de "ordenador en miniatura" (con muchas comillas) que podremos programar.
En su interior posee un microprocesador, una memoria RAM (volatil) donde guardaremos las variables, una memoria EEPROM (no volatil) donde guardaremos nuestro programa, un Timer o contador que nos facilitar algunas tareas, y algunas cosas mas.
Caractersticas representativas :
Operacin a una frecuencia mxima de 10 MHz 1Kbyte de memoria EEPROM para programa Memoria RAM de 68 bytes (de 8 bits) Memoria EEPROM para datos (no voltiles) de 64 bytes Cuenta con solo 35 instrucciones 13 pines de entrada/salida (un puerto de 8 bits + otro de 5 bits) Timer/contador de 8 bits
OSC1/CLKIN y OSC2/CLKOUT: son para el oscilador Los tipos de osciladores mas usados son el XT (cristal de cuarzo) y el RC (resistencia y condensador) el modo de conexionado es el
siguiente:
Oscilador XT
C1=C2=33pF Crystal 4MHz
Oscilador RC
C1 alrededor de 20pF 5K R1 100K
Reset manual
En el caso de que sea necesario se puede aplicar un reset manual a la patilla MCLR mediante un pulsador y una resistencia. La siguiente figura muestra una configuracin bsica para realizar un reset manual:
En primer lugar tenemos que distinguir claramente entre tres tipos de memoria: 1: la memoria EEPROM donde almacenaremos el programa que haremos, esta memoria solo podr ser leida por el pic (el pic va leyendo las instrucciones del programa almacenado en esta memoria y las va ejecutando). Al apagar el pic esta memoria no se borra.
2: la memoria RAM en cuyos registros se irn almacenando los valores de las variables que nosotros queramos y cuando nosotros queramos (por programa), al apagar el pic esta memoria se borra. 3: la memoria EEPROM para datos, es un espacio de memoria EEPROM en la que se pueden guardar variables que queremos conservar aunque se apague el pic. No se tratar aqu por ser una memoria mas difcil de emplear.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Memoria EEPROM
Registros internos
Estos registros se usan para controlar los pines del pic, consultar los resultados de las operaciones de la ALU (unidad aritmtica lgica), cambiar de banco de memoria... entre otras cosas.
INDF (direccionamiento indirecto) TMR0 (Timer/contador) PCL (Parte baja del contador de programa) FSR (Puntero)
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
Las instrucciones tienen algunas letras que van relacionadas y que tienen cierta interpretacin. Por ejemplo la letra "W" es el registro mas importante que tiene el microcontrolador y es denominado ACUMULADOR. En este registro todas las operaciones pasan a travs de el.
No. 1 Instruccin ADDWF f,d Descripcin Sumar W + f Observacin Esta instruccin suma el contenido de un registro especfico al contenido del registro de "W" donde "f" puede ser un registro cualquiera con un determinado valor.
Por ejemplo: Si el contenido de "W" antes de ejecutar la instruccin tena un valor de 20 y el registro "f" tiene un valor de 5, en el momento que se ejecuta la instruccin el resultado obtenido es 25. Ahora aprovechamos en esta primera instruccin de explicar el significado que tiene la letra "d" en la instruccin (ADDWF f,d). Una vez finalizada la instruccin, el resultado podr ser almacenado directamente en el acumulador "W" o en el registro "f" para ello se utiliza la letra "d" en el cual podr escribirse "0" o "1"; si la letra d=0el resultado de la operacin se ubicar en el registro "W"; por otro lado si d=1 el resultado de la operacin se ubicar en "f". Hagamos un ejemplo sencillo y supongamos que W=4 y f = 3 antes de ejecutar la instruccin: Si escribimos la instruccin de la siguiente manera: ADDWF f,0 significa que el contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el acumulador "W" tomando el valor de "W=7"; el registro "f" mantendr su valor "f=3". Ahora si la instruccin esta escrita as: ADDWF f,1 significa que el contenido del registro "f=3" se sumar con el contenido del registro "W=4" y el resultado se alojar en el registro "f" tomando el valor de "f=7"; el acumulador mantendr su valor "W=4". Esta explicacin de la letra "d" ser valida de igual manera para todas las instrucciones que contengan este parmetro. Otro punto importante esta referido a la letra "f" la cual puede ser cualquier nombre y no especficamente la letra "f"; por ejemplo ADDWF regist,1 donde regist es un registro de uso general de la memoria RAM. Ing. Marco Antonio Reyes Gonzlez, Depto. de
Ingria. Elctrica y Electrnica
Set de instrucciones
No. 2 Instruccin ANDWF f,d Descripcin Operacin lgica AND Observacin Esta instruccin realiza una operacin lgica "AND" entre el registro"W" y el registro "f". RESULTAD O Y = A.B 0 0 0 1 RESULTAD O W.f 0 0 0 0 0 0 0 0 RESULTADO W.f 0 0 1 0 0 0 0 1
El microcontrolador PIC16F84 puede realizar una operacin AND entre dos registros. Para explicar mejor la operacin AND, supongamos que tenemos un bit A y un bit B que deseamos comparar; entonces tenemos las siguientes alternativas combinaciones entre los dos bits:
ENTRADA A 0 0 1 1 B 0 1 0 1
Se puede observar claramente que solamente para la condicin de que A=1 Y B=1
tendremos 1 en el resultado; de all el nombre de la operacin AND donde dice: "Si A=1 y B=1 entonces la salida ser 1". Esta explicacin es vlida para cada uno de los Bits entre dos registros. Hagamos un ejemplo sencillo y supongamos que W= 00001111 y f = 11110000 antes de ejecutar la instruccin ANDWF f,d:
ENTRADA W 0 0 0 0 1 1 1 1 f 1 1 1 1 0 0 0 0
El microcontrolador procede a comparar cada uno de los ocho bits que conforman a W
y a f. Esta comparacin es realizada con cada bit perteneciente a su posicin; es decir, el bit No. 7 de"W" con el Bit No. 7 de "f" y as sucesivamente hasta llegar al Bit No 0. Se puede observar que en ninguno de los ocho Bits de los registros "W" y "f" se obtuvo la condicin de "1 Y 1" por lo que todos los bits resultantes fueron cero (0).
Al igual que el caso anterior, el microcontrolador compara Bit a Bit el registro "W" y el
registro "f" y podemos observar que tan solo el Bit No. 5 y el Bit No. 0 cumplen con la condicin AND; los dems Bits dan como resultado cero.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
f 0 0 1 0 1 0 0 1
Set de instrucciones
No. Instruccin 3 ANDLW k Descripcin Observacin Operacin lgica AND entre un literal y W
Otra diferencia con respecto a la instruccin anterior esta referido al resultado ya que este es colocado
directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k".
No. 3
Instruccin CLRF f
Descripcin
Observacin
Set de instrucciones
No.
4
Instruccin
CLRW
Descripcin Observacin Borra el Esta instruccin borra el registro "W" solamente registro W
No. 5
Observacin
un
Esta instruccin le decrementa en una sola unidad el registro "f". Por ejemplo si
nuestro registro denominado regist = 5; cuando se aplica la instruccin DECF f,0 el resultado ser W=4. Por el contrario, si aplicamos la instruccin DECF f,1 el resultado ser regist = 4.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin
7 DECFSZ f,d
Descripcin
Observacin Esta instruccin decrementa en una sola unidad el registro "f" Decrementa y si es en la cual si el registro "f" es igual a cero entonces salta a una igual a cero salta. instruccin
Descripcin Observacin Incrementa el registro "f" en una Esta instruccin incrementa en una sola unidad el registro "f". unidad
Supongamos que el registro " f = 45 "; cuando se le aplica el comando INCF f,0 se incrementa
en una unidad el numero 45 y el resultado es colocado en "W = 46 ". Si aplicamos el comando INCF f,1 se incrementa en una unidad el numero 45 y el resultado es colocado en el registro "f = 46"
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin 9 INCFSZ f,d Descripcin Observacin Esta instruccin incrementa en una sola unidad el registro "f" incrementa y si es en la cual si el registro "f" es igual a cero entonces salta a una igual a cero salta. instruccin
Descripcin Observacin Se aplica un OR Esta instruccin aplica una operacin lgica llamada OR Inclusivo INCLUSIVO entre dos registros.
RESULTAD O Y=A+B 0 1 1 1
Set de instrucciones
No. Instruccin 27 IORLW k Descripcin Operacion IOR Observacin Operacin lgica entre el registro "W" y un literal "k"
Esta instruccin, al igual que la instruccin explicada anteriormente, ejecuta el mismo procedimiento
pero con ciertas diferencias. La instruccin IORLW k significa que el microcontrolador realiza una operacin lgica OR entre el registro "W" y el contenido del literal "k", donde "k" es un literal que puede contener cualquier valor entre 0 y 255 asignado por el programador. Otra diferencia con respecto a la instruccin anterior esta referido al resultado ya que este es colocado directamente en en registro "W" y no existir la posibilidad de colocarlo en el registro "k".
Observacin el Esta instruccin mueve el contenido del registro "f" en el del mismo registro "f" o en "W".
Esta instruccin tiene la finalidad de mover el contenido del registro "f" en el mismo registro
"f" o hacia el registro "W". Por ejemplo si aplicamos el comando MOVF f,0 tan solo mueve el contenido del registro que se encuentra en "f" hacia el acumulador "W"; por otro lado si aplicamos el comando MOVF f,1 se mueve en contenido del registro "f" en el mismo registro "f". En este ltimo punto, usted podra preguntarse para qu se necesita mover el contenido de un registro y volverlo a colocar dentro del mismo registro? La respuesta estriba en que cuando se ejecuta esta instruccin cambia una bandera dentro de la arquitectura del microcontrolador. Estas banderas sern explicadas posteriormente.
Set de instrucciones
No. Instruccin 12 NOP Descripcin No opera Observacin Esta instruccin no ejecuta ningn tipo de accin.
La instruccin NOP no ejecuta ninguna tarea especfica, pero consume 4 ciclos de reloj completos.
Cierta utilidad que le hemos encontrado a esta instruccin especficamente esta referida a las rutinas de tiempo. Algunas veces hemos creado algunas rutinas de tiempo que requieren exactitud en la temporizacion y en algunos casos cuando estn siendo ejecutadas le suele faltar algunos ciclos de reloj adicionales para que sean exactas; es all en donde debemos agregar algunas instrucciones NOP.
Observacin la Esta instruccin rota a la izquierda todos los bits de un registro "f".
Esta Instruccin esta muy relacionada con la bandera denominada Carry perteneciente al registro
STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc.
No. Instruccin
14 RRF f,d
Observacin la Esta instruccin rota a la Derecha todos los bits de un registro "f".
Al igual que la instruccin anterior, esta muy relacionada con la bandera denominada Carry
perteneciente al registro STATUS. La bandera Carry esta afectada directamente por varias instrucciones de las cuales podemos mencionar: Rotacin a la izquierda, Rotacin a la derecha, Suma, Resta, etc. Posteriormente explicaremos las banderas.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin 15 SUBWF f,d Descripcin Resta W de f Observacin Resta el contenido del registro "W" del registro "f"
El microcontrolador PIC16F84 puede restar el contenido del registro "W" del registro "f"; por
ejemplo, supongamos que "W = 4 " y Dato1 = 6; cuando se aplica el comando SUBWF Dato1,0 se resta 6-4 y el resultado es almacenado en el acumulador "W". Por otro lado si se aplica el comando SUBWF Dato1,1 se resta 6-4 y el resultado es colocado en el registro Dato1.
Descripcin Resta W de k
Al igual que la instruccin anterior, este resta el contenido del registro "W" de un literal "k" donde "k" es una palabra cualquiera con un valor entre 0 y 255. El resultado de la operacin es colocado directamente en el registro "W".
Observacin de Se intercambian los 4 bits mas altos con los 4 bits mas bajos
Este comando tan solo intercambia los cuatro bits mas altos con los cuatro bits mas bajos. Supongamos por ejemplo que tenemos el siguiente nmero binario almacenado en "f = 00001111"; cuando es aplicado el comando SWAPF f,0 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma: 11110000; el resultado es colocado en el acumulador "W". Por otro lado cuando es aplicado el comando SWAPF f,1 el microcontrolador intercambia los bits altos por los bits bajos de la siguiente forma: 11110000; el resultado es colocado en el acumulador "f".
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin 17 XORWF f,d Descripcin Observacin Operacin lgica Este comando aplica la operacin lgica de OR Exclusivo a dos OR exclusivo registros. ENTRADA A 0 0 1 1 B 0 1 0 1 RESULTAD O Y = A xor B 0 1 1 0
Descripcin
Set de instrucciones
No. Instruccin 18 BCF f,b Descripcin Observacin Coloca en Cero un Este comando pone en Cero el Bit "b" del registro "f" determinado Bit
Para este tipo de instrucciones pensamos que el mejor ejemplo que podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BCF f,b el microcontrolador pone en cero el Bit "b" del registro "f".
Descripcin Observacin Coloca en uno Este comando Pone en 1 el Bit "b" del registro "f" determinado Bit
Al igual que la instruccin anterior pensamos que el mejor ejemplo que podemos sealar esta basado visualmente en un nmero binario. Cuando se aplica el comando BSF f,b el microcontrolador pone en 1 el Bit "b" del registro "f"
Set de instrucciones
No. Instruccin 20 BTFSC f,b Descripcin Observacin Prueba el Bit b del Este comando prueba el Bit "b" del registro "f" y salta una linea registro f si esta en 0.
Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo:
Supongamos que tenemos nuestro registro denominado Memory = 01010101; cuando se le aplica el comando BTFSC Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a cero. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 0 el microcontrolador ejecuta la instruccin nmero 3; pero en el caso de que el Bit No. 2 sea diferente de 0, el microcontrolador ejecuta la instruccin 2.
No. Instruccin 21 BTFSS f,b Descripcin Observacin Prueba el Bit b del Este comando prueba el Bit "b" del registro "f" y salta una linea registro f si esta en 1.
Esta instruccin esta estrechamente relacionada con las dos siguientes instrucciones dentro del programa. Veamos el siguiente ejemplo:
Supongamos que tenemos nuestro registro denominado Memory = 01010101; cuando se le aplica el comando BTFSS Memory,2 el microcontrolador prueba el Bit No. 2 del registro Memory para ver si es igual a 1. En esta comprobacin pueden suceder dos cosas: Si el Bit No. 2 es igual a 1 el microcontrolador ejecuta la Instruccin numero 3; pero en el caso de que el Bit No. 2 sea diferente de 1, el microcontrolador ejecuta la Instruccin 2
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin 22 ADDLW k Descripcin Suma de nmeros Observacin dos Este comando suma un valor de un literal al contenido del registro "W"
Este comando es muy sencillo ya que tan solo cuando es aplicado, toma el contenido del registro y se lo suma al registro "W"; por ejemplo: Supongamos que W = 23 y que tenemos un literal k = 23; cuando se aplica el comando, el resultado es la suma del literal mas el contenido del registro "W", el resultado final queda almacenado en el registro "W".
Descripcin
Para entender esta instruccin, primera debemos aclarar que es una Subrutina. La subrutina consiste en un grupo de instrucciones que se encuentran aisladas del programa principal y que se ejecutan cuando son llamadas por un nombre asignado por el programador. Las subrrutinas suelen ser pequeos programas, por ejemplo para obtener retardos de tiempo ( Subrrutina de tiempo ); pero principalmente podemos decir tambin que una Subrrutina es un pequeo programa que se utiliza muchas veces en cualquier parte del programa. Las ventajas que ofrecen las subrrutinas estan referida al ahorro considerable de la memoria de programa y su fcil mantenimiento. A la subrrutina se le podr asignar cualquier nombre, y este es el nombre utilizado en la Instruccin CALL como parmetro. La instruccin CALL k esta estrechamente relacionada con la instruccin denominada RETURN y RETLW ( Ver las siguientes dos Instrucciones ).
No. Instruccin 31 RETURN Descripcin Observacin Retorno desde una subrrutina
La Instruccin RETURN es un comando que no podr estar separado cuando se crea una subrrutina. El procedimiento es prcticamente mecnico ya que usted deber crear la subrrutina y darle el nombre para poder ser llamada; al final de la subrrutina se debe escribir la instruccin denominada RETURN. Entonces podemos concluir que una subrrutina esta constituida por un conjunto de instrucciones demarcadas por un nombre que se encuentra al inicio y la instruccin RETURN que se encuentra al final demarcando el final de la subrrutina
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Set de instrucciones
No. Instruccin 30 RETLW k Descripcin Observacin Retorno de subrrutina y carga a "W" con el contenido del literal "k"
El comando
RETLW k se comporta igual al comando RETURN con la diferencia de que esta carga un Valor "k" en el registro "W" cuando finaliza la subrrutina. El rango de este valor "k" esta comprendido entre 0 y 255.
Descripcin
Esta instruccin borra el contador del WATCHDOG TIMER (perro guardin), en realidad es un contador interno que va desde 0 hasta 255 y que podr ser activado o desactivado en la configuracin del sistema cuando el microcontrolador va a ser grabado. El tiempo de conteo para este contador tambin podr ser prolongado por un preescalador segn las necesidades del usuario. La instruccin CLRWDT borra el contenido del contador del perro guardin. Si usted activa el Watchdog Timer, usted deber asegurarse de ejecutar el comando CLRWDT antes de que el contador finalice el conteo para que el microcontrolador no se reinicialice automticamente. Existen casos en donde los microcontroladores se confunden y queda bloqueado dejando automticamente de hacer la tarea encomendada. Cuando sucede esto no existir el comando CLRWDT y en consecuencia se reinicializara el microcntrolador. Esta instruccin es muy ventajosa cuando se tienen instalados los sistemas en lugares muy remotos y no puede enviarse a una persona para reinicializar el microcontrolador.
Set de instrucciones
No. Instruccin
26 GOTO k
Descripcin
Esta es una de las instruccin mas fcil de entender y consiste tan solo en un salto a
otra parte del programa. Cuando se ejecuta el comando GOTO k, el microcontrolador salta a la direccin "k", donde "k" es una etiqueta cualquiera; por ejemplo:
SALTO
Descripcin
Esta instruccin le servir para tomar el contenido de un literal y cargarlo en el registro "W"; donde "k" en una palabra cualquiera que tiene asignado un valor entre 0 y 255.
Descripcin
Esta Instruccin
es parecida a la Instruccin RETURN, pero a diferencia de esta, RETFIE es utilizada para volver de una subrrutina de interrupcin
Set de instrucciones
No. Instruccin 32 SLEEP Descripcin Observacin Entra en modo de reposo.
Esta Instruccin le da la orden al microcontrolador de quedar en modo suspendido, en este modo el PIC no ejecuta ninguna
instruccin hasta que sea nuevamente reinicializado (RESET) comenzando nuevamente el programa. En este modo el consumo de energa del PIC es mnimo. Durante este modo el contador del WATCHDOG TIMER sigue trabajando y si este esta activado el PIC se reseteara por este medio.
Memoria
Special Function Registers (SFR) Banco 1 General Purpose Registers (GPR) Banco 0
SPECIAL FUNCTION REGISTERS: The Special Function Registers (FSR) are used by
the CPU and Peripheral functions to control the device operation. These registers are static RAM.
STATUS REGISTER
The STATUS register contains the Arithmetic status of the ALU, the RESET status and the bank select bit for data memory.
OPTION REGISTER
The OPTION register is a readable and writable register which contains various control bits to configure the TMR0/WDT prescaler, the external INT interrupt, TMR0, and the weak pull-ups on PORTB.
INTCON REGISTER
The INTCON register is a readable and writable register that contains the various enable bits for all interrupt sources.
The interrupt-on-change feature is recommended for wake-up on key depression operation and operations where PORTB is only used for the interrupt-on-change feature. Polling of PORTB is not recommended while using the interrupt-on-change feature
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
TIMER0 MODULE The Timer0 module timer/counter has the following features: 8-bit timer/counter Readable and writable Internal or external clock select Edge select for external clock 8-bit software programmable prescaler Interrupt-on-overflow from FFh to 00h Additional information on timer modules is available in the PICmicro Mid-Range Reference Manual (DS33023).
TIMER0 OPERATION
Timer0 can operate as a timer or as a counter. Timer mode is selected by clearing bit T0CS (OPTION_REG<5>). In Timer mode, the Timer0 module will increment every instruction cycle (without prescaler). If the TMR0 register is written, the increment is inhibited for the following two instruction cycles. The user can work around this by writing an adjusted value to the TMR0 register. Counter mode is selected by setting bit T0CS (OPTION_REG<5>). In Counter mode, Timer0 will increment, either on every rising or falling edge of pin RA4/T0CKI. The incrementing edge is determined by the Timer0 Source Edge Select bit, T0SE (OPTION_REG<4>). Clearing bit T0SE selects the rising edge. Restrictions on the external clock input are discussed below.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
When an external clock input is used for Timer0, it must meet certain requirements. The requirements ensure the external clock can be synchronized with the internal phase clock (TOSC). Also, there is a delay in the actual incrementing of Timer0 after synchronization.
Additional information on external clock requirements is available in the PICmicro Mid-Range Reference Manual, (DS33023)
SPECIAL FEATURES OF THE CPU What sets a microcontroller apart from other processors are special circuits to deal with the needs of real time applications. The PIC16F84A has a host of such features intended to maximize system reliability, minimize cost through elimination of external components, provide power saving operating modes and offer code protection. These features are: OSC Selection RESET - Power-on Reset (POR) - Power-up Timer (PWRT) - Oscillator Start-up Timer (OST) Interrupts Watchdog Timer (WDT) SLEEP Code Protection ID Locations In-Circuit Serial Programming (ICSP)
Configuration Bits The configuration bits can be programmed (read as '0'), or left unprogrammed (read as '1'), to select various device configurations. These bits are mapped in program memory location 2007h. Address 2007h is beyond the user program memory space and it belongs to the special test/configuration memory space (2000h - 3FFFh). This space can only be accessed during programming.
Existen una serie de instrucciones que son para el ensamblador y nos hacen la tarea de programacin mas sencilla y mas legible. EQU: Un ejemplo de esto son las etiquetas, podemos poner un nombre a un registro de memoria, esto se hace mediante la instruccin EQU. Por ejemplo: VARIABLE1 EQU 0CH A partir de ahora en lugar de escribir 0CH podemos escribir VARIABLE1 Con EQU tambin podemos poner nombre a constantes de la misma forma. #DEFINE: Otra instruccin para el ensamblador que usaremos ser la instruccin #DEFINE. Es parecido a EQU, solo que aqu no ponemos etiquetas a un registro, podemos ponerla a una instruccin entera, Por ejemplo: #DEFINE BANCO1 BSF STATUS,5 #DEFINE BANCO0 BCF STATUS,5
A partir de ahora, cuando escribamos BANCO1 se pondr a "1" el bit de seleccin de banco y pasaremos al banco 1, al escribir BANCO0 pasaremos al banco 0 ORG: Indica al ensamblador la direccin (de memoria de programa) donde se guardar la instruccin que vaya a continuacin. Por ejemplo: ORG 00H CLRF VARIABLE1 La instruccin CLRF est en la direccin de memoria de programa 00H (ser la primera instruccin en ser ejecutada por el pic) END: Se escribe al final del programa para indicar que ya ha acabado. (es obligatorio, si no da error).
Al principio van los EQU y los #DEFINE, despus comenzamos con el programa. El programa se escribe en cuatro columnas separadas por tabuladores:
direcciones de programa En la segunda columna se ponen las instrucciones (BSF, CLRF, BTFSC... etc.) En la tercera columna se ponen Los registros o parmetros a los que afecta la instruccin. En la cuarta columna se ponen los comentarios que creas pertinentes (cuantos mas mejor) seguidos de un punto y coma.
Ing. Marco Antonio Reyes Gonzlez, Depto. de Ingria. Elctrica y Electrnica
Ejemplo de programa bien ordenado: ;************************************ ;* El siguiente programa configura * ;* RA1 como entrada y RA0 como ;* salida y hace que la salida (RA0) * ;* sea la inversa de la entrada * ;* (RA1) ;************************************
;Empezamos siempre a escribir en esta direccin ;Pasamos al banco 1 para hacer algunas ;configuraciones ;Configuramos RA0 como salida ;Configuramos RA1 como entrada ;Volvemos al banco 0 ;Comprueba la entrada (RA1), si es "0" se salta la ;siguiente instruccin ;si la entrada (RA1) es "1" va a ESUNO ;Pone a "1" la salida RA0. Ejecuta esta instruccin ;porque la entrada RA1 era "0" ;Vuelve otra vez a comprobar el estado de la ;entrada RA1 ;Pone a "0" la salida RA0. Ejecuta esta instruccin ;porque la entrada RA1 era "1" ;Vuelve otra vez a comprobar el estado de la ;entrada RA1 ;Indica final del programa
GOTO
ESUNO GOTO END
INICIO
BCF PORTA,0 INICIO