26.12.2014 Views

microcontrolador mc68hc11

microcontrolador mc68hc11

microcontrolador mc68hc11

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

MICROCONTROLADOR 68HC11: Fundamentos, recursos y programación.<br />

MICROBÓTICA.<br />

E < 1 MHz Activar oscilador interno y mantener tiempo de 20ms<br />

Estos tiempos indican el retardo que hay que introducir entre dos programaciones consecutivas.. En la figura<br />

36 se muestra una rutina que implementa un retardo.<br />

RETARDO<br />

LDX #$0FFF ; Cargar el valor $0FFF en el registro X<br />

La<br />

sigue DEX ; Decrementa registro X en una unidad<br />

subrutina<br />

BNE sigue ; Si no ha llegado a cero sigue en el bucle<br />

RTS<br />

; Cuando llega a cero sale de la subrutina<br />

anterior se ha<br />

usado para<br />

simular un<br />

Figura 36: Implementación de un retardo software<br />

retardo de<br />

10ms, por lo tanto si el usuario dispone de la CT6811, esta rutina le puede servir para establecer los retardos de<br />

programación de la EEPROM. Para obtener el valor preciso hay que analizar el número de ciclos que ejecuta la<br />

rutina y ver cuanto tiempo corresponde a un ciclo. ( La CT6811 funciona con E=2Mhz por lo que su ciclo es de<br />

500ns, DEX utiliza 3 ciclos y BNE utiliza 3. El bucle se ejecuta 4095 veces. El retardo es aproximadamente, ya que<br />

no se ha considerado el resto de instrucciones, de 12ms = 4095*6*500ns. Es decir el valor $0FFF introducido en X<br />

puede ser menor) 6 .<br />

4.12.4. Ejemplo de programación<br />

B60F B60E ...................B601<br />

B62F<br />

B64F<br />

B66F<br />

B68F<br />

B6AF<br />

. ARRAY LEFT HALF<br />

.<br />

.<br />

B78F<br />

B7AF<br />

B7CF<br />

B7EF B7EE ................. B7E1<br />

En<br />

la figura 37<br />

se presenta<br />

un esquema<br />

de la<br />

estructura<br />

interna de la<br />

EEPROM.<br />

Este esquema<br />

es útil para<br />

entender los<br />

diferentes<br />

modos de<br />

borrado.<br />

Existen tres ,<br />

borrado<br />

completo (<br />

BULK<br />

ERASE),<br />

borrado de una fila (ROW ERASE) y borrado de un byte (BYTE ERASE). Según cual sea la necesidad hay que<br />

emplear uno u otro. Por ejemplo si se desea borrar toda la EEPROM es más efectivo realizarlo en un solo paso, en<br />

vez de realizar 512 borrados de byte.<br />

Para facilitar la comprensión se supone que nuestra señal de reloj es de 2MHz y que por tanto no es<br />

necesario activar el oscilador interno RC. Si hubiera que hacerlo ( señal de reloj < 1 Mhz ) habría que activar CSEL<br />

y esperar 10ms, luego se aplicarían las mismas rutinas que se presentan pero utilizando un retardo de 20ms.<br />

− Lectura<br />

B600<br />

B620<br />

B640<br />

B660<br />

B680<br />

B6A0<br />

.<br />

.<br />

.<br />

B780<br />

B7A0<br />

B7C0<br />

B7E0<br />

Figura 37: Esquema de la estructura interna de la EEPROM<br />

ROM ARRAY<br />

B610 B611 ......................... B61E<br />

B630<br />

B650<br />

B670<br />

B690<br />

B6B0<br />

. ARRAY RIGHT HALF<br />

.<br />

.<br />

B790<br />

B7B0<br />

B7D0<br />

B7F0 B7F1 ....................... B7FE<br />

COLUMN DECODERS AND SENSE AMPS<br />

CHARGE PUMP<br />

B61F<br />

B63F<br />

B65F<br />

B67F<br />

B69F<br />

B6BF<br />

.<br />

.<br />

.<br />

B79F<br />

B7BF<br />

B7DF<br />

B7FF<br />

Para leer la EEPROM el bit EELAT del registro PPROG debe estar a cero. Cuando este bit está a cero el<br />

resto de bits del registro dejan de tener significado o efecto. La lectura de la EEPROM se realiza como la de una<br />

memoria ROM normal.<br />

6 La operación DEX y DEY tienen una importante diferencia a la hora de ejecutarse. DEY utiliza cuatro ciclos de reloj mientras que DEX utiliza solo<br />

tres. Esto hay que tenerlo en mente pues el mismo bucle realizado con DEY sería más lento.<br />

LXXXIX

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!