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.
jueves, 22 de noviembre de 2012
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
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
Suscribirse a:
Entradas (Atom)