Nice job Paul & Ingvar..;o}
Yet another version.
Code:
DEFINE OSC 4
' BASIC/ASM version = 172 words
x var word
i var byte
RelayNum var PORTA
' High byte = FSR / Low byte = port pin (or multiple pins)
RLY1 CON %0000010100000001 ' PORTA|Bit0
RLY2 CON %0000011001000000 ' PORTB|Bit6
RLY3 CON %0000011100010000 ' PORTC|Bit4
RLY4 CON %0000100000000100 ' PORTD|Bit2
ADCON1 = 7
PORTA = 0 : PORTB = 0 : PORTC = 0 : PORTD = 0
TRISA = 0 : TRISB = 0 : TRISC = 0 : TRISD = 0
ASM
RelayOn macro
movf _x+1,w ; high byte = pointer to port file reg
movwf FSR ; load FSR
movf _x,w ; low byte = port bit to change
xorwf INDF,f ; toggle port pin
endm
ENDASM
ASM
RelayOff macro
movf _x,w ; reload port pin to toggle
xorwf INDF,f ; do it
endm
ENDASM
main:
for i = 0 to 3
LOOKUP2 i, [RLY1,RLY2,RLY3,RLY4], x ' lookup file reg & XOR pattern
@ RelayOn
PAUSE 500
@ RelayOff
PAUSE 500
next i
END
Bookmarks