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

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Código<br />

1. ; **** Encabezado ****<br />

2. list p=16F84A<br />

3. #include P16F84A.inc<br />

En el archive P16F84A.inc se <strong>en</strong>cu<strong>en</strong>tran las definiciones de las direcciones de los registros específicos, los<br />

bits utilizados <strong>en</strong> cada registro y los fusibles del micro.<br />

Configuración de fusibles.<br />

Hay ciertos aspectos del PIC que han de ser activados o desactivados mediante hardware a la hora de<br />

programarlo. Esto quiere decir que no se pued<strong>en</strong> volver a cambiar hasta que el chip no se reprograme de<br />

nuevo. El PIC16F84A dispone de 4 fuses (los modelos superiores ti<strong>en</strong><strong>en</strong> más). Cada fuse activa o desactiva<br />

una opción de funcionami<strong>en</strong>to.<br />

OSC: Este fuse controla el modo de oscilación que usará el PIC para funcionar. Como ya sabemos, el<br />

oscilador se puede configurar de 4 maneras distintas, dep<strong>en</strong>di<strong>en</strong>do de la velocidad y del tipo de circuito<br />

oscilador empleado.<br />

WDT: El famoso "perro guardián" del PIC se configura aquí. Esta es una capacidad del microcontrolador de<br />

autorresetearse.<br />

PWRT: Si activamos este fuse, lo que conseguimos es que se g<strong>en</strong>ere un retardo <strong>en</strong> la inicialización del<br />

microcontrolador.<br />

CP: Activando este fuse t<strong>en</strong>dremos la garantía de que el código que escribamos <strong>en</strong> el PIC no pueda ser leído<br />

por otra persona, para que no nos lo copi<strong>en</strong>, modifiqu<strong>en</strong>, etc. (Code Protection). Esto no impide que el PIC<br />

funcione como siempre, ni que no se pueda sobrescribir su cont<strong>en</strong>ido.<br />

Código<br />

1. __CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC<br />

Definición de variables que utilizaremos <strong>en</strong> nuestro proyecto. En este caso solo definiremos bits, por ejemplo<br />

Led y Pulsador.<br />

Para organizar nuestro programa lo estructuraremos de la sigui<strong>en</strong>te manera:<br />

Nivel Directiva Operandos ; Com<strong>en</strong>tarios<br />

Código<br />

1. ;**** Definicion de variables ****<br />

2. Led equ 0 ; Definimos Led como el bit cero de un<br />

registro, <strong>en</strong> este caso PORTB.-<br />

3. Pulsador equ 0 ; Definimos Pulsador como el bit 0, <strong>en</strong> este caso<br />

sera para PORTA<br />

Configuración de puertos.<br />

Para la configuración necesitamos los sigui<strong>en</strong>tes registros:<br />

STATUS > 0x03; PORTA > 0x05; PORTB > 0x06; TRISA > 0x86 y TRISB > 0x86.<br />

Por defecto los puertos quedan configurados como <strong>en</strong>tradas de datos y si se quiere cambiar hay que<br />

configurarlos. Esto se realiza con los registros TRISA y TRISB, t<strong>en</strong>i<strong>en</strong>do <strong>en</strong> cu<strong>en</strong>ta que si se asigna un cero<br />

(0) a un pin, quedara como salida y si se asigna un uno (1), quedara como <strong>en</strong>trada.<br />

En nuestro caso se necesita colocar TRISA igual a 11111 (o se puede dejar por default) y TRISB 11111110.<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!