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