
Originally Posted by
retepsnikrep
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
Bookmarks