Code:
@ __CONFIG _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _LVP_OFF & _WDT_OFF & _PWRTE_ON & _BODEN_ON
PORTA = 0
PORTB = 0
TRISA = 0
TRISB = 0
CMCON = 7
CounterA var byte
GOTO START
@ IFNDEF KAPOUET
PAUSE 0 ' include PAUSE?C macro
@ ENDIF
ASM
ON=1
OFF=0
BLINK=2
CLEARALL MACRO
VARIABLE CLEARCOUNTER
CLEARCOUNTER=1
WHILE (CLEARCOUNTER<13)
LED#v(CLEARCOUNTER) OFF
CLEARCOUNTER++=1
ENDW
ENDM
LED MACRO LEDOUT,ACTION,DELAY
IF (ACTION == BLINK)
LED#V(LEDOUT) ON
PAUSE?C DELAY
LED#V(LEDOUT) OFF
ELSE
LED#V(LEDOUT) ACTION
PAUSE?C DELAY
ENDIF
ENDM
LED1 MACRO ACTION
MOVE?CT 0,TRISB,0
MOVE?CT ACTION,PORTB,0
ENDM
LED2 MACRO ACTION
MOVE?CT 0, TRISB,1
MOVE?CT 0, TRISB,2
MOVE?CT ACTION,PORTB,1
MOVE?CT 0,PORTB,2
ENDM
LED3 MACRO ACTION
MOVE?CT 1, TRISB,1
MOVE?CT 0, TRISB,2
MOVE?CT ACTION, PORTB,2
ENDM
LED4 MACRO ACTION
MOVE?CT 0,TRISB,3
MOVE?CT ACTION,PORTB,3
ENDM
LED5 MACRO ACTION
MOVE?CT 0, TRISB,4
MOVE?CT 0, TRISB,5
MOVE?CT ACTION,PORTB,4
MOVE?CT 0,PORTB,5
ENDM
LED6 MACRO ACTION
MOVE?CT 1, TRISB,4
MOVE?CT 0, TRISB,5
MOVE?CT ACTION, PORTB,5
ENDM
LED7 MACRO ACTION
MOVE?CT 0, TRISB,6
MOVE?CT 0, TRISB,7
MOVE?CT ACTION,PORTB,6
MOVE?CT 0,PORTB,7
ENDM
LED8 MACRO ACTION
MOVE?CT 1, TRISB,6
MOVE?CT 0, TRISB,7
MOVE?CT ACTION, PORTB,7
ENDM
LED9 MACRO ACTION
MOVE?CT 0,TRISA,0
MOVE?CT ACTION,PORTA,0
ENDM
LED10 MACRO ACTION
MOVE?CT 0, TRISA,1
MOVE?CT 0, TRISA,2
MOVE?CT ACTION,PORTA,1
MOVE?CT 0,PORTA,2
ENDM
LED11 MACRO ACTION
MOVE?CT 1, TRISA,1
MOVE?CT 0, TRISA,2
MOVE?CT ACTION, PORTA,2
ENDM
LED12 MACRO ACTION
MOVE?CT 0,TRISA,3
MOVE?CT ACTION,PORTA,3
ENDM
ENDASM
START:
for countera =1 to 10
ASM
LED 1,ON,0
LED 4,ON,0
LED 7,ON,0
LED 10,ON,250
CLEARALL
LED 2,ON,0
LED 5,ON,0
LED 8,ON,0
LED 11,ON,250
CLEARALL
LED 3,ON,0
LED 6,ON,0
LED 9,ON,0
LED 12,ON,250
CLEARALL
ENDASM
next
FOR COUNTERA= 1 TO 10
asm
variable CLED
CLED=1
while (CLED<13)
LED CLED,BLINK,250
CLED++=1
ENDW
CLED=11
while (CLED>1)
LED CLED,BLINK,250
CLED--=1
ENDW
ENDASM
NEXT
GOTO START
now, i'll try to do something more 'user friendly
Bookmarks