jueves, 22 de noviembre de 2012

Lenguaje Ensamblador  para PICS

En esta ocasión comenzaremos con lenguaje ensamblador para el PIC16F84A. La arquitectura de este microcontrolador ha sido traducida ya por muchas personas, asi que no seré una más de ellas y solo haré o eso intentaré, ser más practica con la programación, tomando de antemano ciertos conocimientos o si es pertinente, hasta para que yo lo recuerde, lo escribiré. :)

El primer ejemplo será sumar dos números binarios y mostrar el resultado encendiendo leds conectados al puerto B del PIC.

viernes, 7 de septiembre de 2012

Configuracion de un PIC18F2550 con ensamblador

El configurar un PIC 18F2550 en ensamblador no es como un PIC pequeño entonces se realiza de la siguiente manera.

1.- Crear un nuevo proyecto en MPLAB.
2.- Sin olvidar guardarlo en una carpeta dentro de c:\, con un nombre lo mas corto posible para evitar errores de ensamble.
3.- Una vez creado el proyecto dar clic en la opción Project de la barra de menús : Project/Add files to project.  Una vez allí se le da nombre al código fuente guardándolo dentro de la carpeta de proyecto recien creada  con la extensión .asm. ok una vez hecho esto se guarda el siguiente código. Nota: no olvidar que para guardar un codigo.asm se debe escribir al menos un comentario para que el programa permita guardar el archivo.

4.- Estas líneas de código en ensamblador realizan una función muy sencilla, su propósito es la configuración del PIC estableciendo los puertos como digitales y no como analógicos, ademas de la selección de la fuente de reloj que puede ser tanto interna como externa, todas las palabras de configuración se encuentran en la parte final del archivo Include del archivo cabecera P18F2550.



;Programa en ensablador para 18f2550 con la funcion de relog

list p=18f2550
include "P18F2550.INC"
;Bits de configuracion
                       
        CONFIG FOSC = INTOSCIO_EC ; Selecciona el relog interno del PIC
        CONFIG MCLRE = OFF                ; Desactivamos Master Clear
        CONFIG BOR = OFF                     ; Desactivamos Brown-out
        CONFIG PWRT = OFF                  ; Desactivamos Power-up Timer
        CONFIG LVP = OFF
        CONFIG XINST = OFF
        CONFIG PBADEN = OFF
        CONFIG CP0 = OFF
        CONFIG CP1 = OFF
        CONFIG CP2 = OFF
        CONFIG CP3 = OFF
        CONFIG CPB = OFF
        CONFIG CPD = OFF

ORG 0x00 ; Siempre empieza en la direccion cero
goto inicio                 ; Saltamos al inicio del programa

ORG 0x50         ; Dejamos espacio para las interrupciones

inicio
movlw 0x0F ;Con un 0x0F en ADCON1 se programan
movwf ADCON1,0 ;todos los bits de PORTA y PORTB como digitales.
clrf TRISB,0         ;Puerta B se configura como salida
movlw b'00011111' ;Solo cambiamos los bits presentes
movwf TRISA,0 ;Puerta A se configura como entrada

repite
  movf PORTA,W,0 ; Lee el Puerto A y lo pone en W
  andlw 0x0F   ; W = W(AND)00001111, dejamos solo 4 bits mas bajos
  movwf PORTB,0 ; Saca por el Puerto B el registro W
  goto repite   ; Se repite para siempre
  end     ; Fin del programa fuente