Postat: 18 november 2005, 22:00:23
Ja, det är inte språket jag har problem med, utan mer om jag tänkt fatalt fel nånstans, så jag ser gärna din Basic-kod.
Mvh
speakman
Mvh
speakman
Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Kod: Markera allt
' Ett första test att styra en ELM-2882 8x8 Dor Matrix LED Display
' med en MAX7219 LED driver.
' En LED i taget tänds över hela displayen.
AliveLED var PortA.0
DIN var PortB.0
CLK var PortB.1
LOAD var PortB.2
' Namnge alla register i MAX7219
NoOp con $0
Col1 con $1
Col2 con $2
Col3 con $3
Col4 con $4
Col5 con $5
Col6 con $6
Col7 con $7
Col8 con $8
DecodeMode con $9
Intensity con $A
ScanLimit con $B
ShutDown con $C
DisplayTest con $F
' Allokera variabler
DataOut var word
Buffert var word ' Register som buffrar DataOut och klockas ut
RegData var DataOut.Byte0
RegAddr var DataOut.Byte1
i var byte ' For/Next loop
db var byte ' For/Next loop för att klocka ut data
rad var byte ' For/Next loop för att shifta rad (Test)
kol var byte ' For/Next loop för att shifta kolumn (Test)
temp var byte ' temp-register
TrisA = 0
TrisB = 0
Init:
PortA = 0
PortB = 0
For i = 0 To 2 ' Blinka lite coolt med en LED för att visa att vi lever...
AliveLED = 1
Pause 500
AliveLED = 0
Pause 500
Next i
SetUp:
RegAddr = DecodeMode ' Sätt DekodeMode
RegData = 0 ' Ingen dekodning. Fri styrning av alla LED:s
Gosub SendData
RegAddr = Intensity ' Sätt Ljusstyrka
RegData = 10 ' Ljusstyrka 0-15
Gosub SendData
RegAddr = ScanLimit ' Sätt antal använda "displayer" (kolumner)
RegData = 7 ' Alla 8 "displayer" skall användas
Gosub SendData
RegData = 0 ' Nolla all ev. displaydata
For kol = 1 to 8
RegAddr = kol
Gosub SendData
Next kol
RegAddr = ShutDown ' Standby
RegData = 1 ' Normal Operation
Gosub SendData
RegAddr = DisplayTest ' Tänder alla segment med max ljusstyrka
RegData = 0 ' Normal Operation
Gosub SendData
Main:
For kol = 1 to 8
RegAddr = kol
RegData = 1
For rad = 0 to 8
Gosub SendData
RegData = RegData << 1
Pause 100
Next rad
Next kol
Goto Main
SendData:
Buffert = DataOut ' Kopiera DataOut så att den inte förstörs vid utklockning
For db = 0 To 15 ' Loopa runt för att klocka ut alla 16 bitar
DIN = Buffert.15 ' Lägg ut databit 15 på I/O
CLK = 1 ' Ge en klockpuls
CLK = 0
Buffert = Buffert << 1 ' Shifta ett åt vänster för att få nästa bit på plats
Next db
LoadData:
LOAD = 1 ' Alla bitar överförda. Ladda upp data
LOAD = 0
Return
End