Hallo,
das Thema hat mich dann doch nicht losgelassen,
und hier ist jetzt ein erster Versuch einer Videoausgabe
in Bascom. Das Programm ist nur ein Experiment.
Es besteht aus dem Bascom Programm und einer Bin-Datei.
Am Anfang des Bascom Programmes ist ein Start-Teil, der nicht
verändert werden sollte. Dort wird auch die Bin-Datei eingebunden.
Evtl. muss der dort Pfad angepasst werden, damit Bascom
die Bin-Datei findet.
Nichts anderes ändern, sonst läuft es nicht mehr.
Nach diesem Start-Teil kommt das normale Bascom-Programm.
Da könnt ihr nach Herzenslust rumexperimentieren,
und eigene Ideen ausprobieren.
TImer0, und andere Interrupts dürfen nicht verwendet werden,
weil sie das Videotiming stören.
Es läuft auch mit der Bascom-AVR Demoversion 1.11.7.7.
Ihr braucht einen Mega32-16 mit 16MHz Quarz und die
bekannten drei Widerstände dazu.
Ein Widerstand 100 Ohm an Pin 11 (GND)
Ein Widerstand 560 Ohm an Pin 1 (PortB0)
Ein Widerstand 1200 Ohm in Pin 20 (PortD6)
Die drei freien Enden der Widerstände verbinden,
das ergibt das Videosignal.
Das Programm und die BIN-Datei hänge ich am Ende dran.
Wie gesagt, es st nur ein Versuch, um zu sehen ob das
überhaupt geht.
Und es klappt - nach einigen Mühen...
Gruß Jan
Code:
'Videoterminal in Bascom
'Jan Baare 26.2.05
'
'Nur ein Experiment.
'
'*****************************************************************
'Ab hier im folgenden Bereich nix ändern !!
$regfile = "M32def.dat"
$crystal = 16000000
$noramclear
On Oc0 &HCC Nosave
$asm
rcall l1
sei
jmp Basic
nop
nop
nop
nop
nop
nop
nop
$end Asm
$inc L1 , Nosize , "D:\AVR\Basvid\Avrvid32.bin"
Basic:
Dim Bs(672) As Byte At &H60
Dim Fb(256) As Byte At &H300
'Oberhalb dieser Linie nix ändern !!!
'*******************************************************************
$asm
'hier probeweise 0, 1, 2 oder 3 nop's einsetzen,
'falls das Bild zu unruhig ist. Mehr als 3 nutzt nix.
'einfach ausprobieren, wie es am Besten ist.
nop
nop
nop
$end Asm
'*******************************************************************
'Ab hier das normale Bascom-Programm
'keine Timer, kein Usart , kein Print verwenden
Dim W As Word
Dim N As Word
Dim M As Word
Dim X As Integer
Dim S As String * 84
Dim C As String * 1
Dim Z10 As String * 28 At 96 + 280 Overlay
Dim Z12 As String * 28 At 96 + 336 Overlay
Dim Z24 As String * 28 At 740 Overlay
Dim Xs As String * 10 At 96 + 424 Overlay
Restore Daten
Read S
Z24 = String(28 , 28)
M = 141
For N = 1 To 84
C = Mid(s , N , 1)
Bs(m) = C
M = M + 1
For W = 0 To 20000
Next
Next
Z10 = "Das ging viel schneller..."
M = 0
X = 0
Do
If M = 0 Then
M = 1
Z12 = " Eine blinkende Zeile "
Else
M = 0
Z12 = " "
End If
Xs = Str(x)
X = X + 1
Loop
End
Daten:
Data "Ein erster experimenteller Versuch, eine Videoausgabe in Bascom-AVR zu integrieren."
Lesezeichen