micro control adores en control ii-luis urdaneta

Upload: luis-d-urdaneta-g

Post on 09-Apr-2018

226 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    1/198

    136

    Control deControl de flujo delflujo delProgramaPrograma

    PorPor LuisLuis DD.. UrdanetaUrdaneta GG..

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    2/198

    137

    Cuando un sistema 8051 se inicia, restablece elPCa 0000H. A partir deesta posicin el 8051 empiezan a ejecutar instrucciones secuen- cialmenteen memoria a menos que una instruccin del programa mo- difique el PC.

    Existen varias instrucciones que pueden alterar el valor del PC;especficamente,

    Control de Flujo del Programa

    Una aceptacin de solicitud de interrupcinpuede a su vez bifurcar el flujosecuencial del programa.

    Instrucciones de saltos condicionales

    Saltos directos y

    Llamadas o retornos desde subrutinas.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    3/198

    138

    El 8051 contiene una coleccin de instrucciones que, como un grupo, esllamado instrucciones de "bifurcacin condicional". Estas instruc- cionescausan que ejecucin del programa tome un camino no se- cuencial si unacierta condicin se satisface.

    Saltos condicionales

    Considere, por ejemplo, la instruccin JB. Esta instruccin causa Salto siel bit es 1" . Un ejemplo de JBpodra ser:

    jb 45h,pulso ; se prueba si el bit 45H es 1

    nop ; continua si es 0

    pulso: .... ; salta aqu si es 1

    Control de Flujo del Programa

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    4/198

    139

    Saltos condicionales

    comp equ P3.7

    jnb comp,$ ; Espera que el bit 7 de P3 pase a nivel alto. ; Continua cuando comp = 1

    .

    .

    Control de Flujo del Programa

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    5/198

    140

    La bifurcacin condicional realmente es el elemento fundamental en laconstruccin de la lgica del programa debido a que toda toma de decision

    se realiza usando bifurcacin condicional.

    Control de Flujo del Programa

    Conviene resaltar que el programa slo puede desviar la ejecucin haciainstrucciones localizadas en los 128 bytes anteriores o los 127 bytessiguientes a la direccin que sigue a la instruccin de salto condicional.

    Esto significa para el ejemplo anterior que la etiqueta pulso debe estardentro de los s 128 bytes de direccin de memoria que contiene lainstruccin de salto.

    ...Saltos condicionales

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    6/198

    141

    Control de Flujo del Programa

    Mientras la bifurcacin condicional es sumamente importante, es amenudo necesario hacer una salto directo a una posicin de memoria

    dada sin basarlo en una decisin lgica dada. Esto es equivalente a saltoincondicional. Esto es cumplido en el 8051 usando instruc- ciones de SaltoDirecto yCall.

    Saltos Directos

    Ejemplo: ljmp direccin nueva..

    .direccin nueva: ....

    Cuando el 8051 encuentra la instruccinjmp carga elPCcon la direccinindicada por el operando y contina la ejecucin desde aqu.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    7/198

    142

    Control de Flujo del Programa

    SJMP, como las instrucciones de la bifurcacin condicional, slo puedesaltar a una direccin dentro de los s 128 bytes de la direccin delocalizacin de la instruccin..

    AJMPslo puede hacerlo a una direccin que est en el mismo bloque de2Kde memoria donde est AJMP. Esto significa que si el comandoAJMPest en la memoria del cdigo en la posicin 650H, puede hacer un saltoslo a las direcciones comprendidas entre 0000Hy07FFH.

    Aparte de LJMP, hay otras dos instrucciones que causan un salto di- recto :SJMP yAJMP. Funcionalmente, estos dos comandos realizan la mismafuncin que LJMP: continuar la ejecucin en la direccin in- dicada por el

    operando. No obstante, SJMPyAJMPdifieren en algo:

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    8/198

    143

    Control de Flujo del Programa

    NOTA:Algunos ensambladores de calidadrealizan automticamente la conversinanterior para usted. Es decir, ellos cambiarn sus LJMPs automticamente a SJMPs

    siempre que sea posible. sta es una capacidad ingeniosa y muy poderosa que ustedpuede querer buscar en un ensamblador si planea desarrollar muchos proyectos que

    tienen restricciones de memoria relativamente crticas.

    La respuesta es directa: Las primeras instrucciones ocupan cada una de 2bytes, mientras que LJMPes una instruccin de 3 bytes.

    En aplicacines con limitaciones de memoria, la sustitucin de todas lasLJMPporSJMPoAJMPpuede liberar ms de una centena de bytes.

    SiSJMPyAJMPhacen lo mismo que LJMPpero con restricciones, Porqu usarlas?.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    9/198

    144

    Control de Flujo del Programa

    Cuando el 8051 ejecuta una instruccin LCALL direccin, guardainmediatamente el contenido del PC en la pila y contina ejecutandocdigo a partir de la direccin indicada por la instruccin LCALL.

    Llamadas a subrurtinas

    La instruccin RET causa el retorno desde una subrutina. Cuando seejecuta devuelve al PC la direccin almacenada en la pila porLCALL, estaes la direccin de instruccin siguiente a LCALL

    El comando RET es directo en el sentido que siempre cambia flujo del programa sin basarlo en una condicin, pero es variable sobre dondecontina el flujo del programa, debido a que depende donde se realiz lallamada al subprograma.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    10/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    11/198

    146

    Consideraciones detiempo e informacin de

    nivel bajo

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    12/198

    147

    Para entender con propiedad los modos defuncionamiento del 8051 es necesario disponer dealguna informacin concerniente a la sincronizacinde seales durante las distintas opera-ciones deldispositivo.

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    13/198

    148

    El 8051 opera con una seal de reloj de frecuencia precisa suminis- trada

    por un osciladorrealizado con un inversor operando linealmen- te, basadoen un cristal externo. Las frecuencias ms comunes del reloj del 8051estndar son 12 MHz y 11.059 MHz, aunque existen versiones confrecuencia de hasta 60MHz.

    EL Generador de Reloj

    Existen dos formas de aplicar el reloj al 8051:1. Usar eloscilador interno o

    2. Excitarlo con una fuente externa.

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    14/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    15/198

    150

    Ciclo de InstruccinCiclo de Instruccin

    El tiempo que el 8051 invierte en ejecutar una instruccin se denomi- naciclo de instruccin. Una subdivisin de este tiempo, la cual es de mayor

    utilidad para comprender los modos de operacin del 8051, es elciclo demquina.

    Un ciclo de la mquina es la cantidadmnima de tiempo durante el cualpuede ejecutarse una instruccin.

    Conviene resaltar que no todas las instrucciones se ejecutan en el mismotiempo. Las de ejecucin ms rpida requieren 1 ciclo de m- quina y otrasgastan 2 ciclos en completarse. Mientras que las dos operacionesmatemticas ms lentas usan 4 ciclos de mquina.

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    16/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    17/198

    152

    Durante cada ciclo de mquina ocurren 12 pulso de reloj. Esto signi- ficaque si una instruccin se ejecuta en un ciclo y la frecuencia de reloj es de11.059 MHz, entonces el 8051 puede ejecutar por segundo,

    Como a muchas de las instrucciones del 8051 les toma un ciclo ejecutarse,es comn considerar que el Ctrl puede ejecutar 1 milln deinstrucciones por segundo. Si todas las instrucciones de un programa sonde 2 ciclos esta cantidad se reduce a 470701 inst/seg; y si son de 4 ciclosa 230391 inst/seg. De modo que un estimado de 600000instrucciones/seges una cantidad ms realista.

    seg

    inst921583

    12

    61011.059 !v

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    18/198

    153

    Muchos dispositivos basados en el 8051 tienen tiempos de ejecucin quedifieren de los del modelo estandar. Algunas versiones optimi- zadasinvierten slo 4 ciclos de reloj en ejeutar una instruccin; tales modelos

    son efectivamente 3 veces ms rpidos que el 8051 bsico cuando usanla misma frecuencia de 11.059 Mhz.

    Una duda razonable surge: Si las instrucciones tienen tiempos deejecucin diferente: como puede mantenerse un seguimiento del transcurso del tiempo en aplicaciones de tiempo real crticas, sin te- nerreferencia externa?

    Afortunadamente, el 8051 tiene temporizadores que pueden realizarmedidas y control del tiempo con alta precisin.

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    19/198

    154

    Secuencias de Estado enDispositivos MCS-51

    Consideraciones de tiempo ...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    20/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    21/198

    156

    Un ejemplo de una instruccin de 1 ciclo-2byte es addA,#dato. En este caso du- rante S1se busca el cdigo de operacin ( OP) y se carga en el registro IR, una se- gundabsqueda en el estado S4permite obtener elbyte dato del segundo operan- do. En S6seejecuta la suma, y el resultado se deposita en el acumulador.

    Consideraciones de tiempo ...

    addA,#dato 1 ciclo-2 bytes

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    22/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    23/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    24/198

    159

    Consideraciones de tiempo ...

    Diagrama de tiempo de laocurrencia de seales de un

    8051 ejecutando cdigo desdememoria de programa externa

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    25/198

    160

    En las operaciones de bsqueda yejecucin de cdigo en memoria

    externa la seal de lectura PSEN seactiva durante los estados S1 y S4 de

    cada ciclo de mquina.

    Consideraciones de tiempo ...

    1 CICLO DEMQUINA 1 C ICLO DEMQUINA

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    26/198

    161

    En el archivo acetat04.doc de lacarpeta seminario II se encuentranlos diagramas de tiempo del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    27/198

    162

    El Estado de Reset

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    28/198

    163

    El Estado de Reset

    Si el terminalRSTdel 8051 es mantenido en nivel

    alto por2 ms ciclos de mquina, el dispositivoentra en el estado de Reset.

    La CP U procede a realizar una inicializacin

    interna que consiste en modificar el contenido delos registros a valores predeterminados...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    29/198

    164

    ...El Estado de Reset

    El contador de programa (PC), el acumulador ( A), el registro B, lasbanderas de estado, el apuntador de datos ( DPTR), y todos losregistros de los temporizadores/ contadores son llevados a cero.

    El apuntador de pila (SP) es cargado con la direccin 07H.

    Las 8 lneas de cada puerto P0a P3 son forzadas a FFH.

    El contenido del registro SBUFser indeterminado, SCONse pone acero, mientras que a PCON se le carga un cero en el bit mssignificativo.

    Por ltimo, los registros de control de interrupciones IP e IE serancargados con el valor binarioXXX00000 y 0XX00000.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    30/198

    165

    ...El Estado de Reset

    Contenidodelos FSRdespusdeunreset.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    31/198

    166

    ...El Estado de Reset

    Cuando se aplica energa a una aplicacin, es deseable que se ejecu- teuna secuencia de inicio constituida por dos partes.

    La responsabilidad de la primera recae en el CP U y ocurre durante el estado de Reset.

    La segundapuede consistir en preparar al sistema para la funcin pa- ra lacual ha sido diseado.Por ejemplo,configurar contadores o puer- tos. Estaltima tarea debe ser realizada por programa por medio una rutina deinicio almacenada en la memoria de cdigo, a partir de la posicin 0000H.Recuerde que luego de la aplicacin de un pulso de Reset, elPCcontienesta direccin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    32/198

    167

    ...El Estado de Reset

    El valor de la constante de tiempo RC garantiza que RST estar a nivel altodurante un tiempo superior al de 2 ciclos demquina, despus de energizar el 8051.

    El pulsadorS permite aplicar un reset en

    forma manual. La entrada RST usa undisparador de Schmittpara garantizar elrechazo de ruido.

    La seal de reset puede ser aplicada al 8051 en forma automtica durantearranque. Para esto se recurre a un red RCcomo indica la figura.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    33/198

    168

    Estructura y Funcionamientode los Puertos de E/S

    Estructura y Funcionamientode los Puertos de E/S

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    34/198

    169

    Puertos de E/SPuertos de E/S

    Los cuatro puertos P0 a P3 tienen un registro latch (SFR), un buffer deentrada y un circuito de salida realizado con transistores FETs. Los puertosP0yP2 incluyen un multiplexorpara permitir el acceso a memoria externa.Durante el acceso a memoria exterior, por el puerto 0se emite el byte deorden bajo del bus de direcciones. Si la direccin es de 16 bits, el byte de

    orden alto aparece en elpuerto 2.Dos terminales de P1 y todos los de P3 tienen funcin dual, para activar lafuncin alternativa debe escribirse un 1 en el latch de la lneacorrespondiente.

    A las 32 lneas de E/S del 8051 se puede tener acceso comopuertos de 8bits o por bits independientes. Todas las lneas pueden programarse comoentradas o salidas.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    35/198

    170

    Puertos de E/SPuertos de E/S

    Estructura de una lnea de bit decada Puerto de E/S

    Estructura de una lnea de bit decada Puerto de E/S

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    36/198

    171

    Puertos de E/SPuertos de E/S

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    37/198

    172

    Leer latch

    Escribir a latchbus interno

    + VCC

    dir/dato

    control

    Leer pin

    D Q

    CL Q

    Leer latch

    Escribir a latch

    bus interno

    + VCC

    Leer pin

    D Q

    CLQ

    Puerto 0 Puerto 2

    Puerto 1 Puerto 3

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    38/198

    173

    El estado lgico delterminal fsico del puerto (el pin) pasa al bus internocomo resultado de un comando leer pin generado por el CPU. Ciertasinstrucciones de lectura de puerto activan la sealleer latch, mientras queotras usan el comando leerpin.

    Una seal interna, control, conmuta las lneas de los puertos 0 y 2 al businterno de direcciones o direcciones/datos para permitir el acceso amemoria externa. En este caso elSFR P2 no es afectado mientras quetodos los bits de P0son cargados con unos.

    Cuando el CPUemite una sealescribir a latch, se carga en el flip flop D(un bit del FSR) el estado lgico de la lnea del bus interno. En respuesta aun comando del CPU leer latch, el nivel lgico de la salida Q delbiestablese deposita en la lnea del bus interno.

    Puertos de E/S

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    39/198

    174

    Bit del Puerto 0

    T1

    T2

    Leer latch

    Escribir a latch

    bus interno

    + VCC

    dir/dato

    control

    Leer pin

    D Q

    CL Q

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    40/198

    175* resistor activo con fet

    Bit del Puerto 2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    41/198

    176

    Para usar elpin como entrada, la salida del latch deber estar, o ponerse a1, y ser responsabilidad de la fuente externa colocar la lnea en estadocero o uno.

    Algunas instrucciones que usan un puerto o bit de entrada como ope-rando fuente leen el estado lgico del pin, otras leen el nivel a la salida del

    latch.

    Puertos de E/S

    De modo que el mismo puerto puede usarse como entrada y salida,cargando unos en todos las lneas usadas como entradas en opera-cines de salida, e ignorando todos los pines usados como salidas en unaoperacin de entrada.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    42/198

    177

    La instruccin lgica jbcprueba la salida del latch antes del salto, as

    mismo clrysetb operan sobre la salida del latch de la lnea operando.

    Cuando el operando es un puerto, las instrucciones de un operando como:inc, dec, cpl, ydjnz, usan como dato la salida del latch en lugar del nivel enel pin.

    Las instrucciones de dos operandos: anl, orl, xrl, mov, cuando usan el puerto como operando destino, tambin leen la salida del latch. Estoasegura que las lneas usadas como entradas no sean llevadas a cero porla ejecucin de la instruccin.

    Puertos de E/S

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    43/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    44/198

    179

    Puertos de E/S

    La operacin sobre el FSR en lugar de sobre elpin asegura que las lneasusadas como entradas no sufran alteraciones forzadas, y ade- ms evitaambigedades en la lectura de la tensin en el terminal.

    Considere el caso de una lnea de un puerto del 8051 controlando untransistor bipolar que funciona como interruptor.Para activar el dispositivo BJT es necesario cargar uno en la lnea del puerto.Una lectura subsiguiente del bit del puerto detectara un cero, al re-gistrar latensin base-emisor , VBE}0.7 V,del transistor en conduccin.Leyendo el FSR en lugar del pin se obtiene el valor correcto, un estado alto,en la lnea del puerto,

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    45/198

    180* resistor activo con fet

    Bit del Puerto 1

    Leer latch

    Escribir a latch

    bus interno

    + VCC

    Leer pin

    D Q

    CL Q

    R*

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    46/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    47/198

    182

    Puertos de E/S

    Las lneas del puerto 0 son a drenador abierto cuando se usan comosalidas. Observe que el transistorT1 (pull-up) de P0permanece cortado a

    menos que se est escribiendo unos en una operacin de acceso amemoria externa. Si se carga un nivel alto en el latch, ambos transistoresde salida se cortan, y las lneas pueden usarse como entradas de altaimpedancia.

    Las salidas de los puertos 1,2 y 3 tienen resistores activos conectadoscomo pull-up (llevar a alto) y realizados con transistores MOS. Para queuna lnea de estos puertos sea usada como entrada es necesario cargar 1en el latch para cortarelMOSFET de salida. Con el transistor desactivado

    la lnea respectiva es puesta a nivel alto por el resistor pero puede ser llevada a cero desde el exterior.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    48/198

    183

    Puertos de E/S

    Como resultado de una operacin de RESET,todos los latchs de los puertos del 8051 soncargados con unos.

    Si posteriormente el programa escribe un ceroen un latch determinado, para que ste puedaser usado como entrada debe ser recargadocon uno.

    Importante

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    49/198

    184

    Puertos de E/S

    Elpuerto 0se considera verdaderamente bidireccional, puesto que cuandose configura como entrada sus lneas estn flotantes.

    En contraposicin lospuertos 1,2 y 3 se califican de cuasi bidi- reccionales.Estos permanecen en nivel alto cuando actan como en- tradas y drenarancierta corriente cuando son llevados a cero por una fuente externa.

    En el caso que una lnea de P3 est a nivel alto, el estado de la salida esfijado por la seal funcin alternativa de salidas. El nivel presente en el pinest disponible para la funcin alternativa de entrada del terminal.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    50/198

    185

    Alguna notas sobreprogramacinAlguna notas sobreprogramacin

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    51/198

    186

    Para realizar el proceso de representar un algoritmo como un programacapaz de realizarlo; el programador debe prestar especial atencin al usode tcnicas de programacin que faciliten el desa- rrollo de diagramas deflujo y de programas. La optimizacin de la escritura del cdigo se logra

    usando las tcnicas deprogramacin modular ycdigo estructurado.

    Como programar?

    La programacin modularconsiste en seccionar el programa en rutinas,las cuales pueden ser probadas por separado y pos- teriormenteintegradas en un programa capaz de resolver el proble- ma propuestooriginalmente. Cada uno de los mdulos en los cuales se divide el programa debe teneruna entrada yuna salida, y debe realizar una funcinnica, la cual debe ser independiente de las que realizan los otrosmdulos del programa.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    52/198

    187

    En lenguaje ensamblador los programacin se realiza usandoprocedimientos, los cuales son equivalentes a las subrutinas presentes enlenguajes de alto nivel.

    El uso de cdigo estructurado como mtodo de desarrollo de programases una va para eludir, en lo posible, el uso de instrucciones GO TO enprogramacin, debido a que este comando de bifurcacin resulta en eldesarrollo de programas confusos y difciles de analizar. S. Alagic (1978)

    expone:

    Como programar?

    Un teorema general sobre estructura afirma que cualquiera programa, sin importar quetan complejo sea, que tenga un solo punto de entrada y otro de salida, puede ser

    codificado completamente sin el uso explcito de instrucciones GO TO siempre y cuandoel lenguaje de programacin empleado permita la construccin de loops y proposiciones

    tipo CASE.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    53/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    54/198

    189

    Como programar?

    En estas estructuras de programacin unaproposicin fija las condicionesque se requieren para el control de la direccin de ejecucin del programa. Cuando se ejecuta la proposicin, se prueba una condicin yse transfiere el control hacia una de dos vas alternativas, de acuerdo con

    el resultado de la prueba.

    Dependiendo de la estructura bsica, la transferencia puede producir dosacciones: en un caso, el resultado de la prueba produce la ejecucin deun proceso especfico, o la salida del mdulo; en el otro, se selecciona

    uno de dos ms procesos posibles. En cualquier la culminacin de laejecucin del cdigo implica la salida de la rutina. El resultado es el desarrollo de programas ms eficientes, fciles de entender y demodificar.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    55/198

    190

    Como programar?

    Estructura IF-THEN/ELSE:Un elemento de decisin permite la ejecucin de un proceso o la seleccinentre la ejecucin de dos procesos. En el primer caso la estructura se reducea IF-THEN.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    56/198

    191

    Como programar?

    entrada

    condicin?

    proceso 1

    salida

    proceso 2

    If Then If Then/Else

    entrada

    condicin?

    salida

    proceso

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    57/198

    192

    Como programar?

    Estructura CASE:

    En el caso que se deba probar una condicin para ejecutar ms de dos

    procesos deben utilizarse varias estructuras IF-THEN/ELSE, lo cual puedecomplicar innecesariamente un programa. La estructura CASEes msadecuada para este caso. La accin de CASEes evaluar un dato de ungrupo posible, y ejecutar el proceso asignado al dato.

    Para garantizar que la estructura CASEtenga una entrada y una salida, cada

    rutina de proceso debe finalizar con una instruccin de salto incondicional a lamisma direccin de memoria.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    58/198

    193

    Como programar?

    entrada

    condicin?

    proceso 1

    salida

    proceso 2proceso 1 proceso 1

    CaseCase

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    59/198

    194

    Como programar?

    Estructura WHILE- DO:

    Las instrucciones de salto permiten el establecimiento de lazos de

    programacin, en los cuales un grupo de instrucciones se ejecutarepetidamente, una instruccin de salto condicional es la encargada decontrolar la repeticin y salida.

    En esta estructura la condicin al inicio del lazo es evaluada repetidamente, yel resultado de la prueba indicar si se debe ejecutar el lazo o salir de este.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    60/198

    195

    Como programar?

    entrada

    condicin?

    salida

    proceso 1

    While-DoWhile-Do

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    61/198

    196

    Como programar?

    Estructura REPEAT-UNTIL:

    En este caso el control entra al lazo y el proceso es ejecutado, pos-teriormente se prueba la condicin y dependiendo del resultado se repite ellazo o se abandona este. A diferencia de la estructura DO-WHILEen la cual es posible que el lazo nunca se ejecute, en REPEAT-UNTIL se ejecu- ta al

    menos una vez.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    62/198

    197

    Como programar?

    entrada

    condicin?

    salida

    proceso 1

    Repeat-UntilRepeat-Until

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    63/198

    198

    Como programar?

    No siempre estas dos ltimas estructuras de programa-

    cin exigen un contador para el control de repeticindel lazo, es po- sible mantener activo el lazo hasta laocurrencia de un evento externo, como la introduccinde un caracter por un puerto, o la lectura de un dato

    de control almacenado en memoria.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    64/198

    199

    Como programar?

    Aunque para desarrollar un programa ejecutable por un microprocesadorexisten tres opciones, usar: lenguaje de mquina, lenguaje ensamblador olenguaje de alto nivel; son los programas en lenguaje de mquina los que

    puede ejecutar directamente el microprocesador. Los escritos enensamblador, Co Pascaldeben sertraducidos a cdigo de mquina antes deser ejecutados.

    Un programa en lenguaje de mquina es una secuencia de instrucciones ydatos en binario, y es el cdigo que la mquina entiende y ejecuta.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    65/198

    200

    Programacin

    del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    66/198

    201

    La arquitectura del conjunto de instrucciones del

    8051 fue diseada con orientacin a las apli-caciones de control de baja y media compleji- dad,haciendo posible un fcil y rpido acceso a lamemoria RAM interna, y con capacidad de

    procesamiento Booleano.

    Programacin del 8051Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    67/198

    202

    AritmticasLgicasTransferencia de datosBooleanasSaltos

    Las instrucciones se agrupan en:

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    68/198

    203

    Programacin del 8051

    Nomenclatura

    A Registro acumulador Acc

    Direccin del acumulador.Rn Registro R0, R1, R2, R3, R4, R5, R6, R7.directo, dir direccin de la RAMinterna (8 bits)#dato constante de 8 bits (byte)#dato16 constante de 16 bits (palabra)

    dir16 direccin de 16 bits (Hasta 64 KB)dir11 direccin de 11 bits (hasta 2 KB)bit direccin de un bit de la RAMinterna

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    69/198

    204

    Programacin del 8051

    El conjunto de instrucciones del C 8051 ofrece 33 funcionesdiferente, con 42 mnemnicos distintos y 6 modos de

    direccionamiento para los operandos.De todo ello resulta un conjunto de 111 instrucciones en total, queresumimos en las siguientes tablas, en las cuales la 1 columnapresenta el mnemnico de la instruccin y los operandos que

    requiere, la 2 columna especifica la operacin que realiza lainstruccin, las columnas 3 y 4 indican los modos dedireccionamiento permitidos para los operandos destino y origenrespectivamente.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    70/198

    205

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    71/198

    206

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    72/198

    207

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    73/198

    208

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    74/198

    209

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    75/198

    210

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    76/198

    211

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    77/198

    212

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    78/198

    213

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    79/198

    214

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    80/198

    215

    Programacin del 8051

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    81/198

    216

    ACALL: Llamada absoluta a subrutinaADD, ADDC: Sumar acumulador (Con Acarreo))AJMP: Salto absoluto

    ANL: Bitwise ANDCJNE: Comparar and saltar si no es igualCLR: Cargar cero en registroCPL: Complementar registroDA: Ajuste decimal del acumuladorDEC: Decrementar Registro

    DIV: Dividir acumulator por BDJNZ: Decrementar registro y saltar si no es ceroINC: Incrementar RegistroJB: Saltar si bit es 1JBC: Saltar si bit es 1 y ponerlo a cero.

    Programacin del 8051

    JC: Salto si acarreo es 1JMP: Salto incondicional JNB:Salto si bit es cero

    JNC: Salto si acarreo es ceroJNZ: Salto si contenido delA no es ceroJZ: Salto si contenido delA es ceroLCALL: Llamada a subrutina dentro de 64KLJMP: Salto dentro de 64 KMOV: Mover

    POP: Obtener Valor de la pilaPUSH: Cargar valor a la pila RET:Retorno desde subrutinaMOVC: Move byte de cdigo MOVX:Mover byte desde RAMexterna

    MUL: Multiplica elAcumuladorbyBNOP: No hacer nadaORL: OR

    RETI: Retorno de subrutina de servicio de interrupcinRL: Rotar a la izquierda elAcumulador RLC:RotarA a travs de la bandera de acarreoRR: Rotar a la derecha elAcumulador RRC:RotarA a la derecha a travs del acarreo CSETB: Poner bit a 1

    SJMP: Salto restringidoSUBB: Resta delA con acarreoSWAP: Intercambia Nibbles del AcumuladorXCH: Intercambia bytesXCHD: Intercambia dgitosXRL: OR exclusivo

    Instrucciones pororden alfabtico

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    82/198

    217

    Programacin del 8051

    Sistema Integrado para DesarrolloIDE Vision2

    TM: RegistradaPor Keil Software,INC.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    83/198

    218

    AdvertenciaEsta es una versin de evaluacin, en la cual estn

    ausentes ciertos recursos de suma utilidad para eldesarrollo de aplicaciones profesionales.

    No obstante es posible desarrollar y depurar proyectos didacticos con este programa, si laextensin del cdigo no viola el lmite impuesto por

    el fabricante.La literatura de apoyo es muy completa y bienpresentada, por lo cual se recomienda amplia-mente su revisin.

    Programacin del 8051

    Recursos Editor de cdigo fuente.

    Base de datos con cientos de versio-nes del 8051.

    Administrador de proyectos para lacracin y mantenimiento de las apli-caciones

    Herramienta MAKE integrada para en-samblar, compilar y enlazar los mdu-los.

    Depurador a nivel de fuente con simu-lador de CPU y perifricos.

    Manuales de usuario.

    La aplicacin windows Vision2 es ungrupo de programas que ofrece un am-

    biente integrado para el desarrollo desistemas microcontroladores basados enel8051.

    Esta plataforma de desarrollo contiene un

    editor de textos, un administrador deproyectos, y herramientas de fcil usopara la compilacin y enlazado de losmdulos fuente de la aplicacin.

    IDE Vision2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    84/198

    219

    Programacin del 8051

    El ensamblador ASM51 o elcompilador C51 se utilizan del

    modo conocido por todos. Enlugar de describir el programaVision2, se presenta el desa-rrollo de un proyecto.

    Quien lee debe consultar losmanuales de usuario paraaclarar dudas.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    85/198

    220

    Programacin del 8051

    Notas sobreprogramacin en

    lenguaje ensamblador

    Notas sobreprogramacin en

    lenguaje ensamblador

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    86/198

    221

    Programacin del 8051

    Disear, codificar, y probar en paralelo mdulos distintos del programa y;

    Limitar las modificaciones necesarias a un modulo especifico en

    lugar de hacerlo al programa completo.

    Los ensambladores modernos son diseados para permitir el uso deprogramacin estructurada, pudiendo el programador:

    En procura del logro de estos objetivos la traduccin del programa fuentese ejecuta en dos pasos:

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    87/198

    222

    Programacin del 8051

    En elsegundo paso, genera un cdigo el cual no est totalmente en cdigode mquina. Ms bien es un cdigo muy cercano al lenguaje de mquina,

    denominado cdigo relocalizable, al cual llamaremos cdigo objeto.

    Durante elprimer paso el ensamblador examina el programa fuente enlenguaje de ensamblaje y agrupa las referencias simblicas en una tabla.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    88/198

    223

    Programacin del 8051

    Los valores de las entidades absolutas son independientes de lasposiciones de memoria que el cdigo de mquina resultante del ensamblado, pueda eventualmente ocupar.

    Las entidades relativas incluyen la direccin de la instruccin , son fijas

    slo una con respecto a la otra , y son normalmente asignadas conrelacin a la direccin de el inicio del mdulo. Una entidad definida comoexterna es usada dentro de un mdulo pero no est definida dentro de ste

    Los programas en lenguaje ensamblador contienen tres tipos de entidades:Absolutas, las cuales incluyen cdigos de operacin, ConstantesNumricas yAlfanumricas yDirecciones Fijas.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    89/198

    224

    Programacin del 8051

    Un segmento es un bloque de memoria de cdigo o de datos, y puede ser

    absoluto o relocalizable.Un segmento relocalizable tiene nombre, tipo y otros atributos. Lossegmento que tengan el mismo nombre , pero procedan de diferentesmdulos son considerados parte del mismo segmento y son llamados

    segmentos parciales, estos son combinados por el enlazador/re-localizadorL51.

    Un segmento absoluto no tienen nombre y no pueden combinarse conotros segmento.

    En la etapa inicial de desarrollo de la aplicacin se establecen las tareasprograma y se asigna cada una a un subprograma.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    90/198

    225

    Programacin del 8051

    Despus que el diseo del programa es completado, se escribe elcdigofuente, y se traduce a cdigo objeto usando elA51, como ilustra la

    transparencia 219. El ensamblador genera: un archivo obje- to .obj y unarchivo texto .lsto listado del programa, el cual muestra el resultado delensamblaje.

    Un mdulo tiene un nombre asignado por el usuario y puede contener unoo ms segmentos o segmentos parciales. Un programa ejecutableconsistir de un mdulo absoluto nico, el cual es una combinacin de los

    segmentos absolutos yrelocalizables de todos los mdulos de entrada

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    91/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    92/198

    227

    Programacin del 8051

    El archivo objeto contiene las instrucciones en lenguaje de mquina y losdatos a ser cargados en memoria y ejecutados, adems de comandos decontroladicionales que dirigen el proceso de carga. El ensamblador puedeproducir un archivo objeto en cdigo reloca- lizable, pero si el mdulo

    contiene solo segmentos absolutos, el archivo objeto, producto del ensamblaje, ser cdigo absoluto. Este puede ser cargado en memoria sinpasar por el linker/relocalizador.

    El archivo lista es un archivo texto que contiene una mezcla del programa

    fuente y el cdigo objeto, indicando las direcciones de memoria utilizadaspara almacenamiento del programa, y mensajes de posibles errorescometidos en la escritura del texto fuente.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    93/198

    228

    Programacin del 8051

    Al final del ensamblado de todos los mdulos del programa , el programaenlazador procesa el archivo de mdulos objeto. La funcin dellinkeresasignar direcciones absolutas de memoria a todos los segmentosrelocalizables , combinando segmentos del mismo nombre y tipo. Ademsel enlazador resuelve todas las referencias entre mdulos.

    Las salidas delL51 son: Un archivo objeto en cdigo absoluto listo para

    ejecutar, y un archivo lista que muestra los resultados del proceso deenlazado y relocalizacin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    94/198

    229

    Programacin del 8051

    Un emulador es una herramienta especializada para el desarrollo desistemas basados en microprocesadores. Usualmente es un equipoperifrico de un PC al cual se conecta la tarjeta prototipo de la aplicacin,de modo que el usuario pueda aprovechar todas los recursos del PC para

    la depuracin del programa y del hardware sin realizar grabaciones enEPROM.

    Keil Software dispone de un emulador denominado MONITOR-51,el cualpuede ser usado en conjunto con IDE Visin2

    La transparencia 220 muestra que el modulo objeto en cdigo absolutopuede ser cargado sin modificaciones en un emuladorpara la depuracin delprograma en tiempo real, o en el sistema integrado IDE Visin2 parasimular la ejecucin del programa.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    95/198

    230

    Programacin del 8051

    Mdulos Objetorelocalizables

    Mdulo Objeto absoluto

    Mdulo hexMdulos fuente

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    96/198

    231

    Programacin del 8051

    Para la grabacin en EPROMdel archivo en cdigo objeto absoluto de unaaplicacin desarrollada con Vision2, es necesario convertir el cdigoobjeto a formato hexadecimal usando la herramienta OH51. Ciertosequipos programadores de memoria EPROM, generalmente de losfabricantes del Ctrl, aceptan directamente el archivo en cdigo absoluto.

    Algunos QC de bajo costo, FENIX-51 y SDK-51, requieren que el cdigo

    objeto absoluto est en formato hexadecimal para proceder a su ejecucin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    97/198

    232

    Programacin del 8051

    Define un segmento genrico llamado PROG de clase CODE

    Un segmento no es ms que un bloque de memoria que el A51 crea a partir del cdigo o datos del archivo fuente. Un segmento genrico se crea con ladirectiva de ensambladorSEGMENT. La declaracin :

    El 8051 es un procesador con reas de memoria destinadas paraalmacenamiento de informacin especfica. En un archivo fuente se usansegmentospara asignar el cdigo, datos y variables a estas reas.

    PROG SEGMENT CODE

    Segmentos genricos

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    98/198

    233

    Programacin del 8051

    El segmento PROG ser usado por el cdigo y datos siguientes a ladeclaracin hsta cuando sea desactivado por otra RSEG o por una directivade segmento absoluto.

    Una vez definido un segmento relocalizable, se selecciona usando ladirectiva RSEG

    RSEG PROG

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    99/198

    234

    Programacin del 8051

    Despues de una operacin de RSESET el 8051 debe iniciar la ejecucin delcdigo en la direccin 0 de memoria. Se puede usar un segmento absolutopara forzar el cdigo a esta direccin. CSEG define un segmento absoluto

    de cdigo yATla direccin de inicio del segmento.

    No tienen nombre y residen en un rea fija de de memoria. Se crean usandolas directivas CSEG, DSEG, XSEG, ISEG yBSEG. Estas permiten localizarcdigo y datos o reservar un bloque de memoria en una localizacin fija.

    CSEG AT 0 ;direccin vectorizada de resetjmp inicio ;Salto al inicio del cdigo

    Segmentos absolutos

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    100/198

    235

    Programacin del 8051

    CSEG AT 0 ;direccin vectorizada de resetjmp inicio ;Salto al inicio del cdigo

    El apuntador de pila debe cargarse al inicio del programa

    Si la aplicacin usa subrutinas debe declararse un segmento de pila parareservar un rea de memoria para elstack.

    PILA SEGMENt IDATA ;define segmento de pilaRSEG PILA ;lo seleccionaDS 16 ;reserva 16 bytes para la pila

    Segmento de stack

    CSEG AT 0 ;direccin vectoriada de resetjmp inicio ;Salto al inicio del cdigo

    inicio: ;inico de ejecucinmov SP #PILA-1 ;se carga el apuntador de pila

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    101/198

    236

    Programacin del 8051

    Etapas deldesarrollo de una

    aplicacin con

    Procesador

    Inicio

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    102/198

    237

    Simular

    programa

    Ensamblar

    programa

    Errores

    Falla

    Error de

    texto

    Escribir o

    modificar

    fuente

    Cargar pro-

    grama en

    Prototipo

    Corregir

    hardware

    FuncionaFalla

    HardwareDepurar

    programa

    Fin

    si

    no

    no

    si

    si

    no

    no

    si

    si

    no

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    103/198

    238

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    104/198

    239

    Programacin del 8051

    Etapas del desarrollo

    de una aplicacinusando el sistema

    IDE Vision2

    Etapas del desarrollo

    de una aplicacinusando el sistema

    IDE Vision2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    105/198

    240

    Programacin del 8051

    Crear un archivo de proyecto.

    Paso 1

    Seleccionar la versin del 8051.

    Paso 2

    Escribir uno o mas archivo fuente en ensamblador(nombre.a51) o en C(nombre.c51).

    Paso 3

    Agregar los archivos fuentes al proyecto y configura opciones

    Paso 4

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    106/198

    241

    Programacin del 8051

    Construir (BUILD) la aplicacin con el administrador de proyectos.

    Paso 5

    Corregir errores en los mdulos fuente.

    Paso 6

    Simular y depurar la aplicacin

    Paso 7

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    107/198

    242

    Programacin del 8051

    Extension de archivos de Vision2Extension de archivos de Vision2

    .SRC Archivo fuente genrico

    .A51 Archivo fuente a ensamblar conA51

    .C Archivo fuente a compilar con C51

    .OBJ Archivo objeto por defecto*

    .LST Archivo de lista por defecto

    .M51 Archivo de lista de L51yBL51

    *El usuario puede especificar otra extensin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    108/198

    243

    Programacin del 8051

    Programa 1Programa 1

    Leer un dato desde elpuerto 2.

    Si corresponde al cdigo ASCII de la letra R debe activar un indicadorluminoso conectado albit 7delpuerto 3.

    En caso contrario, activa un leden el bit 0del mismo puerto.

    Use la estructura lgica IF-THEN-ELSEen un programa para:

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    109/198

    244

    Programa 1

    NAME IF_THEN

    codigo SEGMENT CODE

    CSEG AT 0

    USING 1 ; Seleccionael banco de registros 1

    JMP inicio

    RSEG codigoinicio:

    dato equ P2 :El dato se obtiene de P2ledR equ P3.7 ;El caracter R activa el Led en P3.7ledNR equ P3.0 ;El carcter{ R activa el Led en P3.0

    mov P3,#0 ;Se carga cero en P3mov a,dato ;Se transfiere el dato al acumulador

    cjne a,#'R',noesr ;Salto si no es R setbledR ;Es R, se activa P3.7 sjmpsalir ;fin noesr: setbledNR ;No es R, se activa P3.0

    salir: nopend

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    110/198

    245

    Programa 1

    1) Se crea el proyecto ifthen.uv2.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    111/198

    246

    Programa 1

    2) Seleccin del dispositivo

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    112/198

    247

    Programa 1

    3) Se escribe el cdigo fuente: if_then.a51

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    113/198

    248

    Programa 1

    4) Con el men Projectse crea elGrupo Archivo fuente.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    114/198

    249

    Programa 1

    El archivo ifthen .a51 se incluye en el grupoArchivo fuente

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    115/198

    250

    Programa 1

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    116/198

    251

    Programa 1

    5) Usando BUILD en el men Project, se construye la aplicacin

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    117/198

    252

    Programa 1

    6) Si no hay errores se pasa al paso siguiente.

    7) Usando Debug, se simula la aplicacin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    118/198

    253

    Programa 1

    Antes de la ejecucin el carcterR est en elpuerto 2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    119/198

    254

    Programa 1

    Despus de ejecutar se activa el LED en P3.7

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    120/198

    255

    Programa 1

    Si lo desea puede documentar la aplicacin creando un nuevo gru- po, porejemplo documento y agregando un archivo nombre.txt

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    121/198

    256

    Programa 1

    Observe que la instruccin en la lnea 17: mov a,dato transfiere alacumulador el estado de los terminales de P2, con independencia delcontenido dellatch.

    A diferencia de otros Ps, el8051 notiene una instruccin para detener laejecucin del programa.

    Si la ltima instruccin ejecutable en unprograma es NOP (no operacin),

    acompaada de un punto de ruptura(breakpoint), el proces se detendr.De otra manera recibir un mensaje deviolacin de acceso a memoria.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    122/198

    257

    Programa 1

    Usando puntos de ruptura

    Introducir puntos de parada de la ejecucin facilita la

    depuracin del programa. En elmanual del usuario delensamblador A51 se encuentra informa- cin detalladasobre este tpico. Si en lugar de activar las ventanas delos PORTS I/O, se usan los siguientes breakpoints.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    123/198

    258

    Programa 1

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    124/198

    259

    Programa 1

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    125/198

    260

    Programa 1

    El ltimo (detener programa) se activa haciendo click con el ratnsobre la lnea final de cdigo.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    126/198

    261

    Programa 1

    El resultado al ejecutar elprograma...

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    127/198

    262

    Programa 1

    Breakpoint 0

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    128/198

    263

    Programa 1

    Breakpoint 1

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    129/198

    264

    Programa 2Programa 2

    CUANDO:valor=0 Activar la bandera de acarreo.

    valor=1 Cargar 1 en bit 0 de P3.

    valor=2 Bandera de usuario a 1.

    valor=3 Cargar cero en Puerto 2

    Escribir un programa con estructura CASE, para seleccionar una de cuatroopciones de acuerdo con el valor en el registro R5.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    130/198

    265

    Programa 2

    NAME EL_CASE

    codigo SE GMENT CODE

    CSEG AT 0

    JMP inicio

    RSEG codigo

    inicio: nop

    valor equ R5

    menu: cjne valor,#0,menu1setb C sjmp salir

    menu1: cjne valor,#1,menu2clr P3.0sjmp salir

    menu2: cjne valor,#2,menu3setb F0sjmp salir

    menu3: cjne valor,#3,saliranl P2,#0

    salir: nopend

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    131/198

    266

    Elbreakpoint 0presenta el men de funciones en la ventana de salidaElbreakpoint 1permite seleccionar la opcin.

    Programa 2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    132/198

    267

    El usuario puede configura un grupo de pulsadores con comandos asociados(Toolbox).

    Programa 2

    Con estos botones ( 1 a 4) se puede, por ejemplo, verificar la ejecucin.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    133/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    134/198

    269

    Con el men Project/Options for Target Aplicacin2/Debug, se carga el archivo texto de comandos en el archivo fuente.

    Programa 2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    135/198

    270

    Ejecutando con R5=1, se verifica con el pulsador 2 que P3.0=0.

    Programa 2

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    136/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    137/198

    272

    NAME DO_WHILEdorg equ r0 dorgh equ r1ddesl equ r2ddesh equ r3

    i equ 60Htbloq equ 128inicio:

    mov i,#tbloq+1lazo: djnz i,seguir

    jmp salirseguir: mov dpl,r0

    mov dph,r1movx a,@dptrinc r0 mov dpl,r2

    mov dph,r3movx @dptr,ainc r2jmp lazo

    salir: nopend

    Programa 3

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    138/198

    273

    El bloque inicio, 128bytes, se carga en memoria con:

    >E CHARx:0x0200 = r1=2,r0=0,r3=6,r2=0

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    139/198

    274

    Programa 3

    Bloque inicio

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    140/198

    275

    Programa 3

    Bloque destino

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    141/198

    276

    Programa 4Programa 4

    Igual al anterior pero con estructura lgica REPEAT-UNTIL.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    142/198

    277

    NAME REPEAT_UNTILdorg equ r0 dorgh equ r1ddesl equ r2ddesh equ r3con equ 60H

    tbloque equ 128inicio:

    mov con,#tbloque+1

    lazo: mov dpl,r0mov dph,r1movx a,@dptrinc r0 mov dpl,r2mov dph,r3

    movx @dptr,ainc r2djnz con,lazojmp salir

    salir: nopend

    Programa 4

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    143/198

    278

    Programa 5Programa 5

    1. Ordenar los datos en forma ascendente.

    2. Eliminar los dos valores menores y mayores de la tabla.

    3. Calcular el promedio de los elementos restantes.

    Dada una tabla de 10 bytes almacenados a partir de la posicin 70Hde lamemoria interna de datos:

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    144/198

    279

    Programa 5

    Se usan tres mdulos llamados por el programa principal

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    145/198

    280

    Programa 5

    Filtro: programa principal

    Orden: ordena en forma ascendente una lista de hasta 256 ele- mentos,almacenados a partir de la posicin itabl. Se usa el metodo de la burbuja(bubble).

    Esta tnica de ordenacin interna es la ms fcil de programar pero lamenos eficiente en trminos de tiempo de CPU. Adems no aprovecha laordenacin inicial de la tabla. No obstante se usa debido a que es la msapropiada para listas de 4 a 10 elementos.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    146/198

    281

    Programa 5

    Por ejemplo, para ordenar la lista 5 1 3 2 4 6 se comparan el 1er elemen- tocon el 2do, e l 3ro con el 4to y asi sucesivamente. Si el elemento en posicinms baja es mayor que el siguiente, se intercambian. En este caso serequieren tres pasos.

    5-1 3 2 4 6 1-3 2 5 4 6 1-2 3 4 5 6

    1 5-3 2 6 4 1 3-2 5 4 6 1 2-3 4 5 6

    1 3 5-2 6 4 1 2 3-5 4 6 1 2 3-4 5 6

    1 3 2 5-6 4 1 2 3 5-4 6 1 2 3 4-5 61 3 2 5 6-4 1 2 3 4 5-6 1 2 3 4 5-6

    1 3 2 5 4 6 1 2 3 4 5 6 1 2 3 4 5 6

    Paso 1 Paso 2 Paso 3

    En elpaso 3 no se realizaron cambios, de modo que la lista est ordenada

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    147/198

    282

    Programa 5

    Si una bandera denominada nocambio es verdad, finaliza el proceso.

    REPITA HASTA nocambio=verdad /*haga un paso*/

    nocambio=verdadLAZO desde I=1 hasta ultimo(lista)-1SIlista(I)>lista(I+1)intercambie cambie lista(I) con lista(I+1)nocambio=falso

    FINFIN

    FIN

    Algoritmo

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    148/198

    283

    Programa 5

    Suma88: calcula la suma de hasta 256 valores de 8 bits almacena-dos en memoria.

    Entradas:ndatos: nmero de elementos a sumar en R2.

    dinicio: Direccin del 1erdato enA.

    Salida: El resultado de 16 bits es devuelto en R3-A.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    149/198

    284

    Programa 5

    Div168: Divide un valor de 16 bits entre un nmero de 8 bits.

    Entradas:

    Dividendo en R1-R2

    Divisor en R3

    Salida: El cociente de 16 bits es almacenado en las posiciones

    60H-61Hde la memoria interna.

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    150/198

    285

    Programa principal

    NAME filtroPUBLIC itabl,nocambio,temp,temp1,temp2,num,dinicio,ndatosEXTRN

    CODE(orden,sum88,div168)codigo segment codepila segment idatavarbit segment bit

    rseg pila

    ds 10hcseg at 0jmp iniciorseg codigo

    inicio: mov sp,#pila-1itabl equ 70h ;direccin de inicio de la tablanum equ 0Ah ;nmero de bytes en la tablatemp1 equ 50h

    temp2 equ 51Htemp equ 60hdinicio equ 72h ;direccin nicial de datos a promediandatos equ 6 ;nmero de datos a promediar

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    151/198

    286

    lcall orden ;ordenar datos

    mov r2,#ndatos

    mov a,dinicio

    lcall sum88 ;obtener suma de datos a promediar

    mov r2,a ;resultado de la sumaxch a,r3 ;en r1-r2

    mov r1,a ;(dividendo)

    mov r3,#6 ;divisor en r3

    lcall div168 ;obtener promedio

    salir: nop

    rseg varbit ;activa segmento de bitnocambio: dbit 1 ;reserva una posicin de bit

    end

    Programa principal

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    152/198

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    153/198

    288

    Orden

    NAME ordenar

    PUBLIC orden

    EXTRN DATA (itabl,num,temp1,temp2)EXTRN BIT (nocambio)

    Ordenar_Bytes SEGMENT CODE

    RSEG Ordenar_Bytes

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    154/198

    289

    Orden

    orden: ;inicio de pasomov r2,#num-1 ;contador de datosmov r0 ,#itabl ;primer elemento de la tabla enmov r1,#itabl+1 ;segundo elemento de la tabla en r1setb nocambio ;bandera de cambio a 1

    cambiar: mov a,@r0 ;comparacin de los elementossubb a,@r1jc siga ;si (r0)

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    155/198

    290

    Sum88

    NAME suma8_8PUBLIC sum88EXTRN DATA (dinicio,ndatos)

    Sumar_Bytes SEGMENT CODERSEG Sumar_Bytes

    sum88: mov r2,#ndatos-1mov r3,#0mov r0 ,#dinicio+1clr c

    sumar: add a,@r0jnc proxdato incr3 ;puede usarse addcproxdato: inc

    r0 djnz r2,sumar salir:nopretend

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    156/198

    291

    Div168

    NAME div16_8

    PUBLIC div168

    EXTRN DATA (temp)Dividir SEGMENT CODE

    RSEG Dividir

    i 68

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    157/198

    292

    Div168

    div168: mov r4,#2mov r0 ,#tempmov a,r1mov b,r3div abxch a,@r0

    lazo: mov a,bswap amov r1,amov a,r2cjne r4,#2,saltswap a

    salt: anl a,#0fhadd a,r1mov b,r3div ab

    inc r0 xch a,@r0djnz r4,lazomov a,temp+1swap aadd a,temp+2

    xch a,temp+1mov temp+2,#0

    retend

    P 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    158/198

    293

    Programa 5

    Tabla en memoria sin ordenar

    P 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    159/198

    294Tabla ordenada

    Programa 5

    P 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    160/198

    295Promedio en 60H-61H

    Programa 5

    C t i b l P 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    161/198

    296

    Orden: ordena en forma ascendente una lista de hasta 256 ele- mentos,almacenados a partir de la posicin itabl. Se usa el metodo de la burbuja(bubble).

    Esta tnica de ordenacin interna es la ms fcil de programar pero lamenos eficiente en trminos de tiempo de CPU. No obstante se usa debido a

    que es la ms apropiada para listas de 4 a 10 elementos.

    Comentarios sobre el Programa 5

    C t i b l P 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    162/198

    297

    El programa 5 realiza la tarea especificada, ordena y calcula el promedio. Noobstante es un buen ejemplo de lo que no debe hacerse en aplicaciones decontrol

    ordena en forma ascendente una lista de hasta 256 elementos, almacenadosa partir de la posicin itabl. Se usa el metodo de la burbuja (bubble).

    Comentarios sobre el Programa 5

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    163/198

    298

    Programa 6Programa 6

    Se debe escribir un programa de control para un voltmetro DC conconvertidor A/D de pendiente doble, usando un 8051. El valor de la tensin

    desconocida debe mostrarse en una pantalla de cristal lquido, con el formato mostrado en la figura.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    164/198

    299

    El 8051 enva por las ocho lneas del puerto P1 los caracteres a presentar einstrucciones de control.Por las lneas P3.7, P3.6, yP3.5se emiten las seales de control: EN, RS yR/W.

    Programa 6

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    165/198

    300

    Programa 6

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    166/198

    301

    Programa 6

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    167/198

    302

    Programa 6

    Programa 6Convertidor A/D de pendiente doble

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    168/198

    303

    Programa 6Co e t do / de pe d e te dob e

    Programa 6Convertidor A/D de pendiente doble

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    169/198

    304

    Programa 6p

    Es posible demostrar ( Ver archivo anexo: Voltmetro DC.pdf) que unconvertidor A/D de pendiente doble produce una cuenta digital proporcional ala tensin DC que est bajo medicin. Esto es:

    donde:

    Ve: voltaje DC que se mide

    n: Cuenta digital correspondiente al valor medido.

    Vr: Voltaje de referencia. (-2.0 V en este caso)

    N: Cuenta correspondiente a Vr. 213 = 8192 en este diseo)

    ree

    r

    VVn N V n

    NV! ! v

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    170/198

    305

    Programa 6

    Procedimiento de medicin:

    El instrumento debe medir el voltaje de entrada, presentarlo en la pantalla yLCD y repetir la medida. Un ciclo de medicin consta de tres pasos:

    Paso 1: Inicio

    Se conecta la tensin de referencia (Vr = - 2 V ) a la entrada del integrador, locual produce una rampa positiva. El diodo del integrador fija el valor mximo

    de la rampa a su tensin de conduccin. Esta situacin se mantiene durante40 ms como ilustra la figura que sigue. Este tiempo no es crtico y puede sermenor. La salida del comparador se mantiene a una tensin negativa.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    171/198

    306

    Programa 6

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    172/198

    307

    Programa 6

    Paso 2: Integracin de Ve

    El cdigo conecta la tensin desconocida Ve al integrador y se genera una

    rampa negativa. En t1 (47.4 ms) la rampa cruza el nivel de cero voltios y el comparador sube a una tensin positiva. El programa debe detectar estecruce por cero y arrancar un contador previamente cargado con cero. Lacuenta contina hasta cuando el contador alcance N=8192, en t2 = 96.4 ms.El lapso t2 t1 de 49 ms es constante e independiente de la tensin de

    entrada.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    173/198

    308

    Programa 6

    Paso 3: Integracin de Vr

    El P debe conectar de nuevo la tensin de referencia al integrador, poner el

    contador en cero e iniciar un nuevo conteo. La rampa, ahora positiva, seincrementa y en t3 = 130.7 ms alcanza cero voltios y la salida rectificada delcomparador cae nivel bajo. El cdigo debe detectar este cruce por cero yparar el contador y almacenar la cuenta igual a n.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    174/198

    309

    Programa 6

    Durante el intervalo t2 t1 de la fase 2, el contador alcanza N = 8192. Locual significa que la velocidad de incremento es aproximadamente de unocada 6 s. El programa debe garantizar que el contador de la fase 3 avancecon esta misma cadencia. El tiempo t3-t2 es igual a 34.3 ms, de modo quebajo las condiciones establecidas, el valor registrado para n debe ser 5716.As se tiene:

    e 1.3952

    V 5716

    8192

    !

    ! v

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    175/198

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    176/198

    311

    Programa 6

    El cdigo delvoltmetro DCest constituido por diez mdulos.

    El programa principal,

    seis rutinas para control de la pantalla de cristal lquido,

    un subprograma para la conversin a BCD, una rutina demultiplicacin

    y un cdigo para generar retardo.

    La funcin de cada mdulo se encuentra en el cdigo.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    177/198

    312

    Programa 6

    Los mdulos fueron ensamblados y enlazados usando unproyecto con la herramienta Vision.

    A continuacin se presenta la pantalla principal del vision mostrando los mdulos que constituyen el cdigode control del voltmetro DC.

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    178/198

    313

    g 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    179/198

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    180/198

    315

    g

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    181/198

    316

    g

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    182/198

    317

    g

    mul8_16 Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    183/198

    318

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    184/198

    319

    g

    conv_bcd Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    185/198

    320

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    186/198

    321

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    187/198

    322

    retar_5ms Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    188/198

    323

    cmd Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    189/198

    324

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    190/198

    es_cdn Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    191/198

    326

    es_mem Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    192/198

    327

    ini_lcd Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    193/198

    328

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    194/198

    329

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    195/198

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    196/198

    331

    Vision se usa para el desarrollo del programa. Para una emulacin msreal se recurre al paquete de simulacin de circuitos electrnicos PROTEUS6.9. Este software permite la simulacin del voltmetro con todos suscomponentes.

    Observe que se modificaron los valores:

    C1 = 6.8 f R2 =4 .7K y se usa un diodo con menorIsat inversa que el1N914

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    197/198

    Programa 6

  • 8/8/2019 Micro Control Adores en Control II-Luis Urdaneta

    198/198

    IC=0

    XTAL218

    XTAL119

    ALE30

    EA31

    PSEN29

    RST9

    P0 0/AD039

    P0 1/AD138

    P0 2/AD237

    P0 3/AD336

    P0 4/AD435

    P0 5/AD534

    P0 6/AD633

    P0 7/AD732

    P2 7/A1528

    P2 0/A821

    P2 1/A922

    P2 2/A1023

    P2 3/A1124

    P2 4/A1225

    P2 5/A1326

    P2 6/A1427

    P1 01

    P1 12

    P1 23

    P1 34

    P1 4

    5

    P1 56

    P1 67

    P1 78

    P3 0/RXD10

    P3 1/TXD11

    P3 2/INT012

    P3 3/INT113

    P3 4/T0

    14

    P3 7/RD17

    P3 6/WR16

    P3 5/T1 15

    U1

    80C51

    X1

    CRYSTAL

    12 MHz

    C333pF

    C233pF

    X013

    X114

    X215

    X312

    X41

    X55

    X62

    X74

    A11

    B10

    C

    9

    INH6

    X3

    U2

    4051

    3

    2

    1

    4

    11

    U3:A

    LM324

    R12k

    R2

    4 7k

    C1

    6 8uF-5V

    +5V

    D11N914

    R3

    4 7k5

    67

    4

    11

    U3:B

    LM324

    -5V

    +5V

    10

    9

    8

    4

    11

    U3:C

    LM324

    RV1

    1k

    +1 999V

    12

    1314

    4

    11U3:D

    LM324

    R4

    25k

    R5

    10 1k

    +5V

    -5V

    -5V

    +5V

    slopeV=0 599204

    VxV=1 80098

    Vref

    V=-2 01675

    ViV=-1 87684

    U3:C(+IP)V=1 7991

    AV=WHI

    D7

    14

    D6

    13

    D5

    12

    D4

    11

    D3

    10

    D2

    9

    D1

    8

    D0

    7

    E

    6

    RW

    5

    RS

    4

    VSS

    1

    VDD

    2

    VEE

    3

    LCD1LM032L

    GNDVDD

    comp

    comp

    compV=0 0875053

    D2

    FMMD6050

    R68 2k

    C4

    10uF

    +5V

    +5V