- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 9 von 9

Thema: TV Textausgabe in Bascom

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Begeisterter Techniker Avatar von albundy
    Registriert seit
    16.10.2004
    Beiträge
    282

    TV Textausgabe in Bascom

    Hallo,
    ich habe für ein bestehendes Projekt in Bascom, nach einer Möglichkeit gesucht, statisch Text auf dem TV darzustellen. Das ganze sollte erstens ohne Interrupts auskommen, da sonst nicht genügend Zeit für die andere Aufgaben bleibt und zweitens mit 4 MHz zurecht kommen.
    Mit Hilfe von JanB's ASM - Terminalquellcode ist es mir gelungen, eine für meine Zwecke ausreichende Lösung in Form einer ASM Subroutine zu finden. (Assembler Freak's mögen mir meinen Programmierstil verzeihen.)
    Ich stelle den Quellcode mal hier rein, vielleicht ist ja dem einen oder anderen mit dieser Möglichkeit geholfen.
    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.
    Miniaturansichten angehängter Grafiken Miniaturansichten angehängter Grafiken tv_bascom.jpg  

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress