Program Sterrenhemel
Const GrayCode as byte[255] = (
%00000000,%00000001,%00000011,%00000010,%00000110,%00000111,%00000101,%00000100,
%00001100,%00001101,%00001111,%00001110,%00001010,%00001011,%00001001,%00001000,
%00011000,%00011001,%00011011,%00011010,%00011110,%00011111,%00011101,%00011100,
%00010100,%00010101,%00010111,%00010110,%00010010,%00010011,%00010001,%00010000,
%00110000,%00110001,%00110011,%00110010,%00110110,%00110111,%00110101,%00110100,
%00111100,%00111101,%00111111,%00111110,%00111010,%00111011,%00111001,%00111000,
%00101000,%00101001,%00101011,%00101010,%00101110,%00101111,%00101101,%00101100,
%00100100,%00100101,%00100111,%00100110,%00100010,%00100011,%00100001,%00100000,
%01100000,%01100001,%01100011,%01100010,%01100110,%01100111,%01100101,%01100100,
%01101100,%01101101,%01101111,%01101110,%01101010,%01101011,%01101001,%01101000,
%01111000,%01111001,%01111011,%01111010,%01111110,%01111111,%01111101,%01111100,
%01110100,%01110101,%01110111,%01110110,%01110010,%01110011,%01110001,%01110000,
%01010000,%01010001,%01010011,%01010010,%01010110,%01010111,%01010101,%01010100,
%01011100,%01011101,%01011111,%01011110,%01011010,%01011011,%01011001,%01011000,
%01001000,%01001001,%01001011,%01001010,%01001110,%01001111,%01001101,%01001100,
%01000100,%01000101,%01000111,%01000110,%01000010,%01000011,%01000001,%01000000,
%11000000,%11000001,%11000011,%11000010,%11000110,%11000111,%11000101,%11000100,
%11001100,%11001101,%11001111,%11001110,%11001010,%11001011,%11001001,%11001000,
%11011000,%11011001,%11011011,%11011010,%11011110,%11011111,%11011101,%11011100,
%11010100,%11010101,%11010111,%11010110,%11010010,%11010011,%11010001,%11010000,
%11110000,%11110001,%11110011,%11110010,%11110110,%11110111,%11110101,%11110100,
%11111100,%11111101,%11111111,%11111110,%11111010,%11111011,%11111001,%11111000,
%11101000,%11101001,%11101011,%11101010,%11101110,%11101111,%11101101,%11101100,
%11100100,%11100101,%11100111,%11100110,%11100010,%11100011,%11100001,%11100000,
%10100000,%10100001,%10100011,%10100010,%10100110,%10100111,%10100101,%10100100,
%10101100,%10101101,%10101111,%10101110,%10101010,%10101011,%10101001,%10101000,
%10111000,%10111001,%10111011,%10111010,%10111110,%10111111,%10111101,%10111100,
%10110100,%10110101,%10110111,%10110110,%10110010,%10110011,%10110001,%10110000,
%10010000,%10010001,%10010011,%10010010,%10010110,%10010111,%10010101,%10010100,
%10011100,%10011101,%10011111,%10011110,%10011010,%10011011,%10011001,%10011000,
%10001000,%10001001,%10001011,%10001010,%10001110,%10001111,%10001101,%10001100,
%10000100,%10000101,%10000111,%10000110,%10000010,%10000011,%10000001
)
Dim ClockPin as sbit at LATB.4
Latch as sbit at LATB.3
Datapin as sbit at LATB.2
Light as Byte
Row as Byte
d1 as Byte [8]
j1 as Byte
RandNum as Integer
Sub Procedure Max_Write(Dim pRow, pDig0 as Byte)
Latch = 0
SPI1_Write(pRow)
SPI1_Write(pDig0)
Latch = 1
Delay_ms(1)
End sub
Sub Procedure Max7219_Init()
Max_Write(0x09, 0x00)
Max_Write(0x0B, 0x07)
Max_Write(0x0C, 0x01)
Max_Write(0x0A, 0x00)
End sub
Sub Procedure Display_Testen()
Max_Write(0x0F, 0x01)
DELAY_MS(50)
Max_Write(0x0F, 0x00)
DELAY_MS(50)
End sub
Sub Procedure Uitzetten_Leds()
FOR Row = 1 to 8
Max_Write(Row, 0x00)
delay_ms(50)
NEXT Row
End sub
Main:
OSCCON = %01110000
ANSELA = %00000000
ANSELB = %00000000
TRISA = %11111111
TRISB = %00000000
PORTA = %11111111
SPI1_Init()
Max7219_Init()
Display_Testen()
delay_ms(500)
Uitzetten_Leds()
Light = 1
d1[0] = 11
d1[1] = 35
d1[2] = 73
d1[3] = 113
d1[4] = 167
d1[5] = 189
d1[6] = 211
d1[7] = 234
For Row = 1 to 8
Max_Write(Row, GrayCode[d1[Row - 1]])
Next Row
While True
Randnum = Rand()
Row = Randnum / 4000
If Row < 1 Then Row = 1 End if
if Row > 8 Then Row = 8 End if
Max_Write(Row, GrayCode[d1[Row - 1]])
Select case Row
Case 1, 3, 5, 7
d1[Row -1] = d1[Row - 1] + 1
If d1[Row - 1] > 255 Then d1[Row - 1] = 0 End if
Case 2,4,6,8
d1[Row -1] = d1[Row - 1] - 1
If d1[Row - 1] = 0 Then d1[Row - 1] = 255 End if
End select
Delay_ms(1000)
Wend
End.]