MANUAL DEL MICROCONTROLADOR 8051 - …epsem.upc.edu/~jesusv/uc8051_web/man_51_cast.pdf · indice página introducciÓn 3 primera parte. capitulo 1, caracterÍsticas del microcontrolador

  • Upload
    tranthu

  • View
    258

  • Download
    3

Embed Size (px)

Citation preview

  • MANUAL DELMICROCONTROLADOR 8051

    Dr. Alejandro Vega

    Agosto-diciembre 1999

  • INDICEPgina

    INTRODUCCIN 3

    PRIMERA PARTE.

    CAPITULO 1, CARACTERSTICAS DEL MICROCONTROLADOR 8051 5

    1.1CARACTERSTICAS DELC-8051 61.2DESCRIPCIN DE LAS LINEAS DEL C-8051 61.3CARACTERSTICAS ESPECFICAS DEL C-8051 9

    1.3.1 Descripcin de los espacios de memoria. 9

    1.4 MEMORIA DEL PROGRAMA. 111.4.1 Localidades de asignadas a las interrupciones 111.4.2 Memoria de programa interna y externa. 11

    1.5 MEMORIA DE DATOS. 12

    CAPITULO 2, REGISTROS DE FUNCIONES ESPECIALES (SFR). 14

    2.1 LOCALIDADES DE LOS REGISTROS DE FUNCIONES ESPECIALES. 152.2 REGISTRO DE PALABRA DEL ESTADO DEL PROGRAMA. 162.3 REGISTRO DE CONTROL DE POTENCIA. 172.4 REGISTRO DE INTERRUPCIONES. 17 2.4.1 Registro Habilitador de Interrupciones (IE). 18 2.4.2 Registro de Prioridades. 19

    CAPITULO 3, MANEJO DE LOS TEMPORIZADORES Y CONTADORES. 20

    3.1 TIMER / CONTADOR 213.2 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR. 213.3 REGISTRO DE MODO DE CONTROL DEL TIMER/CONTADOR. 22 3.3.1 Modo 0 del Timer/Contador. 23 3.3.2 Modo 1 del Timer/Contador. 24 3.3.3 Modo 2 del Timer/Contador. 24 3.3.4 Modo 3 del Timer/Contador. 253.4 UTILIZACION DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE"

    PARA LA TRANSMISION SERIE. 25

    CAPITULO 4, CONTROL DEL PUERTO SERIE. 26

    4.1 PUERTO SERIE 274.2 REGISTRO DE CONTROL DEL PUERTO SERIE SCON 274.3 MODOS DE CONTROL DEL PUERTO SERIE. 28 4.3.1 Transmisin serie, utilizando el modo de control 0. 29 4.3.2 Transmisin serie, utilizando el modo de control 1. 30 4.3.3 Transmisin serie, utilizando los modos 2 y 3. 32

  • Introduccin MMM III CCC RRR OOO CCC OOO NNN TTTRRR OOO LLL AAADDD OOO RRR 888000555111

    Manual del Microcontrolador 8051 3 Dr. Alejandro Vega S.

    CAPITULO 5, MODOS DE DIRECCIONAMIENTO. 35

    5.1 MODOS DE DIRECCIONAMIENTO. 365.2 DIRECCIONAMIENTO DIRECTO. 365.3 DIRECCIONAMIENTO INDIRECTO. 365.4 DIRECCIONAMIENTO INMEDIATO. 375.5 DIRECCIONAMIENTO INDEXADO. 375.6 DIRECCIONAMIENTO POR REGISTRO. 375.7 TRANSFERENCIA DE DATOS. 38 5.7.1 RAM interna. 38

    5.7.2 RAM externa. 395.7.3 Movimientos de tablas localizadas en la memoria del

    programa 395.8 INSTRUCCIONES BOOLEANAS. 395.9 INSTRUCCIONES DE SALTO. 40 5.9.1 Saltos condicionados. 40 5.9.2 Saltos incondicionados. 41

    SEGUNDA PARTE

    CONJUNTO DE INSTRUCCIONES DEL C- 8051. 43

    TERCERA PARTE

    APLICACIONES DEL MICROCONTROLADOR 8051. 96

    BIBLIOGRAFA 42

    ANEXOS.

  • Introduccin MMM III CCC RRR OOO CCC OOO NNN TTTRRR OOO LLL AAADDD OOO RRR 888000555111

    Manual del Microcontrolador 8051 4 Dr. Alejandro Vega S.

    INTRODUCCIN

    Hoy en da, el incremento competitivo en el mercado de la industriaelectrnica, crea la necesidad de disear sistemas con mejores caractersticas, demenor tamao, bajos requerimientos de energa, mejor realizacin, teniendo unespecial nfasis sobre todo en la facilidad de duplicidad del sistema diseado. Lalgica definida por el usuario, y realizada por el fabricante, permite individualizar alos sistemas diseados, as como tambin apegarse ms a los requerimientosespecficos del usuario. Esto, tiene repercusin en el costo, realizacin,compactabilidad, desempeo y seguridad del diseo.

    Con el fin de permitir la construccin de circuitos lgicos usando el conceptode lgica programable, los fabricantes de circuitos integrados han visto lanecesidad de producir dispositivos, de alta velocidad, con los que se puedandesarrollar funciones lgicas de toda clase.

    En estos circuitos, el usuario puede programar, en un slo "chip", funcionesque, de otra forma, con la circuitera tradicional de compuertas, utilizaran muchoscomponentes, adems del espacio fsico de los mismos.

    En cursos anteriores ya hemos visto los PLDs "Dispositivos LgicosProgramables Los diseadores de circuitos digitales han utilizadotradicionalmente los PLD's para obtener funciones lgicas que generalmente nose encuentran disponibles como componentes estndares. Los PLD's son unaexcelente opcin en sistemas donde el tamao y complejidad de las tarjetas decircuito impreso, la confiabilidad, el nmero de componentes o la velocidad sonfactores crticos.

    Como sucede con la familia de las memorias ROM, algunos PLD's seprograman una sola vez, otros se pueden programar y borrar las veces que seanecesario. Los PLD's contienen compuertas y Flip-Flops, pero estos componentesno se encuentran interconectados en configuraciones fijas, sino que, se tienenpequeos fusibles que se funden o abren para interconectar dicha circuitera interna.Creando de esta manera cualquier configuracin requerida.

    Para muchas de las aplicaciones los PLDs son una excelente opcin,desafortunadamente, sus aplicaciones se ven limitadas cuando es necesariotransmisin de informacin, adquisicin y tratamiento de datos, temporizaciones, etc.Es aqu donde hacen sus aparicin los microcontroladores, que son dispositivosmas verstiles que nos permitan llevar a cabo estas nuevas aplicaciones.

    Pero, qu es un microcontrolador ?

    Un Microcontrolador es todo un "sistema mnimo" dentro de un slodispositivo, lo cual ofrece un enorme panorama hacia el mundo de la compatibilidad.Este dispositivo contiene: Un CPU (basado principalmente en un microprocesadorde 4, 8 16 bits), puertos paralelos de entrada y salida, puerto serie, timers,

  • Introduccin MMM III CCC RRR OOO CCC OOO NNN TTTRRR OOO LLL AAADDD OOO RRR 888000555111

    Manual del Microcontrolador 8051 5 Dr. Alejandro Vega S.

    contadores, memorias, y en algunos casos hasta convertidores analgicosdigitales, todo esto dentro de un solo chip.

    Por qu un microcontrolador y no un microprocesador ?

    Un microcontrolador est encaminado bsicamente hacia aplicacionesconcretas en donde, el espacio, y nmero de componentes es mnimo, adems,los cambios o ampliaciones futuras del sistema son casi nulos. Por otro lado, unmicroprocesador se destina a sistemas donde su expansin a corto o medianoplazo es factible. A pesar de que un microprocesador es ms rpido que unmicrocontrolador para la ejecucin de sus instrucciones, en la mayora de los casos esnecesario interconectarlo con dispositivos perifricos

    Un microcontrolador, puede ser utilizado con un mnimo nmero decomponentes en trabajos especficos y en un amplio rango de aplicaciones, talescomo; los sistemas de control de alarmas, tableros de control en la industriaautomotriz, en la instrumentacin mdica, en los teclados de computadora, en lossistemas porttiles de almacenamiento de datos, en equipos de laboratorio, etc.

    En ste manual nos concretaremos especficamente al microcontrolador8051, estudiaremos sus caractersticas, as como tambin algunas de susaplicaciones.

    El manual se divide bsicamente en tres etapas fundamentales:

    La primera, est enfocada hacia la descripcin detallada de cada una de laslneas del microcontrolador 8051 (C-8051), que nos permitirn la interconexincon los sistemas perifricos o directamente con los sistemas a controlar.Tambin se estudiar n cada uno de los registros internos, sus utilidades y susaplicaciones.

    En la segunda parte, veremos cada una de las instrucciones, las cualesreforzaremos con breves ejemplos especficos. Por ltimo en la tercera etapa,presentaremos algunos diseos que se han tratado de detallar de la manera mscompleta, desde el planteamiento hasta la realizacin de sus programas.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 2 Dr. Alejandro Vega S.

    1.1 CARACTERSTICAS DEL 8051.

    La Familia de C-8051 es variada, y se encuentra en diversas presentaciones, laseleccin de uno o de otro tipo de microcontrolador depender principalmente de lasnecesidades a satisfacer. En este manual hablaremos de manera particular del 8051el cual se presenta en tres versiones, con ROM interna (8051) la cual es programadadirectamente por el fabricante, con EPROM interna (8751) que puede ser programadapor el usuario y sin PROM ni EPROM (8031),cuando el programa se selecciona demanera externa.

    El c-8051 est basado en los microprocesadores de 8 bits, contiene internamenteun CPU de 8bits, 3 puertos de entrada y salida paralelos, un puerto de control, el cuala su vez contiene; un puerto serie, dos entradas para Timer/Contador de 16 bits, dosentradas para interrupciones externas, las seales de RD y WR para la toma oalmacenamiento de datos externos en RAM, la seal de PSEN para la lectura de

    instrucciones almacenadas en EPROM externa. Gracias a estas tres seales el c-8051 puede direccionar 64 K de programa y 64K de datos separadamente, es decirun total de 128Kb. Adems cuenta con 128 bytes de memoria RAM interna.

    Adems el C-8051 puede generar la frecuencia (Baud Rate) deTransmisin/Recepcin de datos por el puerto serie de manera automtica partiendode la frecuencia del oscilador general, por medio de la programacin del Timer 1.Dicha frecuencia de transmisin puede ser cambiada en cualquier momento con solocambiar el valor almacenado en el control o tambin se puede duplicar o dividir lafrecuencia con solo escribir sobre el bit 7 (SMOD) del registro de control (PCON).

    A continuacin comenzaremos a ver con mayor detalle todo lo referente a susconexiones as como tambin las caractersticas especiales del c-8051.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 3 Dr. Alejandro Vega S.

    1.2 DESCRIPCION DE LAS LINEAS (PINS) DEL 8051.

    El elemento ms bsico de la familia 8051 es el 8031, que carece de EPROM oPROM, el cual es direccionado externamente.

    El 8031 es fundamentalmente un chip de 40 lneas.

    P1.0 1 40 VccP1.1 2 39 P0.0P1.2 3 38 P0.1P1.3 4 37 P0.2P1.4 5 36 P0.3P1.5 6 35 P0.4P1.6 7 34 P0.5P1.7 8 33 P0.6RST 9 32 P0.7

    P3.0/RxD 10 8051 31 Vpp/EAP3.1/TxD 11 8031 30 PROG/ALE

    P3.2/INT0 12 8751 29 PSENP3.3/INT1 13 28 P2.7

    P3.4/T0 14 27 P2.6P3.6/T1 15 26 P2.5

    P3.6/WR 16 25 P2.4P3.7/RD 17 24 P2.3

    XTAL2 18 23 P2.2XTAL1 19 22 P2.1

    Vss 20 21 P2.0

    Fig.1 Microcontrolador 8051

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 4 Dr. Alejandro Vega S.

    Descripcin de conexiones.

    NemnicoConex Tipo Nombre y funcin

    Vss 20 ENT Tierra 0V referencia.

    P0.0-P0.7 39-32 E/S Port 0. Es un puerto bidireccional con salidas encolector abierto. Cuando el puerto tiene 1sescritos, las salidas estn flotadas y pueden servircomo entradas en alta impedancia. El puerto 0 estambin multiplexado para obtener el DATO y laparte baja de la direccin.

    P1.0-P1.7 1-8 E/S Port 1. Es un puerto quasidireccional, cuando seescribe 1s en el puerto, el puerto puede serutilizado como entrada.

    P2.0-P2.7 21-28 E/S Port 2. Es un puerto quasi-bidireccional confijadores de nivel internos (pull-up). Cuando seescriben 1s sobre el puerto, las lneas pueden serutilizadas como entradas o salidas. Comoentradas, las lneas que son externamentecolocadas en la posicin baja proporcionaran unacorriente hacia el exterior. El puerto 2 es utilizadoadems para direccionar memoria externa. Estepuerto, emite el byte ms alto de la direccindurante la bsqueda de datos en la memoria delprograma externo y durante el acceso a memoriasde datos externos que usan direccionamientos de16 bits. Durante el acceso a una memoria de datoexterna, que usa direcciones de 8 bits, el puertodos emite el contenido del registro delcorrespondiente a este puerto, que se encuentraen el espacio de funciones especiales.

    P3.0-P3.7 10-17 E/S Port 3. Es un puerto quasi-bidireccional confijadores de nivel internos (PULL-UP). Cuando seescriben 1s sobre el puerto, las lneas pueden serutilizadas como entradas o como salidas. Comoentradas las lneas que son externamentecolocadas en la posicin baja proporcionarn unacorriente. El puerto 3 se utiliza adems paraproducir seales de control de dispositivosexternos como son los siguientes:

    10 E RxD(P3.0): Puerto serie de entrada.11 S TxD(P3.1): Puerto serie de salida.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 5 Dr. Alejandro Vega S.

    12 E INT0(P3.2): Interrupcin externa.13 E INT1(P3.3): Interrupcin externa.14 E T0(P3.4): Entrada externa timer0.15 E T1(P3.5): Entrada externa timer1.16 S WR(P3.6): Habilitador de escritura para memoria

    externa de datos.17 S RD (P3.7): habilitador de lectura para la memoria

    externa de datos.

    RST 9 E Reset. Una entrada alta en esta lnea durante dosciclos de maquina mientras el oscilador estcorriendo detiene el dispositivo. Un resistorinterno conectado a Vss permite un alto en lafuente usando solamente un capacitor externo aVCC.

    ALE 30 E/S Address Latch Enable. Un pulso positivo desalida permite fijar el byte bajo de la direccindurante el acceso a una memoria externa. Enoperacin normal, ALE es emitido en un rangoconstante de 1/6 de la frecuencia del oscilador, ypuede ser usada para cronometrar. Note que unpulso de ALE es emitido durante cada acceso a lamemoria de datos externos.

    PSEN 29 S Program Store Enable. Habilitador de lecturapara memoria de programas externos. Cuando el8031B/8051 est ejecutando un cdigo de unamemoria de programas externos, PSEN esactivada dos veces cada ciclo de mquina,excepto cuando se accesa la memoria de datosexternos que omiten las dos activaciones delPSEN externos. PSEN tampoco es activadacuando se usa la memoria de programas internos.

    EA 31 E External Access Enable. EA debe mantenerseexternamente en posicin baja para habilitar elmecanismo que elige el cdigo de laslocalizaciones de la memoria de programasexternos, 0000H y 0FFFH. Si EA se mantiene enposicin alta, el dispositivo ejecuta los programasque se encuentran en la memoria interna ROM, amenos que el contador del programa contenga unadireccin mayor a 0FFFH.

    XTAL1 19 E Crystal 1. Es la entrada del cristal para el circuitooscilador (generador del reloj interno) queamplifica e invierte la entrada.

    XTAL2 18 0 Crystal 2. Es la salida del amplificador osciladorinversor.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 6 Dr. Alejandro Vega S.

    1.3 CARACTERISTICAS ESPECIFICAS DEL 8051.

    El 8051 contiene las siguientes caractersticas:

    1 CPU de 8 bits como parte central. 32 lneas bidireccionales de entrada y salida (4 puertos) 128 bytes de memoria RAM 2 Controladores / Timers de 16 bits 1 UART completo 5 estructuras de interrupcin con dos niveles de prioridad 1 circuito de reloj 64 Kbytes de espacio para programa. 64 Kbytes de espacio para datos.

    1.3.1 DESCRIPCION DE LOS ESPACIOS DE MEMORIA.

    La memoria del sistema del 8051 se clasifica en tres partes fundamentales:(fig. 2):

    La primera, llamada memoria de programa, en donde se encuentran todas lasinstrucciones que van a ser ejecutadas por el C-8051, es decir, el programa detrabajo. Algunas versiones del 8051 cuentan con memoria de programa interna (de 2a 4 Kb). Cuando se requiere trabajar con una localidad arriba de sta, la memoria delprograma (externa) es seleccionada mediante la activacin de la seal PSEN (estadobajo). El mximo espacio de memoria de programa que se puede accesar es de64KB.

    El segundo espacio de memoria denominado, memoria de datos es accesadomediante la activacin de las seales RD y WR, durante la lectura o escritura de

    datos respectivamente. En este espacio del C toma todos valores que seencuentran en memoria como DATOS, es decir, el C no puede ejecutar ningunainstruccin que se encuentre aqu almacenada. El 8051 puede direccionar tambin64KB de memoria de datos.

    El tercer espacio de memoria es denominado como memoria RAM interna, el cual sesubdivide en 128 bytes de memoria bajos y en 128 bytes de memoria altos. En losprimeros 128, se encuentran 4 bancos de 7 registros cada uno. Estos registros son degran ayuda para la simplificacin de los programas, debido a que cada uno de ellosnos permiten almacenar datos momentneamente y realizar un basto nmero deinstrucciones del 8051. Tambin dentro de este espacio, se encuentran 16 bytes (del20H al 2FH) que pueden ser direccionados directamente por bit.

    En la parte alta de la memoria RAM interna, se encuentran el contenido de losRegistros de Funciones Especiales, formado por Puertos, Registros de Control,Acumuladores, Registros de interrupcin, etc. Todos estos registros los veremosdetalladamente posteriormente.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 7 Dr. Alejandro Vega S.

    MEMORIA DE PROGRAMA MEMORIA DE DATOS

    FFFH__ FFFH__

    EPROMEXTERNA

    RAMEXTERNA

    PSEN=0

    1000H__

    EA=1 --0FFFH-- EA=0 128 B.SFRS

    EPROM EPROM 128BO PROM INTERNAINTERNA --000H-- EXTERNA 0000H__

    PSEN=1 PSEN=0 256 Bytes de RAM __ ___ Interna RD=WR=0

    1.4.1 LOCALIDADES ASIGNADAS A LAS INTERRUPCIONES.

    A continuacin veremos de manera ms detallada el espacio destinado al programade trabajo.

    La tabla 1, muestra las localidades que han sido asignadas por el fabricante, para darservicio a las rutinas de interrupcin.

    FUENTE DE INTERRUPCIN VECTOR DE DIRECCIONES

    IE0 (Interrupcin 0 externa) 0003HTF0 (Interrupcin del timer 0) 000BHIE1 (Interrupcin 1 externa) 0013HTF1 (Interrupcin del timer 1) 001BHR1 y T1 (Interrupcin serial) 0023HTF2 y EXF2 (Slo para el 8052) 002BH

    Tabla 1. Interrupciones

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 8 Dr. Alejandro Vega S.

    Una interrupcin puede ser causada de manera externa o interna, es decir puede serproducida por un dispositivo perifrico o por programacin respectivamente. Lainterrupcin con mayor alto orden es el RESET el cual no puede ser mascarable.Cuando el RESET ocurre el programa comienza a partir de la direccin 0000H delprograma.

    Cuando una interrupcin es producida, el Contador del Programa (PC) almacena sucontenido temporalmente dentro del SP (apuntador de apilamiento ) y se carga con ladireccin de la localidad donde se encuentra la rutina de servicio de la interrupcincorrespondiente. Una vez posicionado en esa localidad deber de comenzar laejecucin de la rutina de servicio, hasta que encuentre la instruccin RETI, que lepermitir al PC recuperar nuevamente su valor original almacenado en el SP, ycontinuar con el programa anterior a la interrupcin.

    Por ejemplo a la interrupcin 0, se le asigna la localidad 0003H, si la interrupcin nose utiliza, esta localidad puede utilizarse para propsitos generales del programa, si lainterrupcin ha sido permitida, (estableciendo el bit correspondiente dentro delregistro de control IE), en el momento que exista una activacin de la interrupcin(estado bajo en la lnea INTO) el PC se cargar con 0003 y saltar a esa localidadpara comenzar a ejecutar la rutina de servicio.

    Estas localidades de memoria de los servicios de interrupcin estn separadas enintervalos de 8 bytes, entre s. Cuando un servicio de interrupcin es corto, stepuede estar contenido en los 8 bytes. En el caso de que fuese largo se puedeejecutar un salto a otra localidad de memoria para continuar con la secuencia deinterrupcin. El trmino del servicio de interrupcin deber de realizarse mediante laejecucin de la instruccin de la instruccin RETI.

    1.4.2 MEMORIA DE PROGRAMA INTERNA Y EXTERNA.

    Cuando se utilizan elementos de la familia del 8051 con memoria interna ROM (o16K), esta puede ser accesada mediante la conexin de la lnea EA =1 (Vcc). Si lamemoria interna es de 4 Kbytes y EA = 1, el CPU seleccionar internamente el ROM,desde 0000H hasta 0FFFH y de manera externa automticamente a partir de 1000Hhasta FFFFH.

    Por el contrario, si la lnea EA = 0, el CPU seleccionar de forma externa el ROM,desde la direccin 0000H hasta FFFFH. En el caso del 8031 sta lnea se conectasiempre a 0 Volts (Vss).

    La lnea PSEN (Program Store Enable), que sirve para leer el ROM externo, esactivado en todas las bsquedas (Fetches) del programa. PSEN NO SE ACTIVA enbsquedas (fetches) del ROM interno. La fig. 1.3 muestra un conexionado a unaEPROM externo.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 9 Dr. Alejandro Vega S.

    P0 BUS DE DATOS

    CONTROLADOR8051

    LATCH EPROMSujeta Dir. Baja

    EA la dir.bajaALE

    P2 Direccin Alta

    PSEN OE

    Fig. 1.3 Conexionado de una memoria externa

    1.5. MEMORIA DE DATOS (DATA MEMORY)

    El espacio de memoria RAM interno est dividido en tres espacios, el primer bloquees referido como la parte baja de 128 bytes, el segundo (se tiene slo en algunasversiones del 8051 v.gr. 8052), la parte alta de 128 bytes y el tercero, llamado espacioSFR ( Registros de Funciones Especiales).

    Las direcciones de la Memoria Interna de Datos siempre son de un byte (de 00H aFFH). Sin embargo los modos de direccionamiento para la memoria interna puedenacomodar hasta 384 bytes, como se ve en la versin 8052, lo cual es posible debido aque el modo de direccionamiento directo accede un espacio de memoria diferentefsicamente al permitido por el modo de direccionamiento indirecto.

    FFH FFH

    Alto 128

    80H 80H

    7FH

    Bajo 128

    Fig. 1.4 Estructura de la memoria interna.

    Accesable pordireccionamiento

    indirecto

    Accesable pordireccionamiento

    directo

    Accesable pordireccionamiento

    directo eindirecto

    Registro de FuncionesEspeciales: Puertos,estado y control de Bits,timer, SP, acumuladores,etc.

  • Caractersticas del Microcontrolador 8051 Captulo 1

    Manual de Microcontrolador 8051 10 Dr. Alejandro VegaS.

    Los primeros 128 bytes, son presentados en todos los dispositivos de la familiaMCS-51, que est mapeados como se presenta en la fig 1.5.

    7FHESPACIO LIBRE DE DATOS

    30H2FH

    ESPACIO DE DIRECCIONAMIENTO20H POR BITS

    1FH11

    18H17H

    1010H 4 BANCOS DE 8 REGISTROS R0-

    R70FH

    08H07H VALOR DEL RESET DEL SP

    0000H

    Fig. 1.5 Distribucin de los 128 Bytes ms bajos de la memoria RAM interna.

    Como se puede apreciar en la figura anterior, los 128 bytes ms bajos son divididosen 4 bloques de 8 registros cada uno, que contienen los valores de los registros R0 AR7, los bloques pueden ser seleccionados mediante la escritura en los bits 3 y 4 delregistro PSW (palabra del estado del programa), el cual veremos ms adelante. Lautilizacin de registros permiten un uso ms eficiente del espacio de cdigos debido aque sus direccionamientos son de 8 bits nicamente.

    Como ya habamos mencionado anteriormente, existen algunas versiones del 8051,como el 8052, que contienen 128 bytes de memoria interna que puede serdireccionada indirectamente. Por otro lado, todas las versiones del 8051 contienen unespacio de 128 bytes en la parte alta de la memoria que son direccionadosdirectamente, en este espacio se localizan los Registros de Funciones Especiales(SFR). Estos registros especiales, tienen sus localidades bien establecidas, y sonutilizados por el microcontrolador para realizar las distintas operaciones internas queejecuta el microcontrolador, as como tambin para el control y acceso de losdiferentes puertos de entrada y salida.

    Bits de seleccindel banco de

    registros en elPSW

  • Registros de Funciones Especiales Captulo 2

    Manual del Microcontrolador 8051 15 Dr. Alejandro Vega S.

    2.1 REGISTROS DE FUNCIONES ESPECIALES (SFR)

    En el captulo anterior habamos visto que los SFR se encuentran en la parte alta(128 bytes) de la memoria RAM interna del 8051. Las direcciones de los SFR esmostrado en la Tabla 2.

    SMBOLO NOMBRE DIRECCIN

    ACC Acumulador 0EOHB Registro B 0F0H

    PSW Program Status Word 0DOH(Palabra de estado del programa)

    SP Stack Pointer (apuntador de apilamiento) 81HDPTR Data Pointer (apuntador de datos)16bits

    DPL Data Pointer low byte 82HDPH Data Pointer high byte 83H

    P0 Puerto 0 80HP1 Puerto 1 90HP2 Puerto 2 0A0HP3 Puerto 3 0B0HIP Control de Prioridad de Interrup. 0B8HIE Control de Validacin de Interrup. 0A8H

    TMOD Modo de control Timer/Contador 89HTCON Control del Timer/Contador 88H

    T2CON(8052) Control 2 del Timer/Contador OC8HTH0 Byte alto del T/C 0 8CHTL0 Byte bajo del T/C 0 8AHTH1 Byte alto del T/C 1 8DHTL1 Byte bajo del T/C 1 8BH

    TH2(8052) Byte alto del T/C 2 0CDHTL2(8052) Byte bajo del T/C 2 0CCH

    RCAP2H(8052) Byte alto del registro de captura T/C2 0CBHRCAP2L(8052) Byte bajo del registro de capt. del T/C2 0CAH

    SCON Control serie 98HSBUF Buffer de datos serie 99HPCON Control de Potencia 87H

    Tabla 2 Espacio de los registros de funciones especiales.

    En la Fig. 2.1 se muestra el mapa de memoria correspondiente a los registros defunciones especiales.

  • Registros de Funciones Especiales Captulo 2

    Manual de Microcontrolador 8051 16 Dr. Alejandro Vega S.

    Mapa de memoria de los SFR (registros de funciones especiales)

    F8 FFF0 B F7E8 EFE0 ACC E7D8 DFD0 PSW D7C8 T2CON RCAP2L RCAP2H TL2 TH2 CFC0 C7B8 IP BFB0 P3 B7A8 IE AFA0 P2 A798 SCON SBUF 9F90 P1 9788 TCON TMOD TLO TL1 TH0 TH1 8F80 P0 SP DPL DPH PCON 87

    Fig. 2.1 Mapa de memoria de los SFR

    A continuacin veremos con mayor detalle cada uno de los principales registros decontrol del 8051.

    2.2 REGISTRO DE PALABRA DEL ESTADO DEL PROGRAMA(PROGRAM STATUS WORD)

    El registro de palabra del estado del programa contiene algunos bits que reflejan elestado del CPU en ese instante. El PSW se muestra en la fig.2.2.

    CY AC F0 RS1 RS0 OV - P

    Fig. 2.2 Registro PSW (Palabra de Estado del Programa)

    CY PSW.7 Bandera del carryAC PSW.6 Bandera del carry auxiliar (operaciones en BCD)F0 PSW.5 Bandera 0 para usos generalesRS1 PSW.4 Bit 1 selector del banco de registrosRS0 PSW.3 Bit 0 selector del banco de registrosOV PSW.2 Bandera del overflow - PSW.1 Bandera sin definirP PSW.0 Bandera de paridad, establece/limpia por hardware, indica

    si el nmero de 1s en el acumulador es par o impar.

  • Registros de Funciones Especiales Captulo 2

    Manual de Microcontrolador 8051 17 Dr. Alejandro Vega S.

    Este registro como ya se vio, reside en el espacio SFR. El registro contiene; el bit deCarry, El bit Auxiliar (para operaciones BCD), los dos bits de seleccin del banco deregistros, la bandera de overflow, el bit de paridad y dos banderas sin definir.

    El bit de Paridad refleja el nmero de 1s, en el acumulador:

    P=1, si el Acumulador contiene un nmero impar de 1sP=0, si el Acumulador contiene un nmero par de 1s, es decir el nmero de 1s, en elacumulador ms P es siempre par.

    2.3. REGISTRO DE CONTROL DE POTENCIA (CONSUMO DEENERGIA).

    En la fig.2.3 tenemos el registro PCON, el cual a excepcin de la bandera SMOD,sirve para controlar, principalmente el consumo de energa, el cual es utilizado slopor los dispositivos fabricados con la tecnologa CHMOS que permite disminuir dichoconsumo de energa, en estados de espera. La bandera PCON.7 (SMOD) sirve paradividir la frecuencia de transmisin o de recepcin por el puerto serie, proporcionadaya sea, por la fase 2 de los estados, (1/2 de la frecuencia del oscilador en latransmisin serie en modo 2), o bien, por el timer 1 en los modos 1 y 3.

    SMOD - - - GF1 GF0 PD IDL

    Fig.2.3 PCON (Registro de control de potencia)

    SMOD Dobla el BAUD RATE para el puerto serie cuando se utiliza el timerpara generar el BAUD RATE.

    GF1 Propsitos generalesGF0 Propsitos generalesPD Bajo consumo de energa 80C51BH CHMOSIDL Bajo consumo de energa

  • Registros de Funciones Especiales Captulo 2

    Manual de Microcontrolador 8051 18 Dr. Alejandro Vega S.

    2.4. REGISTROS DE INTERRUPCIONES.

    Las interrupciones son controladas mediante la escritura en los registros IE(Interruption Enable) e IP (Interruption Priority) los cuales son fsicamenterepresentados en la fig.2.4.

    REGISTRO REGISTRO ALTA PRIORIDADIE IP

    0INT0

    IT0 IED BAJA

    1 PRIORIDAD

    TF0

    0INT1

    IT1 IED SECUENCIA

    1 DE

    TF1 SERVICIO

    DE

    RI INTERRUPCIN

    TI

    ACCININDIVIDUAL

    DESHABILITADORGENERAL

    Fig. 2.4 Sistema de control de interrupciones

  • Registros de Funciones Especiales Captulo 2

    Manual de Microcontrolador 8051 19 Dr. Alejandro Vega S.

    2.4.1 REGISTRO HABILITADOR DE INTERRUPCIONES (IE).

    La desactivacin general de las interrupciones es efectuada mediante la escritura deun 0 lgico, en la bandera EA (IE.7).

    Con la bandera EA=1, el 8051 est en condiciones de aceptar interrupciones, aunquela verdadera aceptacin es realizada cuando se escribe un 1 lgico, en la bandera dela interrupcin correspondiente del registro de interrupciones, IE (fig.2.5).

    EA - ET2 ES ET1 EX1 ET0 EX0

    Fig. 2.5 Registro IE (Interruption Enable)

    EA IE.7 Desactiva todas las INTERRUPCIONES EA=0.ET2 IE.5 Activa la interrupcin causada por el timer2 (ET2=1)ES IE.4 Activa la interrupcin causada por el puerto serial.ET1 IE.3 Activa la interrupcin de sobreflujo causada por el timer 1.EX1 IE.2 Activa la interrupcin causada externamente en INT1.ET0 IE.1 Activa la interrupcin de sobreflujo causada por el timer 0.EX0 IE.0 Activa la interrupcin causada externamente en INT 0.

    2.4.2 REGISTRO DE PRIORIDAD.

    El 8051 tiene dos planos de prioridad para trabajar las interrupciones, llamadas alto ybajo, respectivamente. En la inicializacin, todas las interrupciones trabajan en elplano de baja prioridad. Para pasar del plano de baja prioridad al de alta, esnecesario escribir un 1 lgico en las banderas correspondientes a las interrupcionesque se desean aumentar de prioridad, ubicadas dentro del registro IP (fig.2.6.)

    - - PT2 PS PT1 PX1 PT0 PX0

    Fig. 2.6 Registro de Prioridad de Interrupciones

    PT2 IP.5 Timer 2 PT2=1 mayor prioridad.PS IP.4 Define el nivel de prioridad de la interrupcin del puerto serial.PT1 IP.3 Define el nivel de prioridad de la interrupcin del Timer 1.PX1 IP.2 Define el nivel de prioridad de la interrupcin externa 1.PT0 IP.1 Define el nivel de prioridad de la interrupcin del Timer 0.PX0 IP.0 Define el nivel de prioridad de la interrupcin externa 0.

    Aunque los registros de control de los puertos del Timer / Contador y Seriepertenecen a los registros de funciones especiales les vamos a dedicar un captulocompleto a cada uno de ellos debido a la importancia que presentan para eldesarrollo e interconexin con sistemas perifricos.

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 2 Dr. Alejandro Vega S.

    3.1 TIMER / CONTADOR .

    El 8051 tiene 2 timer/contadores de 16 bits cada uno, llamados Timer 0 yel Timer 1 respectivamente. Ambos pueden ser configurados para operar comotemporizadores (timers) o como contadores (counters).

    Cuando se trabaja como contador, el registro interno del contador, esincrementado cada vez que existe una transicin negativa (de 1 a 0) por la lnea deentrada correspondiente a T0 T1. En cambio, cuando funciona como temporizador"Timer", el registro es incrementado cada 12 periodos de oscilacin es decir sufrecuencia de conteo es 1/12 de la frecuencia del oscilador.

    En el momento que los bits del registro del contador pasan de todos 1's atodos 0's, se activa la lnea de interrupcin interna correspondiente a TF0 o TF1,generndose, (si ha sido permitida) una interrupcin.

    3.2 REGISTRO DE CONTROL DEL PUERTO TIMER/CONTADOR.

    El registro de control del Timer/Contador de la fig. 3.1 es direccionable por Bit,para activar o desactivar cada una de sus banderas.

    TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

    Fig. 3.1 Registro del control del Timer/Contador

    TF1 TCON.7 Bandera de sobreflujo (overflow) del registro del Timer 1.Activada por hardware cuando el registro que guarda la cuentadel Timer/Contador 1, incrementa su contenido pasando todossus bits de 1's a 0's. Limpiado por hardware cuando existe elprocesamiento de los vectores del servicio de las rutinas deinterrupcin.

    TR1 TCON.6 Bit de control de activacin del timer 1. Habilitado/Deshabilitadopor software para colocar el Timer/Contador enEncendido/Apagado.

    TF0 TCON.5 Bandera de sobreflujo (overflow) del registro del Timer 0.Activada por hardware cuando el registro que guarda la cuentadel timer/contador 0, incrementa su contenido pasando todos susbits de 1's a 0's. Limpiado por hardware cuando existe elprocesamiento de los vectores del servicio de las rutinas deinterrupcin.

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 3 Dr. Alejandro Vega S.

    TR0 TCON.4 Bit de control de activacin del timer 0.Habilitado/Deshabilitado por software para colocar elTimer/Contador en Encendido/Apagado.

    IE1 TCON.3 Bandera de transicin de la interrupcin externa 1. Activada porhardware cuando una transicin (de 1 a 0) en la lnea deinterrupcin externa 1, es detectada. Limpiada porhardware cuando la interrupcin es procesada. (solamente seacciona si se program la aceptacin de la interrupcin portransiente, IT1=1).

    IT1 TCON.2 Bit de control del Interrup 1. Activado/Limpiado porsoftware para especificar el tipo de interrupcin, por nivel bajo(IT1= 0) o por transiente negativo (IT1=1).

    IE0 TCON.1 Bandera de transicin de la interrupcin externa 0 Activadapor hardware cuando una transicin (de 1 a 0) en la lnea deinterrupcin externa 0, es detectada. Limpiada por hardwarecuando la interrupcin es procesada. (solamente se acciona sise program la aceptacin de la interrupcin por transiente,IT0=1).

    IT0 TCON.0 Bit de control del Interrup 0. Activado/Limpiado por software paraespecificar el tipo de interrupcin, por nivel bajo (IT0= 0) o portransiente negativo (IT0=1). 3.3 registro de modo de control deltimer/contador.

    3.3 REGISTRO DE MODO DE CONTROL DELTIMER/CONTADOR

    Este registro permite especificar si se van a trabajar como Temporizadores(Timers) o como Contadores (Counters), los puertos denominados Timer 0 y Timer 1.

    Existen 4 modos de trabajo para estos puertos, los cuales son definidos por laescritura en los bits M1 y M0 de TMOD fig 3.2.

    GATE C/T M1 M0 GATE C/T M1 M0

    TIMER 1 TIMER 0

    Fig.3.2 TMOD: Registro del Modo de Control del Timer/Counter

    GATE Cuando TRx (en TCON) est activada y GATE=1, TIMER/COUNTERxcorrer. solamente si la lnea INTx est en posicin alta (control porhardware). Cuando GATE=0, TIMER/COUNTERx correr solamente siTRx=1 (control por software)

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 4 Dr. Alejandro Vega S.

    C/T Selector de Timer o de Contador. Es limpiado por la operacin del Timer(entrada del reloj del sistema interno). Es activada por la operacin delContador (entrada de la lnea Tx)

    M1 Bit selector del modo.M0 Bit selector del modo.

    M1 M0 MODO ESPECIFICACIN0 0 0 Timer/contador de 13 bits0 1 1 Timer/contador de 16 bits1 0 2 Timer/contador de 8 bits recargables1 1 3 Timer 0, TL0 Timer/contador de 8 bits, controlado

    por los bits de control del Timer 0 .TH0 Timer de 8 bits controlado por los bits de Controldel timer 1. ( El Timer 1 no se utiliza )

    3.3.1 MODO 0, DEL TIMER/CONTADOR.

    En este modo, cualquiera de los 2 Timers, 0 1, trabajan como un contadorde 8 bits, al cual le antecede un predivisor de la frecuencia de conteo. En la fig.3.3se muestra el modo de operacin 0 para el timer 1.

    El registro del Timer 1 est configurado como un registro de 13 bits, queconsisten de los 8 bits de TH1 y los 5 bits menos significativos de TL1. Los 3 bits massignificativos de TL1 no se utilizan en este modo.

    Fig. 3.3 Modo 0, contador de 13 bits con el Timer1

    GATEENTRADAINT1

    OSC 1/12

    TL15 BITS

    TH18 BITS

    TF1

    ENTRADA T1

    TR1

    Inter 0C/T 1

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 5 Dr. Alejandro Vega S.

    El valor de la cuenta se puede apreciar en el registro TH1, dado que TL1solamente acta como divisor de frecuencia, TH1 se puede cargar con cualquiervalor, de 1 a 256 cuentas, pudiendo obtener de esta forma varios retardos,solamente detectando la bandera se sobreflujo (overflow TF1).

    3.3.2 MODO 1 DEL TIMER/CONTADOR

    Este modo es utilizado por cualquiera de los 2 Timers, se caracterizaprincipalmente por ser un Timer/contador de 16 bits cuyos valores se encuentrancargados en los registros TH y TL de cada uno de los Timers.

    En la fig. 3.4 se puede apreciar la disposicin de estos registros que seasemejan al modo 0, solo que en el modo 1, actan en cascada.

    Fig. 3.4 Modo 1 contador de 16 bits con Timer/Contador 1

    3.3.3 MODO 2 DEL TIMER/CONTADOR

    Este modo puede ser utilizado tanto por el timer 0 como por el 1, tienen unregistro de conteo de 8 bits (TLx).

    En la figura 3.5 se presenta el manejo del Timer 1, en el modo 2. El registroTL1 es cargado automticamente con el contenido de TH1, cuando se produce elsobreflujo en TL1, el cual adems establece la bandera de TF1.

    GATEENTRADAINT1

    OSC 1/12

    TL18 BITS

    TH18 BITS

    TF1

    ENTRADA T1

    TR1

    Inter 0C/T 1

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 6 Dr. Alejandro Vega S.

    Fig. 3.5 Modo 2, registro de 8 bits autorecargable

    3.3.4 MODO 3 DEL TIMER/CONTADOR

    El Timer 1, en el modo 3 mantiene su cuenta, es decir, tiene el mismo efectoque cuando se establece la bandera TR1=0.

    El Timer 0, en ste modo, establece TL0 y TH0 como dos contadoresseparados. La figura 3.6 muestra la lgica para el modo 3. TL0 utiliza los bits decontrol (C/T, GATE, TR0, INT0) del Timer 0. TH0 es bloqueado como temporizador"Timer", el cual emplea las seales de control del Timer 1, TR1 y TF1.

    Fig. 3.6 Modo 3, 2 timers de 8 bitsEl Timer 1 puede ser activado o desactivado con solo salir o entrar al modo 3respectivamente o puede permanecer siendo utilizado por el puerto Serie cuando

    GATEENTRADAINT1

    OSC 1/12

    TL18 BITS

    TH18 BITS

    TF1

    ENTRADA T1

    TR1

    Inter 0C/T 1

    GATEENTRADAINT0

    OSC 1/12

    TL08 BITS

    TH08 BITS

    TF0

    ENTRADA T0

    TR0

    Inter 0C/T 1

    TF18 BITS

    InterOSC 12

    TR1

  • Temporizadores y Contadores Captulo 3

    Manual del Microcontrolador 7 Dr. Alejandro Vega S.

    est generando la frecuencia de oscilacin "Baud rate",o en efecto en cualquieraplicacin que no se requiere una interrupcin.

    3.4 UTILIZACIN DEL TIMER 1 COMO GENERADOR DEL "BAUD RATE PARALA TRANSMISIN SERIAL.

    El Timer 1 es usado para generar la frecuencia de transmisin /Recepcin de datos en serie, cuando el puerto es programado para trabajar en elmodo 1 3. La frecuencia de transmisin es obtenida a partir del valor almacenadoen TH1 y el valor de SMOD mediante la siguiente ecuacin:

    Baud Rate = 2SMOD x Frec. Del Oscilador 32 12 x [256 (TH1)]

    El valor 2SMOD / 32, es debido a los circuitos divisores de frecuencia que seencuentran en la etapa de control del Puerto Serie, los cuales dividen entre 16 32dependiendo del bit 7 (SMOD) del registro de control PCON y la frecuencia quenos proporciona la salida del Timer 1 (overflow).

    El valor 12 que divide a la frecuencia del oscilador proviene del divisor, quese encuentra en la etapa de control del Timer 1, cuando ste es utilizado comotemporizador.

    NOTA: Cabe recalcar que el valor que se almacena en TH1 es el valor negativo dela cuenta que se desea, debido a que, el contador se incrementa cada vezque un pulso es detectado, de ah que en la ecuacin se representa como256-(TH1).

    La interrupcin del Timer 1 en ste caso no tendra mucha aplicacin por lo quese podra deshabilitar.

    El Timer 1 acta en modo 2, es decir en modo recargable, el valor de conteose encuentra fijo en el registro TH1, el cual se recarga cada vez que existe unoverflow.

    La figura 3.7 muestra una tabla de valores de TH1, para generar el BaudRate, tomando en cuenta la frecuencia del oscilador.

    FIG. 3.7 Tabla de valores para generar el Baud Rate

    BAUDRATE

    19.2 kHz9.8 kHz4.8 kHz2.4 kHz1.2 kHz137.5 Hz110 Hz

    F osc

    11.059 MHz11.059 MHz11.059 MHz11.059 MHz11.059 MHz11.986 MHz6.000 MHz

    SMOD

    1000000

    C/T0000000

    MODO2222222

    VALOR DE TH1FDHFDHFAHF4HE8H1DH72H

    TIMER1

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 27 Dr. Alejandro Vega S.

    4.1 PUERTO SERIE

    El puerto serie es un puerto FULL DUPLEX , lo cual significa que puede transmitir yrecibir datos simultneamente . El receptor contiene un almacn Buffer, que lepermite comenzar a recibir un segundo dato sin necesidad de que el primero hayasido completamente ledo del registro Buffer. Sin embargo si el primer bytepermanece sin ser ledo hasta el final de la recepcin del segundo dato, ste seperder.

    El dato de la Recepcin y de la Transmisin se encuentra en el registro SBUF delSFR (espacio de funciones especiales).

    4.2 REGISTRO DE CONTROL DEL PUERTO SERIE SCON

    El puerto Serie puede ser operado en 4 modos diferentes que son especificadosmediante la escritura en los bits SM0 y SM1 del registro de Control del Puerto Serie(Fig. 4.1)

    SM0 SM1 SM2 REN TB8 RB8 TI RI

    Fig. 4.1 Registro de control del puerto serie. Bit direccionables.

    SMO SCON.7 Especifica el modo de control del puerto serie.SM1 SCON.6 Especifica el modo de control del puerto serie.SM2 SCON.5 Habilita la comunicacin del tipo "multiprocesador" utilizado

    en los modos 2 y 3. En estos modos, si SM2 = 1, RI no es activado si el noveno dato recibido (RB8) es 0. En modo 1, RI no es activado si no se recibe un bit de stop. En el modo 0, SM2 ser 0.

    REN SCON.4 Establece la recepcin serie, cuando REN = 0 se desactiva la recepcin ( por software ).

    TB8 SCON.3 Almacena el noveno bit que ser transmitido en los modos 2 y 3 .

    RB8 SCON.2 Es el noveno bit que fue recibido en los modos 2 y 3 . En el modo 1, si SM = 0, RB8 es el bit de stop recibido. En el modo 0 RB8 no es usado.

    TI SCON.1 Bandera de interrupcin de la transmisin. Activada por hardware al final del octavo bit en el modo 0, o al principio del bit de stop en los otros modos. Debe ser limpiado por software.

    RI SCON.0 Bandera de interrupcin de la recepcin. Activada por hardware al final del octavo bit en el modo 0, o al medio tiempo de trasmitido el bit de stop en los otros modos. Debe ser limpiado por software.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 28 Dr. Alejandro Vega S.

    SM0 SM1 MODO ESPECIFICACIN BAUD RATE0 0 0 Registro de corrimiento F. Osc. /120 1 1 UART 8 bits Variable.1 0 2 UART 9 bits F.Osc./32 o /641 1 3 UART 9 bits Variable.

    Descripcin del funcionamiento de cada modo.

    MODO 0: Los datos de recepcin o transmisin son enviados mediante 8corrimientos con una frecuencia de 1/12 de la frecuencia deoscilacin.

    MODO 1: 10 bits son los que se transmites por la lnea (TxD) o se reciben porlnea (RxD). Un bit de inicio (Start bit de nivel 0 lgico). En recepcinel bit de Fin (Stop), se almacena en RB8 de SCON, si SM2=0. ElBaud Rate (frecuencia de transmisin o recepcin) es variable.

    MODO 2: 11 bits son transmitidos (TxD) o recibidos (RxD), un bit de inicio(Start bit de nivel 0 lgico), 8 bits de datos, un noveno bit de datosprogramable, en la transmisin es TB8, en la recepcin es RB8 deSCON, y un bit de Fin (Stop bit). Su Baud Rate es de 1/32 o 1/64 dela frecuencia de oscilacin.

    MODO 3: 11 bits son transmisin (TxD) o recibidos (RxD), en la misma formaque el modo 2, slo que aqu la frecuencia de transmisin/recepcin(Baud Rate) es variable. Se utiliza el Timer 1 para generar el BaudRate.

    En los 4 modos, la transmisin es inicializada cuando SBUF es utilizado como registrodestino. La recepcin en el modo 0 comienza cuando RI=0, en los otros modos,cuando se detecta el bit de inicio (START) si REN=1.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 29 Dr. Alejandro Vega S.

    4.3 MODOS DE CONTROL DEL PUERTO SERIE

    Veamos con mayor detalle los 4 modos de control para latransmisin/recepcin de datos por el Puerto Serie, comenzando por el Modo 0.

    Fig. 4.2 Transmisin serie en Modo 0.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 30 Dr. Alejandro Vega S.

    4.3.1 TRANSMISIN SERIE UTILIZANDO EL MODO DE CONTROL 0.

    Los datos serie que entran o salen a travs de RxD o TxD respectivamente, sonefectuados mediante 8 desplazamientos, con una frecuencia de transmisin (BaudRate) de 1/12 de la frecuencia del oscilador. La figura 4.2 muestra el Puerto Serieen Modo 0.

    La transmisin es iniciada por cualquier instruccin que utilice SBUF como registro deDestino, v.gr. MOV SBUF,A . La escritura a SBUF se produce durante la fase 2 deestado 6 S6P2 del ciclo de mquina, tambin se carga un 1 dentro de la 1 9na.Posicin del registro de corrimiento y llama al bloque de control de Tx para quecomience a transmitir. Un ciclo completo de la mquina se efectuar entre la escrituraen SBUF y la activacin de la seal de SEND.

    SEND acciona la salida del registro de corrimiento la funcin alterna de la lnea P3.0de salida. Tambin acciona el reloj de corrimiento Shift Clock a la funcin alterna dela lnea P3.1 de salida. El reloj de corrimiento esta en estado bajo, durante losestados S3, S4 y S5 de cada ciclo de mquina y en estado alto durante S6, S1 y S2.En la fase 2 del estado 6, S6P2, de cada ciclo de mquina la seal SEND es activaday el contenido del registro de corrimiento de transmisin es recorrido hacia la derechauna posicin (Fig.4.3).

    Fig. 4.3 Diagrama de estados del Modo 0.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 31 Dr. Alejandro Vega S.

    Cuando los datos van saliendo por la derecha, ceros van entrando por la izquierda.Cuando el bit ms significativo MSB, del caracter, est en la posicin de salida delregistro de corrimiento, el 1 que fue inicialmente cargado en la 9na. Posicin estjusto a la izquierda del MSB y todas las dems posiciones a la izquierda seencuentran cargadas de ceros. Esta condicin establece al bloque de control Tx arealizar un ltimo corrimiento y despus desactiva SEND y establece TI. Ambasacciones ocurren en S1P1 del 10mo. Ciclo de la mquina despus de la escritura enSBUF.

    La recepcin es iniciada por la condicin REN=1 y RI=0. En S6P2 del siguiente ciclode mquina, la unidad de Control Rx escribe los bits 11111110 al registro decorrimiento del receptor y en la siguiente fase del reloj activa RECEIVE.

    RECEIVE acciona SHIFT CLOCK a la funcin alterna de la lnea P3.1 de salida.SHIFT CLOCK hace las transiciones del S3P1 y S6P2 de cada ciclo de mquinacuando se activa RECEIVE el contenido del registro de corrimiento de recepcin, esrecorrido a la izquierda una posicin. El valor que viene de la derecha es el valor quefue muestreado de la terminal P3.0 y S5P2 del mismo ciclo de mquina.

    Como los bits del carcter que se recibe entran por ls derecha, 1s saldrn por laizquierda. Cuando el cero que fue inicialmente cargado en la posicin ms hacia laderecha, llega a la posicin mas a la izquierda en el registro de corrimiento, estacondicin establece en el bloque de Control Rx de realizar un ltimo corrimiento ycarga SBUF. En S1P1 del 10mo. Ciclo de mquina (despus de haber escrito RI=0 enSCON), RECEIVE es limpiado y RI establecido.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 32 Dr. Alejandro Vega S.

    4.3.1 TRANSMISIN SERIAL UTILIZANDO EL MODO DE CONTROL 1.

    En este modo, 10 bits son transmitidos (por TxD) o recibidos (por RxD).Un bit deinicio START en nivel 0, 8 bits de datos (primero el LSB), y un bit de paro STOP ennivel 1. En la recepcin , el bit de STOP viene en RB8 de SCON. El Baud Rate esdeterminado por la frecuencia de los overflows del Timer 1. La figura 4.4 muestra undiagrama del Puerto Serie en MODO 1.

    Fig. 4.4 Transmisin serial en Modo 1.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 33 Dr. Alejandro Vega S.

    La transmisin es iniciada por cualquier instruccin que escriba en el registro SBUF.La seal de escritura en SBUF, tambin carga un 1 dentro de la 9na. Posicin delregistro de corrimiento de transmisin y establece en la unidad de Control Tx unademanda de transmisin. La transmisin comienza en S1P1 del ciclo de mquinasiguiente, en el primer pulso proporcionado por el circuito divisor (%16 de lafrecuencia dada por el Timer 1). Es decir, los datos de entrada estn sincronizadospor el circuito divisor %16, y no por la escritura en SBUF.

    La transmisin comienza con la activacin de la seal SEND, la cual introduce el bitde START en TxD. Un periodo (1/16 de la frecuencia dada por el Timer 1) ms tardela seal DATA es activada, la cual permite la salida de los bits que se transmitirn porTxD. El primer pulso de corrimiento ocurre un perodo despus de esto.

    La recepcin es inicializada por una transicin de 1 a 0 en RxD. La lnea RxD esmuestreada a una frecuencia de 16 veces la frecuencia del Baud Rate que ha sidoestablecida. Cuando un transiente es detectado el divisor entre 16 es inmediatamenterestablecido y 1FFH es escrito en la entrada del registro de corrimiento.

    Cada tiempo que dura el bit recibido, es dividido en 16 perodos. Durante los perodos7mo. 8vo. 9mo., el valor del bit muestreado, el valor aceptado, es el que se obtuvo enlas ltimas dos muestras. Esto se hace para eliminar ruido. Si el valor aceptado delprimer bit es 1, el circuito receptor es restablecido y la unidad receptora espera otrotransiente de inicio. Si el bit de comienzo es correcto, es decir 0, la recepcincontina.

    Cuando RI=0, SM2=0 o el bit de stop es = 1, el bit de stop se introducir en RB8, los 8bits de datos en SBUF y RI se activa. A partir de este momento la unidad receptoraespera otra transicin negativa en la lnea RxD.

    Fig. 4.5 Diagrama de estados del Modo 1.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 34 Dr. Alejandro Vega S.

    4.3.1 TRANSMISIN SERIE UTILIZANDO LOS MODOS DE CONTROL 2 Y 3

    11 Bits son transmitidos (por la lnea TxD) o recibidos (por la lnea RxD); un bit deinicio (0), 8 bits de datos, un bit programable (9no. Bit) y un bit de stop (1).

    En la transmisin el 9no. Bit transmitido es TB8, el cual se le puede asignar al valor 0o 1. En la recepcin del 9no. Bit recibido en RB8 de SCON.

    En el modo 2 el Baud Rate es programable a 1/32 o 1/64 de la frecuencia deoscilacin. (Fig. 4.6).

    Fig. 4.6 Transmisin en Modo 2.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 35 Dr. Alejandro Vega S.

    En el modo3 el Baud Rate es variable y es generado por el Timer 1. (Fig. 4.7)

    Fig. 4.7 Transmisin Serie en Modo 3

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 36 Dr. Alejandro Vega S.

    La transmisin de iniciada cuando se escribe en SBUF, en ste momento tambinTB8 se carga en el 9no. Bit del registro de corrimiento.

    La transmisin comienza con la activacin de SEND la cual pone el bit de inicio en lalnea TxD. En un perodo (tiempo que dura un bit transmitindose o recibindose) ,mas tarde, DATA es activada , lo cual habilita el bit de salida del registro detransmisin a la lnea TxD.

    El primer pulso de corrimiento ocurre un perodo mas tarde. El primer pulso de relojpone un 1 (bit de stop), en la posicin del 9no. bit. Despus de esto, solo ceros seanintroducidos por la izquierda mientras que los bits de datos salen por la derecha.

    Cuando TB8 est en la posicin de salida del registro de corrimiento, a la izquierda deste se encontrar el bit de STOP y a la izquierda del bit de STOP todos los demsbits del registro sern igual a ceros. Esta condicin establece la unidad de cotrol TX lacual ser un ltimo corrimiento y entonces desactivar la seal de SEND yestablecer TI.Esto ocurre en el 11vo. Perodo despus de la escritura en SBUF (Fig. 4.8).

    Fig. 4.8 Diagrama de estados de los Modos 2 y 3

    La recepcin es iniciada por la deteccin de un transiente negativo (de 1 a 0) en lalnea RxD, la cual es muestreada a una frecuencia de 16 veces la frecuencia deBaud Rate que ha sido establecida. Cuando un transiente es detectado el divisorentre 16 es inmediatamente reestablecido y 1FFH es escrito en la entrada del registrode corrimiento.

  • Puerto Serial Captulo 4

    Manual del Microcontrolador 8051 37 Dr. Alejandro Vega S.

    Cada tiempo que dura el bit recibido, es dividido en 16 perodos. Durante los perodos7mo., 8vo. Y 9no, el valor del bit es muestreado, el valor aceptado, es el que seobtuvo en las ltimas dos muestras. Esto se hace para eliminar ruido. Si el valoraceptado del primer bit es 1, el circuito receptor es restablecido y la unidad receptoraespera otro transiente de inicio. Si el bit de comienzo es correcto, es decir 0, continala recepcin.

    Cuando RI=0 y SM2=0 o el 9no. bit de datos = 1, el 9no. bit de datos se introducir enRB8, los 8 bits de datos en SBUF y RI se activa. A partir de este momento la unidadreceptora espera otra transicin negativa en la lnea RxD.

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 2 Dr. Alejandro Vega S.

    5.1 MODOS DE DIRECCIONAMIENTO.

    Los modos de direccionamiento que la familia del MCS-51 trabaja son lossiguientes:

    5.2 DIRECCIONAMIENTO DIRECTO.

    En este direccionamiento el operando es especificado por una direccin de 8 bits enla instruccin. Solamente los datos de la RAM interna y los del campo del SFRpueden ser directamente direccionados.

    EJEMPLO :

    ADD A,7FH ;El Acumulador es sumado al dato que se encuentra enla direccin 7FH de la RAM interna y el resultado seralmacenado en el Acumulador.

    MOV A,2EH ;El Acumulador es cargado con el dato que se encuentra enla direccin 2EH de la memoria RAM interna.

    MOV 3DH,4EH;El contenido de la direccin 3DH es cargado con el datoque se encuentra en la direccin 4EH.

    5.3 DIRECCIONAMIENTO INDIRECTO.

    En este direccionamiento se utiliza un registro en el cual se encuentra la direccindel operando. Toda la memoria RAM interna y externa puede ser direccionadaindirectamente.

    Los registros de direcciones de 8 bits, pueden ser los registros R0 y R1 del bancode registros, o el SP.

    El registro de direccin de 16 bits puede ser solamente el registro DPTR.

    EJEMPLO :

    ADD A,@R0 ;El Acumulador es sumado con el contenido de la direccinque esta apuntando R0.

    MOV A,@R0 ;El Acumulador es cargado con el dato que se encuentra enla direccin apuntada por R0.

    MOVX A,@DPTR ;El Acumulador es cargado con el dato que se encuentra en ladireccin apuntada por el DPTR.

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 3 Dr. Alejandro Vega S.

    MOVX @DPTR,A ;El contenido del acumulador es guardado en la direccinapuntada por el D

    5.4 DIRECCIONAMIENTO INMEDIATO.

    El valor de una constante sigue al cdigo de operacin en el programa.

    EJEMPLO :

    MOV A,#64H ;El acumulador es cargado con el dato 64H inmediatamente.

    ADD A,#120 ;El acumulador es sumado al nmero decimal 120 y elresultado se almacena en el acumulador.

    MOV DPTR,#1245H ;El DPTR es cargado con el dato 1245H en formainmediata.

    5.5 DIRECCIONAMIENTO INDEXADO.

    Solamente la memoria del programa puede ser accesada mediante este modode direccionamiento y slo en lecturas.

    Este modo de direccionamiento es utilizado en las lecturas de tablas de la memoriadel programa o datos que se encuentran como constantes.

    Un registro de 16 bits ( el DPTR o el PC), apunta la base de la tabla y mediante elAcumulador se establece el nmero de la entrada de la tabla. La direccin de laentrada de la tabla en la memoria del programa est formada por la suma delAcumulador y el Apuntador de Base (DPTR o PC).

    Otro tipo de Direccionamiento indexado, es usando la instruccin "Salto decasillero". En este caso la direccin del destino el salto es calculada como la suma delapuntador de base ms el Acumulador.

    EJEMPLO :

    MOVC A,@A+DPTR;Mueve una constante que se encuentra en la memoria delprograma. El Acumulador es cargado con el dato que seencuentra apuntado por la direccin formada por la sumadel Acumulador A y el Apuntador de Datos.

    MOVC A,@A+PC ;El Acumulador es cargado con dato que se encuentra en ladireccin formada por la suma del mismo Acumulador A y elContador del Programa (PC).

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 4 Dr. Alejandro Vega S.

    5.6 DIRECCIONAMIENTO POR REGISTRO

    Los 8 registros pueden ser accesados mediante ciertas instrucciones quesimplifican sus cdigos de operacin (opcode) y en la mayora de los casos son msrpidas.

    Existen 4 bancos de registros, cada banco contiene los 8 registros (R0 a R7). Estosbancos pueden ser accesados mediante los bits 3 y 4 del PSW.

    EJEMPLO :

    ADD A,R7 ;El acumulador es cargado con el resultado de suma delAcumulador y el contenido del registro R7.

    DEC R0 ;Decrementa el registro R0.

    5.7 TRANSFERENCIA DE DATOS.

    5.7.1 RAM INTERNA.

    Para poder mover datos de la memoria interna RAM o SFR, existen 8 instruccionesprincipales:

    La instruccin MOV , ; permite transferir datos de la memoriainterna RAM y del SFR sin pasar a travs del Acumulador, mientras que lasinstrucciones MOV A, y MOV ,A utilizan al Acumulador para elmovimiento de datos dentro de la memoria interna RAM.

    La instruccin PUSH, primeramente incrementa el Stack Pointer (SP), y despusguarda el dato dentro de la localidad de memoria apuntada por el Stack.

    La instruccin POP, primero toma el dato de la memoria y despus decrementa elSP. Cabe sealar que si el SP apunta en la localidad 7FH en los dispositivos que notienen implementados los 128 bytes altos de memoria interna RAM, NO SEPODRN SEGUIR ALMACENANDO DATOS, DEBIDO A QUE ESTOS SEPERDERAN.

    MOV A, ; A = MOV ,A ;

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 5 Dr. Alejandro Vega S.

    Arriba de la direccin 80H los datos almacenados con la instruccin PUSH sepierden y los datos tomados con POP, son indeterminados.

    La instruccin XCH A, permite al Acumulador y al dato apuntado por ladireccin de intercambiarse entre si. La instruccin XCHD A,@R0 intercambialos 4 bits menos significativos (low nibbble), de Acumulador con los 4 bits menossignificativos del dato apuntado por el registro R0.

    5.7.2 RAM EXTERNA.

    Las instrucciones para la transferencia de datos en la memoria RAM externa, son4 bsicamente:

    Las habilitaciones de lectura y escritura en RAM externa son activadas solamentedurante la activacin de una instruccin MOVX.

    5.7.3 MOVIMIENTO DE TABLAS LOCALIZADAS EN LA MEMORIA DEL PROGRAMA

    La mayora de las veces dentro de nuestro programa principal tenemosalgunas constantes, como son palabras de control, contadores, banderasiniciales, tablas de datos, etc. Por tal motivo, el 8051 utiliza las siguientesinstrucciones solamente en lectura (ya que en escritura no tendr caso por ser unamemoria EPROM o ROM),

    5.8 INSTRUCCIONES BOOLEANAS.

    El 8051 contiene un completo procesador Booleano (por bits), el cual permite ejecutarinstrucciones de movimiento, limpieza, establecimiento, complementacin de un slobit, y operaciones de AND y OR entre bits.

    MOVX A, @Ri ; A MOVX @Ri,A ; AMOVX A,@DPTR ; A MOVX @DPTR,A ; A

    MOVC A, @A + DPTR ; A Direccin en memoria deprogramaMOVC A, @A + PC ; A Direccin en memoria de programa.

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 6 Dr. Alejandro Vega S.

    EJEMPLO :

    CONTROL DATA 20H BANDERA BIT CONTROL,7 ORG 100H

    MOV C,BANDERAMOV P1.0,C

    La etiqueta BANDERA representa, un bit direccionable de los 128 bits que seencuentran en la memoria baja RAM interna (desde la direccin 20H a la 2FH), ode los 128 bits de algunos registros del espacio SFR. En este caso particular,pertenece al bit 7 de la palabra CONTROL que se encuentra en la direccin 20H dela RAM interna, la lnea 0 del Puerto 1 es establecida o limpiada dependiendo delvalor de BANDERA.

    Otro ejemplo, sera la implementacin de la funcin Booleana OR Exclusivopor programacin. Partiremos de la funcin siguiente:

    C = bit 1 .XRL. bit 2 C bit2 bit1

    0 0 0 1 0 1 1 1 0 0 1 1

    Como podemos apreciar si el bit 2 es igual a 0 el bit 1 tiene el mismo valorde C, y si el bit 2 es igual a 1, el bit 1 tiene el valor negado de C, de tal forma que suimplementacin seria:

    MOV C,bit 1 ;El carry C = bit 1 JNB bit 2,conti: ;Es bit 2 = 0?, sino salta CPL C ;Se complementa C=bit 1

    ANL C,bit ; C C .AND. bitANL C,/bit ; C C .AND. .NOT. bitORL C,bit ; C C .OR. bitORL C,/bit ; C C .OR. .NOT. bitMOV C,bit ; C bitMOV bit,C ; bit CCLR C ; C 0CLR bit ; bit 0SETB C ; C 1SETB bit ; bit 1CPL C ; C .NOT. CCPL bit ; bit .NOT. bitJC rel ; Brinca si C = 1

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 7 Dr. Alejandro Vega S.

    conti: RET ;Regresa al programa

    5.9 INSTRUCCIONES DE SALTO.

    5.9.1 SALTOS CONDICIONADOS.

    El juego de instrucciones con saltos que estn condicionados a la activacino desactivacin de algunas de las banderas del PSW son las siguientes:

    DJNZ , rel ;Decrementa y salta si no es igual a 0

    Como se vi anteriormente, en el PSW no se tiene la bandera Z, que pruebael CERO, ms sin embargo, aqu se muestran las instrucciones JZ y JNZ, lascuales prueban todo el dato del Acumulador para esta condicin.

    La instruccin DJNZ (decrementa y salta sino es igual a cero), ejecuta unlazo N veces, hasta que un "contador" es igual a cero.

    EJEMPLO :

    MOV CONTADOR,#10 ; N = 10

    LAZO: (comienzo del conjunto de instrucciones)

    DJNZ CONTADOR,LAZO(contina)

    De la misma forma podemos apreciar la instruccin CJNE, la cual compara ysalta si el BYTE (registro, Acumulador o direccin) es igual al dato comparado. Elsalto es relativo.

    En los saltos relativos el rango del desplazamiento es de -128 a +127bytes con respecto al primer byte siguiente a la instruccin.

    5.9.2 SALTOS INCONDICIONADOS.

    Las instrucciones que permiten hacer los saltos incondicionados son lassiguientes:

    JZ rel ; Salta si A = 0JNZ rel ; Salta si A 0DJNZ , rel ; Decrementa y salta si no es igual a 0CJNE A,,rel ; Salta si A CJNE ,#dato,rel ; Salta si #dato

    JMP direccin ; Salta a la direccin.JMP @A + DPTR ; Salta a la direccin A + DPTRCALL direccin ; Llama a la subrutina "direccin".RET ; Regreso a la subrutina.RETI ; Regreso de la interrupcin.NOP ; Sin operacin.

  • Modos de Direccionamiento Captulo 5

    Manual del Microcontrolador 8051 8 Dr. Alejandro Vega S.

    En la tabla se muestra una sola instruccin de Salto JMPdirec pero enrealidad existen 3 tipos de saltos; SJMP, LJMP y AJMP los cuales difieren en elformato de la direccin de destino.

    JMP es un Mnemnico genrico el cual puede ser usado (en algunoscompiladores) durante la programacin sin tener en cuenta de ue forma el salto sercodificado.

    La instruccin SJMP, codifica la direccin como un desplazamientorelativo. La instruccin es de 2 bytes, es decir el PCODE y el salto relativo. Su lmitees de -128 a +127 bytes a partir de instruccin siguiente al SJMP.

    La instruccin LJMP, codifica la direccin como una constante de 16bits. La instruccin es de 3 bytes de largo, el OPCODE y la direccin en 2 bytes. Estesalto puede desplazarse en todos los 64K de memoria.

    La instruccin AJMP codifica la direccin como una constante de 11 bits. Lainstruccin es de 2 bytes de largo, el OPCODE el cual contiene3 bits de los 11 bits dedirecciones y el otro byte de 8 bits de direcciones. Cuando la instruccin es ejecutadaesos 11 bits son simplemente sustituidos por los 11 bits ms bajos en el PC. Los 5bits mas altos permanecen sin alterarse. Estos saltos pueden ser hasta de 2K.

    En cualquiera de los casos el programador especifica la direccin alensamblador de la misma manera; como una etiqueta o constante de 16 bits. Elensamblador deber poner la direccin dentro del formato correcto de formaautomtica.

    La instruccin RETI es usada para el regreso de una rutina de servicio deinterrupcin. la diferencia con la instruccin RET es que RETI llama al sistema decontrol de interrupcin mientras que la interrupcin est en proceso. Si no existeninguna interrupcin en proceso, entonces la instruccin RETI es igual a RET.

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 44 Dr. Alejandro Vega S.

    ACALL llama incondicionalmente a una subrutina localizada en la direccinindicada. Durante esta instruccin se realizan los siguientes eventos: El contenido del PC seincrementa dos veces y apunta la direccin de la siguiente instruccin; el apuntador deapilamiento (Stack Pointer) se incrementa una vez, introduciendo el byte bajo del PC;incrementa nuevamente el SP para introducir el byte alto del PC; por ltimo, el PC escargado con el contenido de la DIRECCIN DESTINO. La ejecucin de lasinstrucciones de la subrutina comienza en sta direccin, hasta que encuentre la instruccinRET, la cual restablece el PC que habr sido almacenado en el SP, continuando nuevamentecon el programa inicial.

    La DIRECCIN DESTINO es obtenida por concatenacin sucesiva de los cincobits de ms alto orden del PC incrementado; ms los 3 bits de ms alto orden y el byte bajodel cdigo de operacin (OPCODE). Colocados respectivamente en ese orden a partir delbyte alto, para formar la nueva direccin del PC. En otras palabras, las operacionesque se llevan a cabo son las siguientes:

    OPERACIN: ACALL (PC) (PC)+2 (SP) (SP)+1 ((SP)) (PC7-0) (SP) (SP)+1 ((SP)) (PC15-8)

    El PC final es creado por: (PC15-11) (PC15-11 INCREMENTADO) (PC10-8) (OP CODE 15-13) # de la pg. (PC7-0) (OP CODE 7-0) direc. en la pg.

    A continuacin se presenta un ejemplo detallado de sta instruccin.

    EJEMPLO:

    ORG 00H

    0000 5100 ACALL LAZO1 ; 0101 0001 0000 00000002 E8 LAZ02 : MOV A, R0 pg.2 Direc. pg.0003 C6 XCH A, @R00004 E9 MOV A, R10005 22 RET0006 02 0200 LJMP 0200H

    ORG 0200H

    0200 F8 LAZ01: MOV R0, A0201 22 RET0202 1102 ACALL LAZO2; 000 1 0001 0000 00100204 END pg.0 Direc. Pg.

    ACALL direccin 11(llamada absoluta)

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 45 Dr. Alejandro Vega S.

    En el ejemplo anterior se muestra en la direccin 0202 el llamado a la subrutinaLAZO2, con el cdigo de operacin 1102, por lo tanto, la direccin a la cual debe de saltar seforma de la siguiente manera:

    PCINC = 0204 OPCODE = 1102

    0000 0 010 0000 0100 B 000 1 0001 0000 0010 B A B C

    A B CPC FINAL = 0000 0 000 0000 0010 B = 0002H

    La direccin con la cual se carga el PC es 0002. Cabe aclarar que los bits 8 al12 del OPCODE permanecen siempre constantes (10001), en cualquier llamado del tipoACALL.

    Como puede observarse tambin, el valor del nibble de ms alto orden del PC INCy el PC FINAL es el mismo, ello nos limita la longitud del salto.

    El destino debe por lo tanto estar dentro del mismo block de 2K de memoria delprograma donde se encuentra la instruccin ACALL.

    ADD suma la variable (SRC-BYTE) indicada y el Acumulador, dejando elresultado en el Acumulador. Las banderas de acarreo y acarreo auxiliar son establecidas, sihay un acarreo hacia afuera del bit 7 o del bit 3, de otro modo son limpiadas.

    Cuando se suman enteros sin signo, la bandera de acarreo indica que ocurrir un sobreflujo.

    OV se establece si hay un acarreo del bit 6 al 7 pero sin existir acarreo del bit 7hacia afuera, o un acarreo hacia afuera del bit 7 pero no del bit 6 al 7; de otro modo OV eslimpiada. Cuando se suman enteros signados, el OV indica un nmero negativo producidocomo la suma de dos operandos positivos, o uno positivo producido por la suma de dosoperandos negativos.

    Cuatro modos de fuentes de operandos dirigidos estn permitidos: registro,directo, registro indirecto, o inmediato.

    EJEMPLO:

    El Acumulador contiene 0C3H (11000011B) y el registro 0 contiene 0AAH(10101010B). La instruccin, ADD A,R0, dejara 6DH (01101101B) en el acumulador con labandera del acarreo auxiliar limpiada y las banderas de acarreo y sobreflujo establecidas .

    ADD A,

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 46 Dr. Alejandro Vega S.

    ADD A,Rn

    BYTES: 1 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 0 1 r r r

    OPERACIN: ADD

    (A) (A)+(Rn)

    ADD A, @Ri

    BYTES: 1 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 0 1 1 1 i

    OPERACIN: ADD

    (A) (A)+((Ri))

    EJEMPLO: RAM INTERNA

    A=21 R0=10 0000 10

    0000 28 ADD A,R0 0010 12

    0001 26 ADD A,@R0

    En la primera instruccin se suman el contenido de A ms el contenido de R0, esdecir : 21 + 10 = 31, el resultado es almacenado en al acumulador, ahora A=31.

    En la segunda instruccin se suman el contenido del acumulador y elcontenido de la localidad de memoria (direccin) apuntada por el registro R0, que en estecaso es la 10, es decir: 31 + 12 = 43, el resultado se almacena en el acumulador. Altrmino de las instrucciones el estado del programa sera A=43, C=0, AC=0, OV=0.

    ADD A, directo

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 47 Dr. Alejandro Vega S.

    BYTES: 2 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 0 0 1 0 1 direccin directa

    OPERACIN: ADD

    (A) (A)+(directo) ADD A, #dato

    ADD A, #dato

    BYTES: 2CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 0 0 1 0 0 dato inmediato

    OPERACIN: ADD

    (A) (A) + #dato

    PSW7 PSW6 PSW2 BANDERAS QUE SE ACTIVANCY CY 0V

    EJEMPLO:

    ORG 00H RAM INTERNA

    0000 7421 MOV A,#21H R0 R1-----R70002 7810 MOV R0,#10H; A21H 0000 100004 2500 ADD A, 00H ; A31H 00090006 751012 MOV 10H,#12H 0010 120009 2412 ADD A,#12 ; A43H 0018000B END

    ADDC simultneamente suma el byte variable indicado, la bandera de acarreo yel contenido del Acumulador, dejando el resultado en el Acumulador. Las banderas deacarreo-auxiliar y la de acarreo estn establecidas, respectivamente, si hay acarreo hacia elexterior del bit 3 del bit 7. De otra forma ellas estn limpias.

    Cuando se suman enteros signados negativamente la bandera de acarreo, indica queocurri un sobreflujo. OV se establece, si hay un acarreo del bit 6 al bit 7 pero no del bit 7

    ADDC A, sumar con acarreo

    (carry).

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 48 Dr. Alejandro Vega S.

    hacia afuera, o del bit 7 hacia afuera pero no del bit 6 al bit 7. de otro modo OV est limpio.Cuando se suman enteros signados, el OV indica un nmero negativo producido como lasuma de dos operandos positivos un nmero positivo producido por la suma de dosoperandos negativos. Cuatro modos de direccionamiento de operandos fuente estnpermitidos: registro directo, registro indirecto inmediato.

    EJEMPLO:

    El Acumulador contiene 0C3H (11000011B) y el registro 0 contiene 0AAH(10101010B) con la bandera de acarreo fija. La instruccin, ADDC A, R0, dejar 6EH(01101110B) en el acumulador con AC limpiado y las banderas de acarreo y OVestablecidas.

    ADDC A, Rn

    BYTES: 1 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 1 1 r r r

    OPERACIN: ADDC

    (A) (A)+(C)+(Rn)

    EJEMPLO:

    A = C3 R0=AA C=1 C3 = 11000011AA= 10101010CT= 1 1 01101110

    ADDC A,R0 A 6E CY=1 AC 0 OV=1

    ADDC A, @Ri

    BYTES: 1 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 1 0 1 1 i

    OPERACIN: ADDC

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 49 Dr. Alejandro Vega S.

    (A) (A)+(C)+((Ri))

    ADDC A, directo

    BYTES: 2 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 1 0 1 0 1 direccin directa

    OPERACIN: ADDC

    (A) (A)+(C)+(directo)

    ADDC A, #dato

    BYTES: 2 CICLOS: 1

    CDIGO DE OPERACIN:

    0 0 1 1 0 1 0 1 dato inmediato

    OPERACIN: ADDC

    (A) (A)+(C)+(#dato)

    AJMP transfiere la ejecucin del programa a la direccin formada por laconcatenacin de los 5 bits de ms alto orden del PC incrementado, ms los bits del 7 al 5 delcdigo de operacin y el segundo byte que forma sta instruccin AJMP. El destino debe porlo tanto estar dentro del mismo block de 2K de memoria del programa donde se encuentrala instruccin AJMP.

    EJEMPLO :

    La etiqueta "SALTDR" est en la direccin del programa 0123H. La instruccin,AJMP SALTDR est en la localizacin 0345H y cargar el PC con 0123H.

    BYTES: 2 CICLOS: 2

    CDIGO DE OPERACIN:

    a10 a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a1 a1

    AJMP direccin 11 (salto absoluto)

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 50 Dr. Alejandro Vega S.

    OPERACIN: AJMP

    (PC) (PC)+2

    El PC final es creado por:(PC15-11) (PC15-11 INCREMENTADO)(PC10-8) (OP CODE 15-13) # de la pg.(PC7-0) (OP CODE 7-0) direc. en la pg.

    EJEMPLO :ORG 00H

    0000 C100 AJMP ETA ;ETA =0600H = 0000 0 110 0000 0000B0600 7450 ETA: MOV A,#50END

    ANL Ejecuta la operacin lgica AND, bit a bit entre las variables indicadas yguarda los resultados en la variable destino. Las banderas no son afectadas.

    Esta operacin lgica permite 6 combinaciones de direccionamientos. Cuandoel destino es el acumulador, los direccionamientos pueden ser por registro, directo,registro-indirecto, inmediato. Cuando el destino es una direccin, la fuente puede ser elacumulador o el dato inmediato.

    NOTA :

    Cuando sta instruccin es usada para modificar un puerto de salida, el valor usadocomo dato del puerto ser ledo del latch del puerto NO DE LA PATA DEL MISMO.

    EJEMPLO :

    Si el acumulador contiene OC3H (11000011B) y el registro contiene 55H(01010101B) luego la instruccin, ANL A,R0 dejar 41H (01000001B) en el acumulador.Cuando el destino es un byte direccionado directamente, sta instruccin limpiarcombinaciones de bits en cualquier localidad RAM o registro.

    El byte mscara que determina el patrn de bits que sern limpiados puede ser unaconstante contenida en la instruccin o un valor calculado en el acumulador. Lainstruccin, ANL P1,#01110011B, limpiar los bits 7, 3, y 2 del latch del puerto de salida 1.

    ANL A,Rn

    BYTES: 1 CICLOS: 1

    ANL ,

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 51 Dr. Alejandro Vega S.

    CDIGO DE OPERACIN:

    0 1 0 1 1 r r r

    OPERACIN: ANL

    (A) (A)^(Rn)

    ANL A,Directo

    BYTES: 2 CICLOS: 1

    CDIGO DE OPERACIN:

    0 1 0 1 0 1 0 1 direccin directa

    OPERACIN: ANL

    (A) (A)^(directo)

    ANL A,@Ri

    BYTES: 1 CICLOS: 1

    CDIGO DE OPERACIN:

    0 1 0 1 0 1 1 i

    OPERACIN: ANL

    (A) (A)^((Ri))

    ANL A,#dato

    BYTES: 2 CICLOS: 1

    CDIGO DE OPERACIN:

    0 1 0 1 0 1 0 0 dato inmediato

    OPERACIN: ANL (A) (A)^#dato

    ANL directo,A

    BYTES: 2 CICLOS: 1

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 52 Dr. Alejandro Vega S.

    CDIGO DE OPERACIN:

    0 1 0 1 0 0 1 0 direccin directa

    OPERACIN: ANL

    (directo) (directo)^(A)

    ANL directo,#dato

    BYTES: 3 CICLOS: 2

    CDIGO DE OPERACIN:

    0 1 0 1 0 0 1 1 direccin directa dato inmediato

    OPERACIN: ANL

    (directo) (directo)^#dato

    EJEMPLO :A=C3 R0=55

    ANL A,R0 ; 11000011 = A01010101 = R001000001 = A x R0 = 41

    ANL P1,#01110011B ; si P1 es puerto de lecturaP1 = 11111111P1 = 01110011

    Limpia los bits 7, 3 y 2 del puerto de salida 1.

    Si el valor Booleano del bit fuente es un 0 lgico, limpia la bandera de acarreo; deotro modo deja la bandera de acarreo en su estado corriente. Un slash ("/") precediendo aloperando en el lenguaje de ensamblador indica que el complemento lgico del bitdireccionado es usado como el valor fuente, pero el bit fuente por si mismo no es afectado.Ninguna otra bandera es afectada. Slo el direccionamiento directo es permitido por el operando fuente.

    ANL C, bitAND lgico para

    bits variables

  • Conjunto de instruciones C-8051

    Manual del Microcontrolador 8051 53 Dr. Alejandro Vega S.

    EJEMPLO :

    Se coloca la bandera de acarreo si y solo si , P1.0=1, ACC.7=1 y OV=0:

    MOV C,P1.0; C P1.0 ; establece el CARRYANL C,ACC.7; C = C x ACC.7 ; Y-lg. del bit ACC.7 con el CARRYANL C,/0V; C = C x OV ; Y - lgico con el inverso de la bandera OV C se establece en los 3casos.

    ANL C,bit

    BYTES: 2 CICLOS: 2

    CDIGO DE OPERACIN:

    1 0 0 0 0 0 1 0 bit direccionado

    OPERACIN: ANL

    (C) (C)^(bit)

    ANL C,/bit

    BYTES: 2 CICLOS: 2

    CDIGO DE OPERACIN:

    1 0 1 1 0 0 0 0 bit direccionado

    OPERACIN: ANL

    (C) (C)^/(bit)

    CJNE. Compara las magnitudes del primero y segundo operando, y brinca si susvalores no son iguales. El salto es calculado por la suma algebraica del valor actual del PC yel desplazamiento relativo (operando REL). La bandera de acarreo es establecida si el valorentero sin signo de la es menor que el valor entero sin signo de la ; por otro lado el acarreamiento es limpiado. Ningn operando es afectado.

    Los primeros dos operandos permiten cuatro combinaciones de modos dedireccionamiento; el acumulador puede ser comparado con cualquier palabra directamentedirecc