Sie sind auf Seite 1von 4

Pg. # 1 La memoria de los microcontroladores se dividen en dos: Lineal y por pgina.

La memoria de un microcontroladores es: El lugar donde estn almacenados el programa que se ejecuta y los datos o variables utilizados por el programa. La memoria: es un conjunto de celdas o localizadores que se identifican por su direccin. En cada celda se almacena una palabra. Una palabra: es la unidad lgica de informacin almacenad en una celda de la memoria, se utilizan palabras de 1, 8, 12, 14,16 bits de longitud. La de 8 bits es un octeto

Pg. # 2 Por ejemplo, en una memoria de N = 1 kB se necesitan n = 10 bits para formar la direccin de una celda cualquiera pues 2^10=1024, que es la cantidad de celdas q componen la memoria. La direcciones posibles son D = 0, 1, 2, , 1023. Expresando estos nmeros en hexadecimal se tiene 3FFh.Memoria: N= 1 kb = 1024 bytes // N=2^n 1024 =2^n resol log 1024 = log 2^n log 1024 = n (log 2) n= log 1024 / log 2 = 10; n=10 bits = 1,25 byte Los SI son: kilo, k, 10^3 // Mega, M, 10^6// Giga, G, 10^9 // Tera, T, 10^12. Los CEI son: Kibi, Ki, 10^12 // Mebi, Mi, 2^10=1024 // Gibi, Gi, 2^30 // Tebi, Ti, 2^40. Organizacin lgica de memoria. Estos se organiza como: Lineal o por bloques llamados paginas. En las lineal las direcciones de las celdas son numero binarios consecutivos, cada celda se identifica por su direccin lineal (D) formado por un numero binario nico. Una pagina: Es una porcin de memoria de tamao fijo, las paginas estn nica a

La cantidad de celdas de la memoria define su Capacidad. La capacidad o tamao de la memoria se mide en palabras, ya sean bits, byte o palabras de 12, 14 o mas bits. CEI: Comisin electrnica Internacional. La direccin es importante solo cuando se trata de grandes cantidades de memoria, La direccin de una celda es el ente que identifica la celda en la memoria. La forma mas simple de identificar es asignar un numero entero consecutivo, los valores de las direcciones en una memoria de N celdas: D = 0, 1, 2. 3 . . . (N 1), la cantidad de n bits necesarios para forma la direccin de la celda N = 2^n. N=numero de celda // n=bits

Pg #3 Continuacin de la otra sin solaparse. Cada pagina puede identificarse por un numero consecutivo denominado Nmero de pagina. Dentro de una pagina las celdas se identifican Por su posicin respecto al comienza de la pagina llamada Desplazamiento. El conjunto de npag. y el desplazamiento desp. Constituye la direccin lgica (Dlog) de la celda en el esquema paginado de la memoria, la direccin lgica de una celda se presenta de la siguientes forma: Dlog = npag : desp La direccin lineal se puede obtener de la direccin lgica, multiplicando el numero de la pagina x su tamao (tpag) y + el resultado al desplazamiento: D=mpag X tpag + desp.

Pg. # 4 Por ejemplo en la figura 2 anterior en una memoria organizada de 256 B (100h bytes) una celda que se encuentra en la pagina 2 con desplazamiento A5h, tiene una direccin lineal D=2 x 100h + A5h = 2A5h. El tamao de la pagina es tpag = 2^k donde K es el numero de bits necesario para representar cualquier desplazamiento dentro de la pagina, como ejemplo la siguiente figura. Tipos de memoria. Esta no es voltil y bsicamente de solo lectura. Rom: (read only memory) se graba durante el proceso de fabricacin del dispositivo y no puede ser alterado. Esta es la ms barata, siempre que el dispositivo sea suficientemente alto y rentable. Ram: (Random acces memory)Memoria de lectura y escritura. Hay dos variantes: la esttica y dinmica, en la primera la informacin permanece estable, en las segunda se requiere refrescamiento peridico de la informacin almacenada.

Pg. # 9 3) Cuando se completa la operacin de lectura el bit RD se pone automticamente a cero, el bit EEIF del registro PIR2 se pone a 1, fin de la operacin. 4) El dato contenido en la celda leda puede tomarse de los registros PMDATH. Programa que ilustra la memoria de programa de un controlador PIC16F673 as: Bsf STATUS, RP1 ; seleccionar el banco 2 // bcf STATUS, RP0 // Movf DIR_H, W ;Escribir la direccin en // movwf EEADRH ; EEADRH:EEADR // Movf DIR_L, W // movwf EEADR // bsf STATUS, RP0 ;Seleccionar el banco 3 // bsf EECON1, EEPGD ; Seleccionar memoria de programas // bsf EECON1, RD// nop ;secuencia requerida // nop // bcf STATUS RP0 ; selecciona el banco 2// movf EEDATH, W ;kleer el dato // movwf DATO_H // movf EEDATA, W movwf DATO_L Medida de seguridad que evita borrados accidentales: Al finalizar la escritura el bit WR de EECON1 se pone automticamente a 0 y el bit EEIF del SFR PIR2 se pone a 1, indicando que a finalizado la escritura. La memoria RAM de datos. Esta organizada en palabras de 8 bits, esta se encuentra pagina aunque a las paginas de memoria de datos se les denomina BANCOS. (Bank) 128 localizaciones de memoria. Cuyas direcciones van de 00h a 7fh dentro de cada banco. Todos tienen al menos 2 bancos es decir hasta 256 registros, alguno pueden tener hasta 4 bancos con un total de 512 registro

Pg. # 10 Los registros de la memoria de datos de clasifican en: Registros de funciones especiales (SFR: special funtion registers) A travs de los cuales se controlan el microcontrolador y se accede a sus diferentes perifricos, se programa sus funciones. Registros de propsito general (GPR: General purpose registers). Constituye la memoria de datos propiamente dicha, disponible para el libre uso del usuario en sus programas. Estas varan segn el modelo del microcontrolador PIC Direccionamiento de la memoria de datos. Para formar la direccin de una dato almacenado en la memoria se necesitan 9 bits de direccin. Como la memoria esta paginada, los bits 8 y 7 dan el nmero de banco, y el 6 y 0 dan la direccin dentro del banco (desplazamiento). Los dos bits que identifica el banco los aporta STATUS mientras que el desplazamiento puede estar en la instruccin o en FSR (Direccionamiento indirecto).

Pg. # 11 Todos los registros de la memoria de datos se accede utilizando el direccionamiento directo o indirecto. Direccionamiento directo: El banco que se trabaja se selecciona con RP1 y RP0 que son los 6 y 5 de los registros especiales de la funcin STATUS. Si el microcontrolador dispone solo de dos bancos entonces basta con manipular el bits RP0, pues RP1 se ignora. Direccionamiento Indirecto: Los 8 bits menos significativos se toman del registro de funciones especiales FSR (File select Register) y el noveno bits es el IRP es decir el bit 7 del registro STATUS. En este caso el desplazamiento de 8 bits esta en el registro FSR. En los que tiene solo 2 bancos, el bits IRP debe de mantenerse en cero en los de 4 bancos el IRP = 0 selecciona los bancos 0 y 1 mientras qie el IRP = 1, selecciona los bancos 2 y 3, este esta paginado de 2 bancos de 256 direcciones, en lugar de los 4 bancos de 128 direcciones.

Pg. # 12 Registro de funciones especiales. SFR son registros situados en la memoria de datos que tiene funciones especficas informativas o de control. La funcin esta asociada al ncleo del microcontrolador. STATUS seleccin del banco de memoria indicadores relacionados con las operaciones aritmticas y lgicas. Desbordamiento del perro guardin // OPTION Valor del pre-divisor. Flancos de los pulsos del reloj. // PCON Indicadores de error en paridad de memoria. // PCLATH, PCL Contador de programa // FSR Direccionamiento indirecto // INTCON PIR1, PIE1, PIR2, PIE2 Interrupciones // PORTA TRISA PORTB, TRISB, PORTC Puertos paralelos // TMR0, OPTION, INTCON Timer0 // TMRIH, TMR1L, T1CON, PIR1 Timer1 Tmr2, pr2 timer2 // CCPRXH, CCPRXL, CCPXCON mdulos CCPx ( x=1,2,3). El registro status. Contiene los bits de estado asociados a las operaciones aritmticas y los bits de seleccin del banco de memoria de datos que se va a utilizar. Contiene los bits indicadores del perro guardin y el modo de bajo consumo, contiene los bits los que se selecciona en e banco de la memoria de datos. IRP: Seleccin del banco de memoria de datos en direccionamiento indirecto. Con este bit se selecciona el banco de memoria de datos en el direccionamiento indirecto, 0: bancos 0 y 1, 1: bancos 2 y 3

Lenguaje o cdigo de maquina:es constituidos por cdigos binarios de las instrucciones que puede ejecutar el microcontrolador,es por tanto un lenguaje binario de 1 y 0,cada instruccin de un programa esta formada por un grupo de num. Binarios. Para reducir el nivel de dificultad de la programacin a este bajo nivel, se crearon los lenguajes ensambladores,en los cuales las instrucciones que en el lenguaje maquina se representan por grupos de bits son representados por: Simbolos mnemotcnicos. EJEMPLO: La instruccin poner a 0 en el registro W en el lenguaje de maquina se representa por la palabra: 00 0001 0xxx xxxx donde x puede ser indistatamente 0 o 1.Solucion: En lenguaje ensamblador esta operacin se representa con el mnemotcnico clrw(clear w register).Los PIC de gama media tienen un lenguaje ensamblador compuesto por 35 instrucciones. Ensamblaje: es la traduccin de un lenguaje ensamblador al lenguaje mquina para poder ejecutarlo en el microcontrolador, y lo realiza un programa denominado Ensamblador. El programa original escrito en lenguaje ensamblador se llama: programa fuente y el resultado del ensamblaje del ensamblaje se llama: Programa objeto.
Al programador del microcontrolador

Pag #18
Al programador del microcontrolador

Pag #19 - Un dato (de 8 bits) ; - La direccin (de 3 bits) de un bit de un registro cualquiera de la memoria de datos; - La indicacin (con 1 bit) de un registro cualquiera de la memoria de datos; - La indicacin (de 1 bit) de cual es el destino del resultado de la instruccin: si es el registro W o un registro de la memoria de datos. Modos de direccionar los datos: los modos de direccionar los datos se refieren a las distintas formas en que desde una instruccin se puede hacer referencia a un dato. Hay 2 ubicaciones para un dato: La propia instruccin o la memoria de datos. El registro que almacena direcciones de datos se le llama: Registro de Direcciones de Datos (RDD).

Pag #20

En este, el ensamblador realiza una codificacin intermedia del programa fuente y es el enlazador que genera el programa objeto en lenguaje mquina. -Estructuras de las instrucciones: en principio todas las instrucciones de cualquier microprocesador tienen 2 componentes: El cdigo de operacin y los opernados. En el cdigo de operacin: esta codificada ka orden para que el dispositivo ejecute la accin indicada por la instruccin. Los operandos son los datos necesarios para realizar esa accin y en general pueden representar direcciones o datos. En los microcontroladores PIC de gama media, un operando pueden ser: - Una direccin (de 7 bits) en la memoria de datos; - Una direccin (de 11 bits) en la memoria de programa
Pg. # 26 Pg. # 27 Pg. # 28

Pg. # 25

Pg. # 5 En la fabricacin de la memoria se utiliza diferente tecnologa: Rom (read only memory), EPROM (erasable programmable ROM), OTP (One time programable) y Flash. Las de datos de solo lecura, no hace falta que la informacin permanesca en ella, como: RAM (random acces memory), EEPROM (Electrically Erasable programable read only memory). En los microcontroladores PIC, las letras CR en el nombre del dispositivo indica que la memoria es ROM, EJEMPLOS: PIC16CR65, PIC16CR73. EPROM y OTP: Son similares pero se diferencia en su encapsulado, las EPROM tienen una ventana de cristal de cuarzo para borrar masivamente con luz ultravioleta, el otro no. En los PIC la letra C indica que es de este tipo de memoria: PIC16C72A, PIC16C74B. EEPROM: Memoria no voltil de lectura y escritura Las celdas pueden ser escritas individualmente sin una operacin previa de borrado, se reprograma en numero infinito. FLASH: Se puede leer y escribir celdas individualmente, hay que borrar primero la informacin, el borrado se realiza por bloque de celdas de memoria, esta se identifica con la letra F como ejemplo PIC16F873. La memoria en los microcontroladores PIC de gama media. Se organizan segn la arquitectura harvard, en dos espacio independientes: Una para la memoria de programas y otra para la de datos. La de programa son: ROM, OTP, EPROM o FLASH. La memoria de datos esta realizada sobre la memoria RAM esttica, voltil.

Pg. # 6 Memoria disponible en PIC de gama media: PIC18F83, memoria de programa 512, ram 36, EEPROM 64 // PIC16F84/84, 1024, 68, 64 // PIC16F8873/874, 4096, 192, 128. La memoria de programa. Se organiza en paginas, en los de gama media pueden haber hasta 4 paginas de 2K de palabras cada una, la capacidad de memoria puede llegar hacer de 8K y las palabras de 14 bits. En la pagina 0 la direccin 0h este reservada para el reset mientras que el vector de interrupciones 4h se reserva a esto. Direccionamiento de la memoria de programa. El contador del programa (PC: Program counter) es el registro del microcontrolador cuya funcin es diseccionar la memoria de programa. En gama media el PC es de 13 bits de modo que puede direccional el espacio de 8k palabras de la memoria de programa. El PC se relaciona con dos registros de funciones especiales situados en la memoria de datos: PCLATH (PC match high) y PCL (PC low) los 8 bits menos significativos constituyen el registro PCL. Los 5 bits mas significativos del PC o PCH no se pueden leer, pero se pueden modificar a travs del PCLATH, este nunca se actualiza desde el PC y no se conoce el valor de los 5 bits.

Pg. # 7 El PC se incrementa en 1 con cada instruccin que se ejecute, execto con aquellos que modifica el contenido. Las instrucciones de salto (goto), llamadas a subrutinas (call) y retornos (return, retfie, retlw) y aquellas cuyos destino es el PCL modifican el contenido del PC y los registros PCLATH y PCL son los siguientes: Si se ejecuta una instruccin cuyo destino es el PCI, los 8 bits menos significativos se cargan con el resultado de la instruccin, los 5 bits ms significativos del pc se cargan con los 5 bits de PCLATH. Si se ejecuta una instruccin goto o call, los 11 bits de menos peso del PC son aportados por la instruccin, mientras que los 2 bits mas significativos del PC se cargan desde los bits 4 y 3 del registro PCLATH.

Pg. # 8

Se ejecuta una instruccin de retorno desde una subrutina los 13 bits del pc se cargan desde los topes de la pila, no interviene el PCLATH.

Lectura y escritura de la memoria de programa. Los de memoria Flash permiten escribir usando algunos registros, no existen instrucciones para leer la memoria de programa y son de gama media. PMDATH:PMDATA o EEDATH:EEDATA se lee o escribe el dato de 14 bits // PMADRH:PMADR o EEADRH:EEADR se ponen los 13 bits de la direccin del dato y los registros PMCON1 o EECON1 Y EECON2 son los registros de control. El procedimiento para leer la memoria es : 1) Coloca la direccin de la celda en los registros de funciones especiales PMADRH. En los PIC que permite lectura o escritura hay que pones el big EEPGD del registro EECON1 a 1, para indicar que se cadera a la memoria del programa y no a la EEPROM de datos. 2) Pone el bit RD del registro PCON1 a 1. Con esto se inicia la lectura de la celda de programa, y tiene lugar en dos ciclos de instrucciones, en los cuales aunque PC se incremente en 2 no se busca las instrucciones, se pone el bit RD a 1 aunque no se vaya a ejecutar.

Pg., # 13 RP1, RP0: Seleccin del banco de memoria de datos en direccionamiento directo. Con estos bits se selecciona el banco de memoria de datos 00: banco 0, 01: Banco 1; 10: banco 2 y 11: banco 3. TO#: Indicador del desbordamiento del perro guardin WDT. Este bit se pone a cero. Se pone a 1 con un reset por encendido o con la instruccin clrwdt y sleep PD#: Modo bajo consumo (power down), este bit se pone a cero con la instruccin sleep. Se pone a 1 con el encendido y con la instruccin clwdt. Z: Indicador de cero, se pone a 1 si la operacin aritmtica es cero. Caso contrario cero. DC: Indicador de acarreo auxiliar. Se pone a 1 cuando hay acarreo de bit 3 al bit 4 en una operacin de suma binaria y cero si no lo hay. C: Indicador de acarreo, se pone a 1 cuando lo hay del bit 7 al 8 en una suma binaria y cero si no hay acarreo.

Pg. #14

RBPU#: PULL-UP interno del puerto B. Un 1 en este bit lo inhabilita, con el cero se habilita la puesta individual de los pull-up para cada bit del puerto. INTEDG: Flanco de la interrupcin externa. Con un 1, se produce el flanco de subida, caso que es cero se produce el flanco de cada. TOCS: Fuente del reloj de Timer0, con estos bits se selecciona la fuente de los pulsos del reloj del Timer0, un 1 selecciona como fuente los pulsos que lleguen por el Terminal T0CK1 y un 0 selecciona como fuente en reloj interno. TOSE: Flanco del reloj de Timer0, un 1 hace que se incremente en los flancos de cada de los pulso del reloj y un cero hace que se incremente el de subida. PSA: Asignacin de pre-divisor. Un 1 asigna el pre-divisor al WDT y un cero a Timer0 PS2, PS1, PS0: Valor del pre-divisor. La memoria EEPROM de datos Muchos de los de gama media que utilizan los programas FLASH, ofrecen tambin hasta un mximo de 256 bytes de memoria no voltil EEPROM de datos.

El registro OPTION Denominado OCTION_REG controla funciones relacionadas con la habilitacin o no del pull-up interno del puerto b, la seleccin del valor pre-divisor del Timer0 y WDT

Pg. # 15 Esta se encuentra separada de la memoria RAM de datos y se accede a ella a travs de algunos registros de funciones especiales, los mismos de la FLASH, los cuales son: EEADR contiene la direccin del dato (8 bits) // EEDATA contiene el dato (8 bits) // EECON1, EECON2 control, el procedimiento para leer el dato es: Colocar la direccin de la celda de memoria EEADR. Poner el bit EEPGD del registro EECON1 a 0, para indicar que se accede a la memoria EEPROM de datos y no la del programa. Pones el bit RD del registro EECON1 a 1. Con esto se inicia la lectura. El dato esta disponible en el registro EEDATA en el siguiente ciclo de instruccin Al complementarse la operacin de lectura, el bit RD se pone en automticamente a 0. el bit EEIF del registro PIR2 se pone a 1, indicando el fin de la operacin. A continuacin se muestra el listado de un segmento de programa que ilustra el procedimiento recomendado para leer la memoria EEPROM: Bsf STATUS, RP1 ;seleccionar el banco 2 // bcf STATUS, RP0 // movf DIREC,W ; la direccin de la EEPROM esta en DIREC // movwf EEADR ; y se coloca en EEADR // bsf STATUS, RP0; seleccina el banco 3 // bcf EECON1, EEPGD; seleccionar memoria de datos // bsf EECON1, RD; comenzar la lectura // bcf STATUS, RP0; seleccionar el banco 1 // movf EEDATA, W; en EEDATA moverlo a W.

Pg. # 16

Pg. # 21 La Pila: es una estructura de datos con organizacin LIFO(Last In First Out): Lo ultimo que entra en la pila es lo primero que sale. El SP (Stack Pointer) es el registro o puntero de pila, que contiene siempre la direccin del tope de la pila. Estrucutra general de una pila en un microprocesador o microcontrolador: La pila se ecnuentra en una zona de la memoria RAM , el puntero de la pila (registro SP), apunta siempre al tope de la pila. El tope de la pila es variable pues la pila crece, DIR1, DIR2 y DIR3, son direcciones almacenadas en la pila

Pg. # 22

Pg. # 23 Repertorio de instrucciones de los PIC de gama media:

El modelo de programacin de los PIC de gama media consta del registro de trabajo W (Working register), q hace la funcin del tradicional acumulador de los microporocesadores y de los registros de la memoria de datos, ya sean de funciones especiales(SFR:Special Function Registers) o de propsito general (GPR: General Purpose Register)

4. Se puede acceder individualmente a cualquier bit de cualquier registro de la memoria de datos del microcontrolador. 5. No es posible hacer transferencia de memoria a memoria en una nica instruccin, hay que usar el registro W como puente.

Este mecanismo de llamada-retorno funciona muy bien gracias a la organizacin LIFO, esto hace posible en anidamiento de subrutinas e interrupciones, la organizacin LIFO de la pila hace posible el anidamiento de subrutinas, es decir la llamada de una subrutina hacia otra subrutina.

Pg. # 29

Pg. # 30

Desde el punto de vista del programador, las caractersticas mas relevantes del repertorio de instrucciones de los microcontroladores PIC de gama media son: 1. Todas las instrucciones son de gama media, osea de 14 bits. 2. La mayora de instrucciones son ejecutables en un solo ciclo de instruccin que dura 4 periodos del oscilador principal. 3. Cualquier registro del microcontrolador puede ser fuente o destino en operaciones de transferencia de datos
Pg. # 31

Pg. # 32

Pg. # 33

Pg. # 34

Pg. # 35

Pg. # 36

Directiva #include. Esta directiva inserta un texto completo del archivo especificado, en la posicion que ocupa la directiva dentro del programa fuente. Comunmente se usa para insertar en el prog fuente el arcnivo de definicion(.inc) que contiene las definiciones de los nombres de los registros de funciones especiales y bits del mp previamente declarado en las directivas list o processor Directiva org Sintaxis: [etiqueta]org expresion. Esta directiva asigna al seudocontador de programa del ensamblador el val de la expresion es decir hace que las instrucciones que siguen a la directiva sean ensambladas a partir de la dir. Dada por el valor de la expresion. Directiva end Sintaxis: end. Se indica al ensamblador que finalice el ensamblaje del prog fuente. La directiva end ocupa la ultima linea del programa fuente. Directivas utilizadas en la codificacion relocalizable Con estas directivas se puede:

1.Inidcar simbolicamente el inicio de bloques de instrucciones o datos 2.Reservar espacio en la memoria de datos para las var. 1. indicar el alcance de los simbolos . 2. seleccionar la pagaina de la memoria del programa o el banco de

registros. Directiva code Sintaxis: [etiqueta]code [direccion_ROM] Esta directiva declara el comienzo de una seccion o grupo de instrucciones del programa fuente que dara lugar a un bloque de codigo relocalizable o absoluto. Directiva udata, udata_shr y res Las directivas udata(comenzar seccion de datos no iniciados) y udata_shr(comenzar una seccion compartida de datos no iniciados) tiene las sig sintaxis: [etiqueta]udata [direccion_RAM] [etiqueta]udata_shr [direccion_RAM]

Pg. # 37 permiten declarara el inicio de secciones de datos. La diferencia entre directivas es la sig: udata se usa para secciones de registro que estan en un unico banco de registros de la memoria de datos. Udata_shr se sua para declarar secciones que compaten mas de un banco de memoria. Etiquieta res( reserva memoria de datos) [etiqueta]res cantidad_memoria. Hace avananzar al contador lo localizaciones en un valor igual al parametro cantidad_memoria. Sirve para separar espacio de memoria de datos , sin asignar un valor inicial al espacio separado. Directivas global extern La sintaxis es Global simbolo[,simbo lo] Global simbolo[,simbolo] Global(exporta un simbolo) Extern(declara un simbolo definido externamente) Directivas pagesel, banksel, bankisel Pagesel(seleccin de pag. De memoria) Banksel(seleccin directa de banco de registros)

Pg. # 38 Bankisel(seleccin indirecta del banco de registros) Pagesel etiqueta Bankesel etiqueta Bankisel etiqueta Pagesel produce cod. Necesario para seleccionar la pag. De la memoria de programa donde se encuentre la etiqueta especificada en la directiva. Bankesel, bankisel produce el codigo necesario para seleccionar el banco de registro donde se encuentre la etiqueta especificada en la directiva. Macroinstrucciones Son instrucciones definidas por el ususario sobre la base de las instrucciones del micro. Y las idrectivas del sambler. El cuerpo del macro esta constituido por el conjunto de instrucciones y directivas que programan el algoritmo que el usuario ha decidido programar coo macroinstruccion. Para invocar una macro basta con escribir su nombre en una linea del prog. Y especificar un su caso los argumentos con los que se ha de invocar la macro, tal como se indica a cont. Nombre_macro [arg1, arg2,]

Pg. # 39 Organizacin de un programa en lenguaje ensamblador. 1. Definir el procesador y sus simbolos mediante las directivas list e #inclue. 2. Si se usan macros, escribir la definicion de las que se vayana a emplera en el prog. 3. Definir simbolos con los que se representaran datos constantes, mediante las directivas equ y set. 4. Definier el uso de la memoria de datos 5. Escribir el cuerpo del programa prinicipal que en general comienza por iniciar las variables que requieran de un valor inicial determinado 6. Escribir las subrutinas, si las hay. 7. Terminar el programa fuente con la directiva end. La ejecucion de una subrutina requiere tres elementos: La instruccin de llamada, la instruccin de retorno y pila. El objetivo principal de la pila es almacenar la direccion de retorno al programa desde donde se llamo a la rutina Una bliblioteca es un archivo que contiene una coleccin de programas (subrutinas)sobre un tema.

Ejemplo de directiva #include List p=p16f873 #include p16f873.inc Org 0 ; el seudo pc se pone en 0 Movlw high pp ; instruccin que se coloca en la direccin 0 Movwf PCLATH ;instruccin que se coloca en la direccin 1. Goto pp; esta instruccin se coloca en la direccion2 Org 4 ;el seudo pc se pone en 4 ;aqu si coloca las instrucciones de la subrutina de atencin a interrupciones q se ensambla a partir de la direccin 4. Ilustracin de directiva code: Rst_vector code 0 ;esta seccin comienza en la dir. 0. Movlw high pp Movwf PCLATH Goto pp Ilustracion directivas udata_shr y res Udata_shr REG1 res 1 REG2 res 1 ;se declara una secion compartida de datos no iniciados, con simbolos REG1 y REG2 a los qu se les reserve una celda de memoria para cada uno.

Das könnte Ihnen auch gefallen