Hola,
A ver si entendí:
Mencionas que tus programas en ensamblador, al ser llamados en Basic no funcionan (¿o no existen? Perdón, casi no entiendo).
Si esta es la cuestión, permíteme hacerte esta sugerencia:
Cuando uno crea un programa en Basic (con el PicBasic Pro Compiler) y combina ensamblador, el compilador no sabrá que el ensamblador existe, es decir que el compilador deja de hacer su trabajo (compilar) cuando se el dice que se insertarán línas de ensamblador.
Si tú deseas que el programa en Basic tenga acceso a los registros creados en ensamblador, deberás crear las variables desde el inicio y de preferencia definirlas en un registro específico para que puedas utilizarlas después en tu programa.
Aquí se te muestra un ejemplo de lo que se menciona; el programa es para habilitar una interrupción en un PIC16F872
La interrupción es la externa en el puerto B, bit 0.
@ DEVICE XT_OSC,LVP_OFF,WDT_OFF,PROTECT_OFF
led VAR PORTB.0
reg VAR BYTE $40 system
wsave VAR BYTE $20 system
wsave1 VAR BYTE $A0 system
ssave VAR BYTE bank0 system
psave VAR BYTE bank0 system
DEFINE INTHAND ISR
"***** Rutina de Interrupción *****
Asm
; Salvando W, STATUS y PCLATH
ISR bcf INTCON,GIE ; desabilitando las interrupciones
btfsc INTCON,GIE ; asegurando la desactivación
GoTo ISR
movwf wsave ; salvando W
swapf STATUS,W ; STATUS->W
clrf STATUS ; regresando al banco cero
movwf ssave ; salvando STATUS
movf PCLATH ; PCLATH->W
movwf psave ; salvando PCLATH
clrf PCLATH ; regresando a la página 0
EndAsm
"aqui pones lo que quieras
led = 1
Pause 1000
led = 0
Pause 1000
"en basic
Asm
;*** Regresando W, STATUS y PCLATH (originales) ***
fInt movf psave,W ;PCLATH (original)->W
movwf PCLATH ; W->PCLATH
swapf ssave,W ; STATUS (original)->W
movwf STATUS ; W->STATUS
swapf wsave,F ; Regresando W original
swapf wsave,W ; antes de la interrupción
bcf option_reg,intedg ; borrando la(s) bandera(s) de interrución
incf reg
RETFIE ; Reactiva las interrupciones
EndAsm
inicio:
TRISB = 0
reg = 0
INTCON = %10010000 "habilitando las interrupciones
option_reg = %01000000 "habilitando interrupción
Como puedes observar, el registro reg es definido fuera del código de ensamblador, y sí funciona.
Lo único malo es que deberás crear las variables que necesites del programa de ensamblador para poder accesar y procesar esa información.
Espero que se te haya ayudado.
Mario