Simplificar la programacion en asembler

He visto en un programa en asembler estas directivas, y me ha llamado la atensión, ya que yo solamente utilizaba "DEFINE" para dar otro nombre a los puertos de entrada y salida.
Con esta forma de estructurar el programa se puede simplificar el trabajo para elaborar algun programa.

Código:
#DEFINE ON1	BSF	PORTB,0
#DEFINE ON2	BSF	PORTB,1
#DEFINE ON3	BSF	PORTB,2
#DEFINE ON4	BSF	PORTB,3
#DEFINE ON5	BSF	PORTB,4
#DEFINE ON6	BSF	PORTB,5
#DEFINE ON7	BSF	PORTB,6
#DEFINE ON8	BSF	PORTB,7
#DEFINE ON9	BSF	PORTA,0
#DEFINE ON10	BSF	PORTA,1
#DEFINE ON11	BSF	PORTA,2
#DEFINE ON12	BSF	PORTA,3
#DEFINE ON13	BSF	PORTA,4
#DEFINE ONTODO	CALL	ENCIE
 
Eso siempre ha estado y lo que más me sorprendió es el último.

#DEFINE ONTODO CALL ENCIE

Es bueno comentar estas curiosidades para aprender.
 
Incluso tambien puedes cargar esa lista de definiciones en un archivo .H y usar distintas configuraciones de pines para distintos hardwares sin necesidad de modificar el programa

Lo digo por que una vez me encontre un kit de experimentacion que tenia los leds negados (encendian con un 0) y en el equipo final los encendiamos con un 1, asi que eso fue lo que hicimos... cuando necesitabamos probar en el kit usabamos el .h con las definiciones del kit y cuando probabamos en el equipo final solo cambiabamos el .h por otro y recompilabamos..
 
Creo que esto es conocido, pero he visto mucho código que no lo usa.

Logicamente hay que usar MPLAB o un ensamblador que soporte tal directiva.

La directiva CBLOCK nos ayuda a definir un bloque de constantes

es decir en lugar de hacer:
Código:
nrator        equ    0x20
nratorM     equ    0x21
nratorL      equ   0x22

hacemos:

Código:
	CBLOCK	0x20				
	nratorH,nratorM,nratorL
	denomH,denomM,denomL
	remainH,remainM,remainL
	BCount,shiftM,shiftL,shiftH
	Temp
	ENDC

El 0x20 indica el comienzo de la RAM del usuario.
0x0C para el 16f84
0x20 para el 16f628, 16f877

Resto consultar hoja de datos.
 
La directiva CBLOCK aparte de simplificar la programacion es recomendable su utilizacion cuando un programa se realiza para utilizarlo en diferentes micros, ya que con solo definir la primera posicion de la RAN es suficiente.
 
CBLOCK 0x20
Variable. ; También se usa en el 16F88
ENDC

Estas cosas también se usa y se explica en el www.pic16f84a.com , me traba la directiva MACROS, que dice el libro que es potente pero me traba mucho la cabeza.
 
Atrás
Arriba