13.11.2012 Views

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

Mis primeros programas en assembler - Micros Designs

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.

Otra forma de crear una tabla. Direccionami<strong>en</strong>to Indirecto.-<br />

En la programación de los microcontroladores PIC la mayoría de las instrucciones emplean direccionami<strong>en</strong>to<br />

directo, pero también es posible que oper<strong>en</strong> <strong>en</strong> un modo de direccionami<strong>en</strong>to directo. Para el direccionami<strong>en</strong>to<br />

indirecto se emplean dos registros especiales: el FSR y el INDF (este último no es un registro físico). El<br />

registro FSR se emplea para “señalar o apuntar” a una dirección de la memoria RAM cuyo cont<strong>en</strong>ido puede<br />

ser leído o escrito de forma indirecta empleando cualquier instrucción que use como operando al registro<br />

INDF.<br />

Esta forma de direccionami<strong>en</strong>to es particularm<strong>en</strong>te útil cuando se manejan tablas o arreglos de datos.-<br />

Directo vs Indirecto.<br />

Código<br />

1. ; DIRECTO:<br />

2. ; Definimos registro <strong>en</strong> la memoria de datos.-<br />

3. MyRegistro equ 0x10 ; Ubicado <strong>en</strong> 0x10.-<br />

4.<br />

5. ; Cargamos dato <strong>en</strong> el registro.-<br />

6. movlw 0x8A ;<br />

7. movwf MyRegistro ; MyRegistro = 0x8a.-<br />

8. ; Leemos dato del registro.-<br />

9. movfw MyRegistro ; Movemos el valor que t<strong>en</strong>ga MyRegistro a<br />

W.-<br />

10. movwf PORTB ; Por ejemplo, lo cargamos <strong>en</strong> PORTB.-<br />

11.<br />

12. ; INDIRECTO:<br />

13. ; Cargamos dato <strong>en</strong> el registro.-<br />

14. movlw 0x10 ;<br />

15. movwf FSR ; Direccionamos Registro de datos ubicado <strong>en</strong><br />

0x10.-<br />

16. movlw 0x8A ;<br />

17. movwf INDF ; Cargamos registro direccionado con el valor<br />

0x8A.-<br />

18.<br />

19. ; Leemos dato <strong>en</strong> el registro.-<br />

20. movlw 0x10 ;<br />

21. movwf FSR ; Direccionamos Registro de datos ubicado <strong>en</strong><br />

0x10.-<br />

22. movfw INDF ; Movemos el valor que t<strong>en</strong>ga el registro<br />

seleccionado a W.-<br />

23. movwf PORTB ; Por ejemplo, lo cargamos <strong>en</strong> PORTB.-<br />

Utilizaremos el direccionami<strong>en</strong>to Indirecto para crear la tabla de control del Display. Aquí no utilizaremos el<br />

pulsador, solo se hará el contador automático de 0 a 9.- Al iniciar el microcontrolador cargaremos el código de<br />

7 Segm<strong>en</strong>tos para controlar el Display <strong>en</strong> la memoria de Datos con direccionami<strong>en</strong>to indirecto.<br />

Luego, al realizar el conteo leeremos el código correspondi<strong>en</strong>te almac<strong>en</strong>ado y lo <strong>en</strong>viaremos al PORTB.-<br />

Aquí utilizamos el registro STATUS nuevam<strong>en</strong>te, pero para control de las operaciones aritméticas. Nosotros<br />

guardaremos el código de 7 Segm<strong>en</strong>tos del 0 al 9, <strong>en</strong> los registros 0x10 a 0x19. Si nuestro contador nos<br />

direcciona el registro ubicado <strong>en</strong> 0x1A, que sería el “10”, lo reseteamos y direccionamos el “0”, ósea registro<br />

0x10. Esto lo hacemos realizando la resta del registro seleccionado y 0x1A, FSR – 0x1A, y si el resultado es<br />

cero, reseteamos.<br />

El bit Z (Zero) del registro STATUS, este indica si una operación lógica o aritmética realizada da como<br />

resultado cero. También t<strong>en</strong>emos el bit C (Carry) (0), que <strong>en</strong> instrucciones aritméticas se activa cuando se<br />

pres<strong>en</strong>ta un acarreo desde el bit más significativo del resultado, el bit DC (Digit Carry), que <strong>en</strong> operaciones<br />

Autor: Suky Mail: inf.pic.suky@live.com.ar Web: www.micros-designs.com.ar

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

Saved successfully!

Ooh no, something went wrong!