Sei sulla pagina 1di 5

MACROPIC.

INC
;**********************************************************************
; Filename:
macropic.inc
*
; File Version: 1.0
*
; Author:
Manuel Alejandro Rodrguez Infantes
*
; Company:
UNFV
*
;**********************************************************************
; Files required:
*
;
*
;**********************************************************************
; Notes:
*
;
Aplicaciones Avanzadas con PIC
*
;**********************************************************************
;
*
;**********************************************************************
banco x
banco macro x
if x == 0
bcf STATUS,RP0
bcf STATUS,RP1
endif
if x == 1
bsf STATUS,RP0
bcf STATUS,RP1
endif
if x == 2
bcf STATUS,RP0
bsf STATUS,RP1
endif
if x == 3
bsf STATUS,RP0
bsf STATUS,RP1
endif
endm
;************************************************************** pagina
pagina macro x
if x == 0
bcf PCLATH,3
bcf PCLATH,4
endif
if x == 1
bsf PCLATH,3
bcf PCLATH,4
endif
if x == 2
bcf PCLATH,3
bsf PCLATH,4
endif
if x == 3
bsf PCLATH,3
1

bsf PCLATH,4
endif
endm
;************************************************************** mov
mov macro registro,literal
movlw literal
movwf registro
endm
;************************************************************** movr
movr macro registro1,registro2
movf registro2,0
movwf registro1
endm
;************************************ compara y salta si no es igual
cjne macro registro,dato,direcc
movlw dato
subwf registro,0
btfss STATUS,Z
goto direcc
endm
;************************************ compara y salta si no es igual
cjner macro registro1,registro2,direcc
movf registro2,0
subwf registro1,0
btfss STATUS,Z
goto direcc
endm
;************************************ compara y salta si es igual
cje macro registro,dato,direcc
movlw dato
subwf registro,0
btfsc STATUS,Z
goto direcc
endm
;************************************ compara y salta si es igual
cjer macro registro1,registro2,direcc
movf registro2,0
subwf registro1,0
btfsc STATUS,Z
goto direcc
endm

;*************************** decrementa, compara y salta si no es igual


dcjne macro registro,dato,direcc
decf registro,1
movlw dato
subwf registro,0
btfss STATUS,Z
2

goto direcc
endm
;*************************** compara y salta si es menor
cjl macro registro,dato,direcc
movlw dato
subwf registro,0 ; W = REGISTRO - W
btfss STATUS,C ; C=1?
goto direcc
endm
;********************* compara y salta si es menor igual
cjle macro registro,dato,direcc
movlw dato
subwf registro,0 ; W = REGISTRO - W
btfss STATUS,C ; C=1?
goto direcc
btfsc STATUS,Z ; Z=0?
goto direcc
endm
;************************ compara y salta si no es menor
cjnl macro registro,dato,direcc
movlw dato
subwf registro,0 ; W = REGISTRO - W
btfsc STATUS,C ; C=0?
goto direcc
endm
;********************** compara y salta si es mayor o igual
cjge macro registro,dato,direcc
movlw dato
subwf registro,0 ; W = REGISTRO - W
btfsc STATUS,C ; C=0?
goto direcc
endm
;************************************************* esuno
esuno MACRO REGISTRO,BIT
local no_es_uno_1
no_es_uno_1
btfss REGISTRO,BIT
goto no_es_uno_1
endm
;************************************************* escero
escero MACRO REGISTRO,BIT
local no_es_cero_1
no_es_cero_1
btfsc REGISTRO,BIT
goto no_es_cero_1
endm
3

;*************************************************
jmp MACRO Direccion
goto Direccion
endm
;*************************************************
jz MACRO Direccion
btfsc STATUS,Z
goto Direccion
endm
;*************************************************
jnz MACRO Direccion
btfss STATUS,Z
goto Direccion
endm
;*************************************************
jc MACRO Direccion
btfsc STATUS,C
goto Direccion
endm
;*************************************************
jnc MACRO Direccion
btfss STATUS,C
goto Direccion
endm
;*************************************************
jbs MACRO Reg, Bit, Adr ;saltar si bit esta seteado
btfsc Reg, Bit
goto Adr
endm
;*************************************************
jbc MACRO Reg, Bit, Adr ;saltar si bit esta aclarado
btfss Reg, Bit
goto Adr
endm
;*************************************************
sbs macro Reg, Bit ;obviar si bit esta seteado
btfss Reg, Bit
endm
;*************************************************
sbc macro Reg, Bit ;obviar si bit esta aclarado
btfsc Reg, Bit
endm
4

;*************************************************
compara macro reg1, constante
movlw constante
xorwf reg1,W
endm

Potrebbero piacerti anche