Code:
$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 8000000
$baud = 19200
Declare Sub Tv_asm()
Config Pinb.7 = Output
Config Pind.7 = Output
Sync Alias Portb '-[ 1,2K ]- Sync Ausgang
Video Alias Portd '-[ 560 ]- Video Ausgang
Const Syn = 7
Const Vid = 7
Disable Interrupts
Waitms 200
Call Tv_asm()
End
Sub Tv_asm()
$asm
ldi r16,168 'bei internem RC Takt, unbedingt
Out Osccal , R16 'Kallibrieren !!!
'**************** Hauptschleife **************************************
' bei 8 MHz ( 1 Takt = 0,125µs )
' die Zeiten im Hauptprogramm zählen immer von "cbi sync,syn" (Sync auf Low)
' bis "sbi sync,syn" (Sync auf High) oder eben von High nach Low
'*********************************************************************
' __ ___ ___
' V-Sync |_______| |_______| | ---> die ersten 2,5 Zeilen
' 27,5 4,5 27,5 4,5
Main:
ldi r16,5
Syn_0:
cbi sync,syn
cbi video,vid
ldi r23,$49 '27,5 µs
Syn_1:
dec r23
brne syn_1
sbi sync,syn
ldi r23,12 '4,5 µs
Syn_2:
dec r23
brne syn_2
nop
dec r16
brne syn_0 'Schleife 5 x 32µs = 160µs
' __ ________ _________
' Nachtrabanten |__| |__| | ---> wieder 2,5 Zeilen
' 2,25 29,75 2,25 29,75
ldi r16,5
Sync2:
cbi sync,syn 'Nachtrabanten
cbi video,vid
ldi r23,6 '2,25 µs
Syn_3:
dec r23
brne syn_3
sbi sync,syn
ldi r23,$4f '29,75 µs
Syn_4:
dec r23
brne syn_4
dec r16
brne sync2 'Schleife 5 x 32µs = 160µs
'zusammen 320µs = 5 Zeilen
'************************ Zeile 6-156 *******************************
'
' _______________________
' __ ____| |___ ---> 307 Zeilen mit Bildinhalt
' H-Sync |____|
' 4,5 6 52µs Bildinhalt 1,5 µs
'
'********************************************************************
ldi r16,151 'Schleife für 151 Zeilen
Hsyn_0:
cbi sync,syn
cbi video,vid
ldi r23,12 '4,5 µs
Hsyn_1:
dec r23
brne hsyn_1
sbi sync,syn
cbi video,vid
ldi r23,$9e '59,5 µs ( 6 + 52 + 1,5µs )
Hsyn_2: 'da die Pegel für Bildinhalt schwarz sind
dec r23 'wurde es hier zusammnegefasst
brne hsyn_2
nop
nop
dec r16
brne hsyn_0
'************************ Zeile 157 *********************************
nop
Hsyn_3:
cbi sync,syn '1 Zeile
cbi video,vid
ldi r23,12 '4,5 µs
Hsyn_4:
dec r23
brne hsyn_4
sbi sync,syn
cbi video,vid
ldi R23, 16 '6,0 µs
Hsyn_44:
dec R23
brne Hsyn_44
sbi sync,syn
sbi video,vid
ldi r23,$8a '52,0 µs Bild
Hsyn_5:
dec r23
brne hsyn_5
nop
nop
sbi sync,syn
cbi video,vid
ldi r23,4 '1,5 µs Nachsync
Hsyn_6:
dec r23
brne hsyn_6
'************************Zeile 158-312 *******************************
ldi r16,155 'Schleife für 155 Zeilen
Hsyn_8:
cbi sync,syn
ldi r23,12 '4,5 µs
Hsyn_9:
dec r23
brne hsyn_9
sbi sync,syn
ldi r23,$9e '59,5 µs ( 6 + 52 + 1,5µs )
Hsyn_10: 'da die Pegel für Bildinhalt schwarz
dec r23 'bleiben wurde es zusammnegefasst
brne hsyn_10
nop
nop
dec r16
breq ende 'der Sprung zu "ende" spart 5 Takte
nop
nop
nop 'Ausgleichs nop's, da der
nop 'Sprung zu main mehr Takte benötigt
nop
nop
nop
nop
nop
nop
brne hsyn_8
Ende:
jmp main
$end Asm
End Sub**
Lesezeichen