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
Bookmarks