TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: pelandruska en 01 de Junio de 2009, 17:14:34

Título: como abreviar codigo assembler
Publicado 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
Título: Re: como abreviar codigo assembler
Publicado por: Leon Pic en 01 de Junio de 2009, 18:03:00
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
Título: Re: como abreviar codigo assembler
Publicado por: bigluis en 06 de Julio de 2009, 03:41:22
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
Título: Re: como abreviar codigo assembler
Publicado por: AKENAFAB en 06 de Julio de 2009, 04:32:37
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

Código: [Seleccionar]
;----- 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!