Upload
luis-d-urdaneta-g
View
225
Download
0
Embed Size (px)
Citation preview
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