TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: pelandruska en 01 de Junio de 2009, 17:14:34
-
buenas tardes a todos los genios del foro, soy nuevo en esto y he realizado aplicaciones basicas de microcontroladores y tengo una duda que no he podido despejar en los diferentes buscadores de internet y en toda la informacion que he descargado. Yo quiero saber si hay manera de cuando uno hace un programa incluir en una sola palabra todos los registros del micro para que uno no tenga que enunciarlos con su direccion en el encabezado del programa. Me explico quiero saber si se puede resumir en menos instrucciones esta parte del programa:
status equ 0x03
porta equ 0x05
portb equ 0x06
rp0 equ 0x05
trisa equ 0x85
trisb equ 0x86
gracias por su atencion y espero su pronta repuesta...
cordial saludo
-
Con poner al principio del programa, pero fuera de él
INCLUDE PICxxxxxx.inc
No debes declarar esa variables. PICxxxxxx.inc es el pic a utilizar, por ejemplo PIC16F877.inc
Revisa los programas que hay en el foro de assembler y verás como lo utilizan
-
Puedes entrar al archivo *.inc del pic y realizarle ciertas modificaciones
como utilizar #DEFINE
ej:
Agregar las siguientes lineas al final del archivo *.inc del pic
#DEFINE BANCO0 BCF STATUS,RP0 ;Sirve para acceder al Banco0
#DEFINE BANCO1 BSF STATUS,RP0 ;Sirve para acceder al Banco1
despues de ello al escribir BANCO1 en cualquier parte del programa el compilador lo entendera como BSF STATUS,RP0 y lo mismo para BANCO0
Tambien puedes usar MACROS
Nombre_Macro MACRO var1,var2,var3.....
;escribes el codigo del macro
ENDM
A continuacion adjunto el archivo *.inc al que agregue las 2 lineas de codiogo y un archivo Macros.inc que he estado desarrollando. Espero que lo mejoren y lo hagan mas grande
Tambien adjunto las librerias LCD_4BITS.INC y RETARDOS.INC que trabajan en conjunto con la libreria Macros.inc
-
buenas tardes a todos los genios del foro, soy nuevo en esto y he realizado aplicaciones basicas de microcontroladores y tengo una duda que no he podido despejar en los diferentes buscadores de internet y en toda la informacion que he descargado. Yo quiero saber si hay manera de cuando uno hace un programa incluir en una sola palabra todos los registros del micro para que uno no tenga que enunciarlos con su direccion en el encabezado del programa. Me explico quiero saber si se puede resumir en menos instrucciones esta parte del programa:
status equ 0x03
porta equ 0x05
portb equ 0x06
rp0 equ 0x05
trisa equ 0x85
trisb equ 0x86
gracias por su atencion y espero su pronta repuesta...
cordial saludo
Ya vienen definidos en el *.INC de cada pic
Si bien recuerdo estan en mayúsculas.
--------------------------
Extraído de P16F88.INC
;----- Register Files------------------------------------------------------
INDF EQU H'0000'
TMR0 EQU H'0001'
PCL EQU H'0002'
STATUS EQU H'0003'
FSR EQU H'0004'
PORTA EQU H'0005'
PORTB EQU H'0006'
PCLATH EQU H'000A'
INTCON EQU H'000B'
PIR1 EQU H'000C'
PIR2 EQU H'000D'
TMR1L EQU H'000E'
TMR1H EQU H'000F'
T1CON EQU H'0010'
TMR2 EQU H'0011'
T2CON EQU H'0012'
SSPBUF EQU H'0013'
SSPCON EQU H'0014'
CCPR1L EQU H'0015'
CCPR1H EQU H'0016'
CCP1CON EQU H'0017'
RCSTA EQU H'0018'
TXREG EQU H'0019'
RCREG EQU H'001A'
Ya no tienes que reescribir los registros , lo que tu pones al inicio es renombrar por asi decirlo , solo que en minisculas.
Lo que hago cuando programo en asm , es fijarme en el *.INC y de ahi voy revisando los nombres de los registros .Así no reescribo nada de nada , a menos que en lugar de usar "PORTB" use "PUERTOB" , solo por comodidad xD
Utilizo el "equ" para marcar equivalencia.
Saludos!