The following is code that I wrote for the MAX 7219. This is only the sub that I call to initialize and test the display. This was written for a 16F877 but can be ported to just about anything. I am far from a programmer so if anyone out there can clean this up or make it better please let me know. I know this code works, as we have shipped many units running it. You must, of course, setup your ports and outputs. Hope this helps - if anyone finds this usefull I would love to hear from you! Feel free to cut and paste this but please pass on help to others - we all must stick together!

LEData VAR PORTC.1
CLK VAR PORTC.5
Load VAR PORTC.0




Max_init:

ShiftOut LEData,clk,MSBFIRST,[%0000100111111111\16] ' Reg. 9 Decode
PulsOut Load,10


ShiftOut LEData,clk,MSBFIRST,[%0000101000001111\16] ' Reg. A Intensity
PulsOut Load,10


ShiftOut LEData,clk,MSBFIRST,[%0000101100000111\16] ' Reg. B Scan Limit
PulsOut Load,10



ShiftOut LEData,clk,MSBFIRST,[%0000110000000001\16] ' Reg. C Shutdown
PulsOut Load,10



ShiftOut LEData,clk,MSBFIRST,[%000011110000000\16] ' Reg. F Display Test
PulsOut Load,10



' Blank the display
digit = 8
For x = 1 TO 8

ShiftOut LEData,clk,MSBFIRST,[digit,$F]
PulsOut Load,10
digit = digit - 1

Next

' Test the display by writting 8's to each digit and scrolling them across

digit = 8
For x = 1 TO 8

ShiftOut LEData,clk,MSBFIRST,[digit,8]
PulsOut Load,10
Pause 500
ShiftOut LEData,clk,MSBFIRST,[digit,$F]
PulsOut Load,10
digit = digit - 1


Next





' Write H
digit = 1
ShiftOut LEData,clk,MSBFIRST,[digit,$C]
PulsOut Load,10


' Write E
digit = 2
ShiftOut LEData,clk,MSBFIRST,[digit,$B]
PulsOut Load,10

' Write L
digit = 3
ShiftOut LEData,clk,MSBFIRST,[digit,$D]
PulsOut Load,10
digit = 4

' Write L
digit = 4
ShiftOut LEData,clk,MSBFIRST,[digit,$D]
PulsOut Load,10
digit = 4

' Write 0
digit = 5
ShiftOut LEData,clk,MSBFIRST,[digit,0]
PulsOut Load,10
digit = 4

Pause 250

' Blink it 5 times

For x = 1 TO 4

ShiftOut LEData,clk,MSBFIRST,[%0000110000000000\16] ' Reg. C Shutdown ON
PulsOut Load,10

Pause 150


ShiftOut LEData,clk,MSBFIRST,[%0000110000000001\16] ' Reg. C Shutdown OFF
PulsOut Load,10

Pause 200

Next

Pause 1000

Return