Mis primeros programas en assembler - Micros Designs
Mis primeros programas en assembler - Micros Designs
Mis primeros programas en assembler - Micros Designs
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