Autor Tema: como abreviar codigo assembler  (Leído 3823 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado pelandruska

  • PIC10
  • *
  • Mensajes: 1
como abreviar codigo assembler
« 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

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: como abreviar codigo assembler
« Respuesta #1 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
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: como abreviar codigo assembler
« Respuesta #2 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
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado AKENAFAB

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3227
Re: como abreviar codigo assembler
« Respuesta #3 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!
« Última modificación: 06 de Julio de 2009, 04:41:21 por AKENAFAB »