PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ping-pong-anfang mit fbas-signal und atmega32 8mhz



purebasic
13.01.2008, 21:02
kleines ping-pong-beispiel mit bascom und dem fbas-signal.




$regfile = "m32def.dat"
$framesize = 32
$swstack = 32
$hwstack = 64
$crystal = 8000000
$baud = 19200

Declare Sub Tv_asm()

Dim Z As Byte
Dim Hodunkel_l As Byte
Dim Hodunkel_r As Byte
Dim Hodunkel_pi As Byte
Dim Hopixel As Byte
Dim Vepixel As Byte

Dim Vedunkel_o As Byte
Dim Vedunkel_u As Byte

Dim Text As String * 10

Config Pind.6 = Output
Config Pind.7 = Output

Sync Alias Portd '-[ 1,2K ]- Sync Ausgang
Video Alias Portd '-[ 560 ]- Video Ausgang
Const Syn = 6
Const Vid = 7

Enable Interrupts

Waitms 200

Hodunkel_l = 100
Hopixel = 1
Hodunkel_r = 138 - 101
Hodunkel_pi = 138 - Hopixel
Vepixel = 7
Vedunkel_o = 45
Vedunkel_u = 255

Do

For Z = 1 To 136
Vedunkel_o = Vedunkel_o + 1
Vedunkel_u = Vedunkel_u - 1
Hodunkel_l = Z
Hodunkel_r = Hodunkel_pi - Z
Call Tv_asm()
Next
For Z = 1 To 136
Vedunkel_o = Vedunkel_o - 1
Vedunkel_u = Vedunkel_u + 1
Hodunkel_l = Hodunkel_pi - Z
Hodunkel_r = Z
Call Tv_asm()
Next


Loop

End

Sub Tv_asm()
$asm

'**************** 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

'************************ Zeilen ************************************
'
' _______________________
' __ ____| |___ ---> 307 Zeilen mit Bildinhalt
' H-Sync |____|
' 4,5 6 52µs Bildinhalt 1,5 µs
'
'************************ Zeilen dunkel ************************************

lds r16,{vedunkel_o}
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

Weiter:
'************************ Zeilen-Linien *********************************

lds r16,{Vepixel}
Hsyn_3:
cbi sync,syn
cbi video,vid

ldi r23,12 '4,5 µs
Hsyn_4:
dec r23
brne hsyn_4

sbi sync,syn
cbi video,vid

ldi R23, 12 '6,0 µs
Hsyn_44:
dec R23
brne Hsyn_44
nop
nop

lds r23,{hodunkel_l}
Hsyn_555:
dec r23
brne hsyn_555

sbi sync,syn
sbi video,vid

lds r23,{hopixel} 'Bild aus Variable
Hsyn_5:
dec r23
brne hsyn_5

sbi sync,syn
cbi video,vid

lds r23,{hodunkel_r}
Hsyn_55:
dec r23
brne hsyn_55

ldi r23,3 '1,5 µs Nachsync
Hsyn_6:
dec r23
brne hsyn_6
nop
nop
nop
nop
nop
dec r16
brne hsyn_3

'************************ Zeilen dunkel *******************************

lds r16,{vedunkel_u}
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

dec r16
breq ende

brne hsyn_8
Ende:
'jmp main
$end Asm
End Sub

nikolaus10
14.01.2008, 11:05
Koenntest du vielleicht noch ein klein wenig mehr schreiben wo was angeschlossen wird.
Paddels und fbas Beschaltung

Stromi
14.01.2008, 15:03
Ein Purebasic Fan, jo das freut mich, aber wieso gesperrt?
Wer soviel von Vor- und Nachtrabanten versteht, ist doch nicht frech :-)
Was hast du für ein unseriöses Bildchen mit Bascom erstellt :-)