Quote Originally Posted by retepsnikrep View Post
OK thanks. Can anyone show me how to set up a simple interrupt as per my original post using DT Interrupts?
hI retepsnikrep,
Sorry for the delay. DT_INTS-14.bas Works excelently as is for all the 14 bit core PICs with ports defined as PortA, PortB . . . . I ran into a little snag porting it to the 12F series for GPIO on change in the port naming convention, and the fact they do not have RBC port to interrupt. I tried making appropriate changes in DT ints but got flag errors, so I took another tact which works. I added aliases in the P12F683.inc file of mpasm so as to give the compiler the belief that GPIO and PortB were the same.
I added this to it in the area of INTCON Bits
Code:
RBIF                         EQU     H'0000' ; ADDED FOR dt INTS
RBIE                         EQU     H'0003' ;ADDED
This tells the assembler to act on RBIF as the same as GPIF and RBIE as GPIE .
I didn't have a 683 so I compiled for a 683 and loaded into a 675, it works anyway, maybe Darrel has better ideas, this is what I was able to do.



Code:
@ __config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF
DEFINE OSC 4
Include "DT_INTS-14.bas"

CMCON0 = 7             ' comparator pins configured as I/O
ANSEL  = 0             ' all I/O as digital
OSCCON = %01100000     ' 96 decimal 
GPIO   = %00000000
TRISIO = %00001000     ' GPIO Input all others as Outputs
Option_Reg = %01000000 ' Interrupt on rising edge  INTEDG bit
IOC = %00001000     ' Enable interrupt on change gpio.3
i var byte
Mainloop:
ASM
INT_LIST  macro        ; IntSource,  Label,             Type, ResetFlag?
        INT_Handler    RBC_INT,       _Do_This,   ASM,  no 
    endm
    INT_CREATE                   ; Creates the interrupt processor
ENDASM

@   INT_ENABLE   RBC_INT           ; enable external (INT) interrupts



for i = 0 to 9
GPIO.0 = 1
pause 500
gpio.0 = 0
pause 500
next i
gpio = 0

Goto Mainloop



end

Do_This:
;@ INT_DISABLE  RBC_INT
gpio.1 = 1
INTCON.0 = 0
;@ INT_ENABLE  RBC_INT
goto mainloop