Code:
'16f676
DEFINE OSC 4
ASM
ERRORLEVEL -306
ERRORLEVEL -205
ENDASM
INCLUDE "modedefs.bas"
@__config _INTRC_OSC_NOCLKOUT & _WDT_ON & _MCLRE_OFF & _CP_OFF
ANSEL=000000
CMCON=7
CLK VAR PORTA.4
LATCH VAR PORTA.5
DAT VAR PORTC.5
U1 VAR BYTE
U2 VAR BYTE
U3 VAR BYTE
U4 VAR BYTE
U5 VAR BYTE
A VAR BYTE
Y VAR BYTE
Z VAR BYTE
X VAR BYTE
M VAR BYTE
G CON 010101
R CON 101010
PAUSE 250
START:
FOR A = 1 TO 10
U1 = 111111
U2 = 111111
U3 = 111111
U4 = 111111
U5 = 111111
GOSUB BAR
PAUSE 100
U1 = 000000
U2 = 000000
U3 = 000000
U4 = 000000
U5 = 000000
GOSUB BAR
PAUSE 100
NEXT A
GOSUB LOOP
GOSUB B1
B1:
FOR A = 1 TO 5
U1 = 111111
U2 = 000000
U3 = 111111
U4 = 111111
U5 = 000000
GOSUB BAR
PAUSE 100
U1 = 000000
U2 = 000000
U3 = 000000
U4 = 000000
U5 = 000000
GOSUB BAR
PAUSE 100
NEXT A
GOSUB LOOP
GOSUB B2
B2:
FOR A = 1 TO 5
U1 = 000000
U2 = 111111
U3 = 000000
U4 = 000000
U5 = 111111
GOSUB BAR
PAUSE 100
U1 = 000000
U2 = 000000
U3 = 000000
U4 = 000000
U5 = 000000
GOSUB BAR
PAUSE 100
NEXT A
GOSUB LOOP
GOSUB LOOP2
LOOP:
Z = 1
FOR Y = 1 TO 8
Z = Z * 2
GOSUB BAR2
PAUSE X
NEXT Y
X = X - 10
IF X = 10 THEN X = 100
'GOTO START
RETURN
LOOP2:
FOR A = 1 TO 25
Z = 1
FOR Y = 1 TO 8
Z = Z * 2
GOSUB BAR2
PAUSE X
NEXT Y
X = X - 10
IF X = 10 THEN X = 100
NEXT A
GOSUB RG
RG:
FOR A = 1 TO 25
U1 = R
U2 = R
U3 = R
U4 = R
U5 = R
GOSUB BAR
PAUSE 100
U1 = G
U2 = G
U3 = G
U4 = G
U5 = G
GOSUB BAR
PAUSE 100
NEXT A
GOSUB LOOP
GOSUB SPIR
SPIR:
X = 100
FOR A = 1 TO 25
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[111111]
PULSOUT LATCH,5
PAUSE X
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[111111]
SHIFTOUT DAT,CLK,1,[000000]
PULSOUT LATCH,5
PAUSE X
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[111111]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
PULSOUT LATCH,5
PAUSE X
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[111111]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
PULSOUT LATCH,5
PAUSE X
SHIFTOUT DAT,CLK,1,[111111]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
SHIFTOUT DAT,CLK,1,[000000]
PULSOUT LATCH,5
PAUSE X
X = X - 10
IF X = 10 THEN X = 100
NEXT A
PAUSE 50
GOTO START
BAR:
SHIFTOUT DAT,CLK,0,[U5]
SHIFTOUT DAT,CLK,0,[U4]
SHIFTOUT DAT,CLK,0,[U3]
SHIFTOUT DAT,CLK,0,[U2]
SHIFTOUT DAT,CLK,0,[U1]
PULSOUT LATCH,5
RETURN
BAR2:
SHIFTOUT DAT,CLK,0,[Z]
SHIFTOUT DAT,CLK,0,[Z]
SHIFTOUT DAT,CLK,0,[Z]
SHIFTOUT DAT,CLK,0,[Z]
SHIFTOUT DAT,CLK,0,[Z]
PULSOUT LATCH,5
RETURN
END
Bookmarks