Code:
'*******************************************************************************
'* Versuchsobjekt für TV Ausgabe in Bascom W.Krüger (c) 2005 *
'* für ein fertiges Projekt mit 4 MHz Quarz *
'* *
'* bei 4 MHz 12 Zeichen pro Zeile (Ausgabezeit pro Pixel 0,5 µs) *
'* Jeder Buchstabe besteht aus 5*12 Bit, da die Buchstaben sonst *
'* sehr gestaucht sind. *
'******************************************************************************* .
$regfile = "m8535.dat" 'ATmega8535
$crystal = 4000000
Dim Txt_nr As Byte
Declare Sub Ausgabe
Ddra = 128
Ddrb = 0 'Portb.1 Taster gegen GND
Portb = 2 'Pullup für Taster ein
Ddrc = 255
Const Syn = 7
Const Sync = Porta 'Porta.7 = Sync ---[1,2K]---
Const Video = Portc 'Portc.7 = BAS ---[560 ]---
Do
If Pinb.1 = 0 Then
If Txt_nr = 3 Then Txt_nr = 0
Call Ausgabe
Incr Txt_nr
End If
Loop
Sub Ausgabe
$asm
lds r18,{Txt_nr} 'Txt_nr 0 = Text1
ldi r19,156 '156 Byte = Textblocklänge
ldi zh,high(Text1*2)
ldi zl,low(Text1*2)
mov r0,r19
mul r0,r18
add zl,r0
adc zh,r1
cli 'alle Interrupts sperren
ldi r17,255 'Framezähler R17 * 312 Zeilen * je 64µs
Main: 'bei R17=255 etwa 5 Sekunden Ausgabezeit
ldi r16,5
V_sync1:
cbi sync,syn '5 Zeilen V-Sync + Nachtrabanten
ldi r23,36
V_sync2:
dec r23
brne V_sync2
sbi sync,syn
ldi r23,4
V_sync3:
dec r23
brne V_sync3
nop
dec r16
brne V_sync1
ldi r16,5
V_sync4:
cbi sync,syn
ldi r23,2
V_sync5:
dec r23
brne V_sync5
nop
sbi sync,syn
ldi r23,38
V_sync6:
dec r23
brne V_sync6
dec r16
brne V_sync4
'*********************** Zeile 6-55 ********************************************
ldi r16,49
H_sync1:
cbi sync,syn
ldi r23,5
H_sync2:
dec r23
brne H_sync2
nop
sbi sync,syn 'Schwarzzeilen
ldi r23,77
H_sync3:
dec r23
brne H_sync3
nop
nop
dec r16
brne H_sync1
'*********************** Zeile 56-68 *******************************************
ldi r16,12
H_sync4:
cbi sync,syn
ldi r23,5
H_sync5:
dec r23
brne H_sync5
nop
sbi sync,syn
ldi r23,65
H_sync6:
dec r23
brne H_sync6
lpm r24,z+ 'Ausgabe der Ziffer oben rechts
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
ldi r23,8
H_sync7:
dec r23
brne H_sync7
dec r16
brne H_sync4
'*********************** Zeile 69-150 ******************************************
ldi r16,83
H_sync8:
cbi sync,syn
ldi r23,5
H_sync9:
dec r23
brne H_sync9
nop
sbi sync,syn 'Schwarzzeilen
ldi r23,77
H_sync10:
dec r23
brne H_sync10
nop
nop
dec r16
brne H_sync8
'*********************** Zeile 151-163 *****************************************
ldi r16,12
H_sync11:
cbi sync,syn
ldi r23,5
H_sync12:
dec r23
brne H_sync12
nop
sbi sync,syn
ldi r23,5
H_sync13:
dec r23
brne H_sync13
ldi r23,9
H_sync14:
dec r23
brne H_sync14
lpm r24,z+
Out Video , R24 'Textausgabe (12 Zeichen)
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lpm r24,z+
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
lsl r24
Out Video , R24
ldi r23,7
H_sync15:
dec r23
brne H_sync15
dec r16
breq H_sync16
nop
jmp H_sync11
'*********************** Zeile 164-312 *****************************************
H_sync16:
nop
ldi r16,150
H_sync17:
cbi sync,syn
ldi r23,5
H_sync18:
dec r23
brne H_sync18
nop
sbi sync,syn 'Schwarzzeilen
ldi r23,73
H_sync19:
dec r23
brne H_sync19
dec r16
breq Frame_end
ldi r23,4
H_sync20:
dec r23
brne H_sync20
nop
jmp H_sync17
'********************* ENDE ****************************************************
Frame_end:
ldi zh,high(Text1*2) 'für jeden Frame Textadresse
ldi zl,low(Text1*2) 'neu laden
mov r0,r19
mul r0,r18
add zl,r0
adc zh,r1
dec r17 'Framezähler herunterzählen
breq Sub_end
nop
nop
jmp main
Sub_end:
cbi sync,syn 'Syncport auf "0"
sei 'Interrupt freigeben
$end Asm
End Sub
'----------------------------------------------------------------------------
Text1:
Data 32 , 96 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 32 , 112 '1 oben rechts
Data 112 , 32 , 248 , 0 , 240 , 248 , 112 , 112 , 136 , 248 , 240 , 0
Data 112 , 112 , 248 , 0 , 248 , 248 , 112 , 32 , 136 , 248 , 248 , 0
Data 136 , 216 , 32 , 0 , 136 , 128 , 136 , 32 , 136 , 128 , 136 , 0
Data 128 , 136 , 32 , 0 , 136 , 128 , 128 , 32 , 136 , 128 , 136 , 0
Data 128 , 136 , 32 , 0 , 136 , 128 , 128 , 32 , 136 , 128 , 136 , 0
Data 112 , 136 , 32 , 112 , 248 , 240 , 128 , 32 , 136 , 240 , 248 , 0
Data 112 , 248 , 32 , 112 , 240 , 240 , 128 , 32 , 136 , 240 , 240 , 0
Data 8 , 248 , 32 , 0 , 192 , 128 , 128 , 32 , 136 , 128 , 192 , 0
Data 8 , 136 , 32 , 0 , 160 , 128 , 128 , 32 , 80 , 128 , 160 , 0
Data 136 , 136 , 32 , 0 , 176 , 128 , 136 , 32 , 80 , 128 , 176 , 0
Data 112 , 136 , 32 , 0 , 152 , 248 , 112 , 32 , 32 , 248 , 152 , 0
Data 112 , 136 , 32 , 0 , 136 , 248 , 112 , 112 , 32 , 248 , 136 , 0
' S A T - R E C I V E R
Text2:
Data 112 , 248 , 136 , 8 , 24 , 48 , 96 , 192 , 128 , 128 , 248 , 248 '2 oben rechts
Data 0 , 224 , 136 , 224 , 0 , 240 , 128 , 32 , 136 , 248 , 240 , 0
Data 0 , 240 , 136 , 240 , 0 , 248 , 128 , 112 , 136 , 248 , 248 , 0
Data 0 , 88 , 136 , 88 , 0 , 136 , 128 , 216 , 136 , 128 , 136 , 0
Data 0 , 72 , 136 , 72 , 0 , 136 , 128 , 136 , 80 , 128 , 136 , 0
Data 0 , 72 , 136 , 72 , 0 , 136 , 128 , 136 , 80 , 128 , 136 , 0
Data 0 , 72 , 136 , 72 , 112 , 248 , 128 , 136 , 80 , 240 , 248 , 0
Data 0 , 72 , 136 , 72 , 112 , 240 , 128 , 248 , 32 , 240 , 240 , 0
Data 0 , 72 , 136 , 72 , 0 , 128 , 128 , 248 , 32 , 128 , 192 , 0
Data 0 , 72 , 80 , 72 , 0 , 128 , 128 , 136 , 32 , 128 , 160 , 0
Data 0 , 88 , 80 , 88 , 0 , 128 , 128 , 136 , 32 , 128 , 176 , 0
Data 0 , 240 , 32 , 240 , 0 , 128 , 240 , 136 , 32 , 248 , 152 , 0
Data 0 , 224 , 32 , 224 , 0 , 128 , 240 , 136 , 32 , 248 , 136 , 0
' D V D - P L A Y E R
Text3:
Data 112 , 248 , 136 , 8 , 8 , 48 , 48 , 8 , 8 , 136 , 248 , 112 '3 oben rechts
Data 136 , 112 , 224 , 248 , 112 , 0 , 240 , 248 , 112 , 112 , 240 , 224
Data 136 , 32 , 240 , 248 , 112 , 0 , 248 , 248 , 112 , 112 , 248 , 240
Data 136 , 32 , 88 , 128 , 136 , 0 , 136 , 128 , 136 , 136 , 136 , 88
Data 136 , 32 , 72 , 128 , 136 , 0 , 136 , 128 , 128 , 136 , 136 , 72
Data 136 , 32 , 72 , 128 , 136 , 0 , 136 , 128 , 128 , 136 , 136 , 72
Data 136 , 32 , 72 , 240 , 136 , 112 , 248 , 240 , 128 , 136 , 248 , 72
Data 136 , 32 , 72 , 240 , 136 , 112 , 240 , 240 , 128 , 136 , 240 , 72
Data 136 , 32 , 72 , 128 , 136 , 0 , 192 , 128 , 128 , 136 , 192 , 72
Data 80 , 32 , 72 , 128 , 136 , 0 , 160 , 128 , 128 , 136 , 160 , 72
Data 80 , 32 , 88 , 128 , 136 , 0 , 176 , 128 , 136 , 136 , 176 , 88
Data 32 , 32 , 240 , 248 , 112 , 0 , 152 , 248 , 112 , 112 , 152 , 240
Data 32 , 112 , 224 , 248 , 112 , 0 , 136 , 248 , 112 , 112 , 136 , 224
' V I D E O - R E C O R D
Hier noch ein Foto.
Lesezeichen