вот текст помогите переписать
'Ansteuerung fьr das Siemens-Display S65 mit der Anfangsnummer LS020...
' by Dirk Milewski (c) 2006 -
www.comwebnet.de
'Pinbelegung, Rьckseite Display, Anschluss auf linker Seite
'Auflistung von oben nach unten
'RS C0
'Reset D7
'CS C2
'CLK C4
'Dat C6
'Vcc 3 Volt (max. 3.3 Volt, min. etwa 2.4 Volt)
'GND
'Vdigital 3 Volt, kann aber auch 1.8 Volt betragen, habe ich mit Vcc verbunden
'LED+ etwa 10.5 Volt, 20 mA (max 30 mA)
'LED- (GND)
'Da es sich hier um keine SPI-Ansteuerung handelt, kцnnen alle Pins beliebig
'ausgetauscht werden.
'Wichtig ist, dass beim Compilieren die korrekte Taktfrequenz angegeben wird
'Code wurde mit Atmega32 16 MHz getestet
'################################################# ##########################
' Osaziloskop mit Display Siemens S65
'################################################# ##########################
' Diese Software steht unter GPL -(c) Dirk Milewski
'################################################# ##########################
' Schaltung und Layout auf
www.comwebnet.de -› projekte
'################################################# ##########################
' Wer ne Mцglichkeit hat Hard-Spi zu machen bitte Info an mich mit demo Programm
'################################################# ############################
$hwstack = 128
$swstack = 128
$framesize = 128
$regfile = "m32def.Dat"
$crystal = 16000000
$baud = 19200
Ddrd = &B11111111 'Port C als Output
Ddrc = &B11111111 'Port D als Output
Ddra = &B00000000 'Port a als Input
Ddrb = &B11111111 'portb output -›S65 Display
Dim A1 As Word , B1 As Word , R1 As Byte , F1 As Word , T As Byte , Platz As Word
Dim W1 As Word , Xy As Byte , Farbe As Word , Zeichenkette As String * 30
'############################
' fьr U messung
'#############################
Dim X1m As Byte , Y1m As Byte , Zm As Integer
Dim X2m As Byte , Y2m As Byte
Dim D1m As Byte , Eam As Integer , Fam As Integer
Dim Wm As String * 2
Dim V(770) As Byte
Dim U As Word
Dim Umess As Single
Dim Tmp As String * 10
Dim Ypx As Byte
Dim Timeb As Byte
'################################################# ###################
' ADC kanal 0 und 1 werden benutzt -› zur Auswertung hier nur 0
'################################################# ###################
'Beispiel: 16000000MHz/16(Prescaler)= 1000000/13 Takte = Messfrequenz 76923 Hz
'################################################# ###################
Config Adc = Single , Prescaler = 16 , Reference = Internal
Config Pina.2 = Input
Porta.2 = 1
Kup Alias Pina.2
Config Pina.3 = Input
Porta.3 = 1
Kdown Alias Pina.3
Config Pina.4 = Input
Porta.4 = 1
Kright Alias Pina.4
Config Pina.5 = Input
Porta.5 = 1
Kleft Alias Pina.5
Config Pina.6 = Input
Porta.6 = 1
Kenter Alias Pina.6
Config Pina.7 = Input
Porta.7 = 1
Kstart Alias Pina.7
'################################################# ###################
' Wir AREF = Ub genommen bitte Messen und Hier bei AREF eintragen.
' Interne AREF =2,56V -› siehe datenblatt!
'################################################# ###################
Const Aref = 2.56
Const N = Aref / 1024
'################################################# #
' SPI
'#################################################
Rs Alias Portb.0
Res Alias Portb.1
Cs Alias Portb.2
Clk Alias Portb.3
Dat Alias Portb.4
'16Bit Color -› RRRRRGGGGGBBBBB
Const Lila = &B1111100000011111
Const Blau = &B0000000000011111
Const Weiss = &HFFFF
Const Schwarz = &H0000
Const Rot = &B1111100000000000
Const Gruen = &B0000011111100000
Const Cyan = &B0000011111111111
Const Gold = &B1111111111100000
Const Grau = &B1111111111110110
Const Hgelb = &B1111011110101000
Const Dgelb = &B1111011111010000
Const X = 176
Const Y = 132
Declare Sub S65_init()
Declare Sub S65_pset(byval Lx As Byte , Byval Ly As Byte , Byval Color As Word)
Declare Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word)
Declare Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String )
Declare Sub S65_print(byval Lx As Byte , Byval Ly As Byte , Byval Fcol As Word , Byval Bcol As Word , Byval Lcd_text As String)
Declare Sub S65_cls(byval Bcol As Word)
Declare Sub S65_pixelset(byval Lx As Byte , Byval Ly As Byte , Byval Color As Word)
Call S65_init()
Call S65_cls(schwarz)
Call S65_print(8 , 15 , Grau , Rot , " 1Kanal Osziloskop ")
Call S65_print(18 , 40 , Weiss , Schwarz , " V1.0-20060922 ")
Call S65_print(26 , 25 , Weiss , Schwarz , " by Dirk Milewski (c) ")
Call S65_print(50 , 60 , Cyan , Schwarz , "www.comwebnet.de")
Call S65_line(40 , 40 , 60 , 60 , Hgelb)
Call S65_line(40 , 40 , 60 , 80 , Cyan)
Call S65_line(40 , 40 , 80 , 60 , Rot)
'#################################
' Kreuz zeichen
'#################################
For Xy = 30 To 50
Call S65_pset(xy , 40 , Hgelb)
Call S65_pset(40 , Xy , Hgelb)
Next Xy
For Xy = 20 To 100
Call S65_pset(xy , 30 , Cyan)
Next Xy
'#####################################
' Titelscreen
'#####################################
For Xy = 3 To 0 Step -1
Call S65_print(120 , 15 , Cyan , Schwarz , "Start Oszi press any Key")
Waitms 500
Call S65_print(100 , 40 , Cyan , Schwarz , "Start in: ")
Tmp = Str(xy)
Call S65_print(100 , 100 , Cyan , Schwarz , Tmp)
Call S65_print(120 , 15 , Rot , Schwarz , "Start Oszi press any Key")
Waitms 500
Next Xy
Call S65_cls(schwarz)
'timebase fьr DIV/T 1..6
Timeb = 1
Do
'Call S65_line(20 , 20 , 80 , 170 , Cyan)
Call S65_line(20 , 20 , 120 , 20 , Cyan)
For Xy = 20 To 175
Call S65_pset(20 , Xy , Cyan)
Next
Start Adc
For Zm = 1 To 660
V(zm) = Getadc(0) 'kanal 0 zur Messung
Next
Stop Adc
For Zm = 2 To 175
If Kup = 0 Then
Waitms 100
Timeb = Timeb + 1
If Timeb › 7 Then Timeb = 1
Tmp = Str(timeb)
Tmp = "D/T: " + Tmp
Call S65_print(120 , 20 , Weiss , Rot , Tmp)
End If
If Timeb › 7 Then Timeb = 1
Fam = Zm * Timeb
U = V(fam)
Umess = U * N
Umess = Umess / Aref
Umess = Umess * 100
Eam = Int(umess)
Umess = U * N
Y2m = Eam + 21
X2m = Zm + 20
If Y2m › 175 Then Y2m = 175
'Call S65_print(120 , 20 , Weiss , Rot , "DIV/T: 100µs ")
'Locate 14 , 10
'Lcd " D/T:" ; Menu_b(timeb)
D1m = X1m
'Line(d , 0 ) -(d , 99) , 0
'Line(x1 , Y1) -(x2 , Y2) , 255
'lцschen des Graphen
For Xy = 21 To 132
Call S65_pset(xy , D1m , Schwarz)
Next
'Call S65_line(y1m , X1m , Y2m , X2m , Weiss)
Call S65_pset(y1m , X1m , Weiss)
X1m = X2m
Y1m = Y2m
'Tmp = Fusing(umess , "#.##")
'Tmp = "V=" + Tmp
'Call S65_print(120 , 130 , Weiss , Schwarz , Tmp)
Next
Tmp = Fusing(umess , "#.##")
Tmp = "V=" + Tmp
Call S65_print(120 , 130 , Weiss , Schwarz , Tmp)
Loop
Powerdown
End
'################################################# ###############
' LCD - commando , Parameter ьbergabe zum Display
'################################################# ###############
16:
Cs = 0
Shiftout Dat , Clk , A1 , A1
Cs = 1
Return
'##################################
'Start der S65-Ansteuerung
'##################################
Sub S65_init()
Anfang:
Res = 1
Waitms 10
Res = 0 'Reset
Cs = 1
Clk = 1
Dat = 1
Rs = 1
Waitms 1
Res = 1 'Reset Ende
Waitms 10
Cs = 1 'CS select, Start
Waitms 1
Rs = 1
'RS high, Command
'####################################
' Displayinitialisierung
'####################################
Restore Init1
For R1 = 1 To 12
Read A1
Gosub 16
Next
Waitms 7 'diese Zeit ist sehr wichtig, sollte keinesfalls unterschritten werden
Restore Init2
For R1 = 1 To 23
Read A1
Gosub 16
Next
End Sub
'##################################
'# LCD Lцschen #
'##################################
Sub S65_cls(byval Bcol As Word)
Local Aa As Word
Rs = 1
A1 = &HEF90
Gosub 16
A1 = &H0500
Gosub 16
A1 = &H0600
Gosub 16
A1 = &H0700
Gosub 16
Platz = 132 * 176
Rs = 0
For W1 = 0 To Platz
A1 = Bcol
Gosub 16
Next W1
Rs = 1
End Sub
'################################################# #####
'# Setze Pixel -› Pset #
'################################################# #####
Sub S65_pset(lx As Byte , Ly As Byte , Color As Word)
Rs = 1
A1 = &H600 + Lx
Gosub 16
A1 = &H700 + Ly
Gosub 16
Rs = 0
Cs = 0
Shiftout Dat , Clk , Color , 0
Cs = 1
End Sub
'################################################# #####
'# Line zeichnen #
'################################################# #####
Sub S65_line(byval Lx1 As Byte , Byval Ly1 As Byte , Byval Lx2 As Byte , Byval Ly2 As Byte , Byval Color As Word)
Local M As Byte , M1 As Single , M2 As Single
Local Yg As Byte , Cv As Single , Bn As Integer
Local R As Byte , B As Byte
M1 = Ly2 - Ly1
M2 = Lx2 - Lx1
Cv = M1 / M2
Bn = Int(cv)
M = Low(bn)
B = M * Lx1
B = -1 * B
'If Ly1 = Ly2 Then B = 0
'If Lx1 = Lx2 Then B = 0
B = B + Ly1
For R = Lx1 To Lx2
Yg = M * R
Yg = Yg + B
Call S65_pset(r , Yg , Color)
Next R
End Sub
'################################################# ####
'# ACSII Zeichenausgabe #
'################################################# ####
Sub S65_zeichen(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String * 1)
Local R As Integer
Local A As Byte
Local B As Byte
Local C As Long
Local D As Byte
Local E As Byte
Local F As Byte
Local G As Long
Local Xpos As Byte
Local Ypos As Byte
Local Zeichen As String * 1
Print "S65_zeichen(" ; Lx ; "," ; Ly ; "," ; Bcol ; "," ; Fcol ; "," ; Lcd_text ; ")"
Xpos = 0
Ypos = 0
'For R = 1 To Len(lcd_text)
' Zeichen = Mid(lcd_text , R , 1) 'Hole char
G = Asc(lcd_text)
'Print "S65_Zeichen:" ; Lcd_text
'Print "ASCII:" ; G 'Bestimme Pos in Tabelle
G = G - 32
G = G * 6
Readeeprom B , G
'Call Lcd_locate(lcd_posx , Lcd_posy)
A = 8 '1.linie frei
'If Lcd_doublesize = 1 Then A = 16
'If Lcd_doublesize = 2 Then A = 32
For F = 1 To 6
C = 1
D = B 'Byte darf nicht verдndert werden fьr 2. durchlauf
For E = 1 To 8
Xpos = Lx + E
Xpos = 132 - Xpos
Ypos = Ly + F
'Ypos = 176 - ypos
A = D And 1
If A = 1 Then Call S65_pset(xpos , Ypos , Fcol)
If A = 0 Then Call S65_pset(xpos , Ypos , Bcol)
Shift D , Right , 1
Next
Decr C
G = G + 1
Readeeprom B , G
Next
'Ypos = Ypos + 6
'Next
End Sub
'################################################# ###################
' S65_print(x,y,bcol,fcol) -› Zeichenketten auf LCD ausdrucken
'################################################# ###################
Sub S65_print(byval Lx As Byte , Byval Ly As Byte , Byval Bcol As Word , Byval Fcol As Word , Byval Lcd_text As String)
Local Xpos As Byte
Local Ypos As Byte
Local Zaehler As Byte
Local Laenge As Byte
Local Zeichen As String * 1
Laenge = Len(lcd_text)
For Zaehler = 1 To Laenge
Zeichen = Mid(lcd_text , Zaehler , 1)
Call S65_zeichen(lx , Ly , Bcol , Fcol , Zeichen)
Ly = Ly + 6
Next Zaehler
End Sub
'------------------------------------------------------------------- Ende Subs zum Definieren von Fenstern
Init1:
Data &HFDFD% , &HFDFD%,
Data &HEF00%,
Data &HEE04% , &H1B04%,
Data &HFEFE% , &HFEFE%,
Data &HEF90% , &H4A04% , &H7F3F% , &HEE04% , &H4306%
Init2:
Data &HEF90% , &H0983% , &H0800% , &H0BAF% , &H0A00% , &H0500% , &H0600% , &H0700%,
Data &HEF00%,
Data &HEE0C%,
Data &HEF90% , &H0080%,
Data &HEFB0% , &H4902%,
Data &HEF00%,
Data &H7F01% , &HE181%,
Data &HE202%,
Data &HE276%,
Data &HE183%,
Data &H8001%,
Data &HEF90%,
Data &H0000%
$eeprom
Data &H00 , &H00 , &H00 , &H00 , &H00 , &H00 ' "(space)"
Data &H00 , &H06 , &H5F , &H06 , &H00 , &H00 ' "!"
Data &H07 , &H03 , &H00 , &H07 , &H03 , &H00 ' """
Data &H24 , &H7E , &H24 , &H7E , &H24 , &H00 ' "#"
Data &H24 , &H2B , &H6A , &H12 , &H00 , &H00 ' "$"
Data &H63 , &H13 , &H08 , &H64 , &H63 , &H00 ' "%"
Data &H36 , &H49 , &H56 , &H20 , &H50 , &H00 ' "&"
Data &H00 , &H07 , &H03 , &H00 , &H00 , &H00 ' "'"
'40
Data &H00 , &H3E , &H41 , &H00 , &H00 , &H00 ' "("
Data &H00 , &H41 , &H3E , &H00 , &H00 , &H00 ' ")"
Data &H08 , &H3E , &H1C , &H3E , &H08 , &H00 ' "*"
Data &H08 , &H08 , &H3E , &H08 , &H08 , &H00 ' "+"
Data &H00 , &HE0 , &H60 , &H00 , &H00 , &H00 ' ","
Data &H08 , &H08 , &H08 , &H08 , &H08 , &H00 ' "-"
Data &H00 , &H60 , &H60 , &H00 , &H00 , &H00 ' "."
Data &H20 , &H10 , &H08 , &H04 , &H02 , &H00 ' "/"
Data &H3E , &H51 , &H49 , &H45 , &H3E , &H00 ' "0"
Data &H00 , &H42 , &H7F , &H40 , &H00 , &H00 ' "1"
'50
Data &H62 , &H51 , &H49 , &H49 , &H46 , &H00 ' "2"
Data &H22 , &H49 , &H49 , &H49 , &H36 , &H00 ' "3"
Data &H18 , &H14 , &H12 , &H7F , &H10 , &H00 ' "4"
Data &H2F , &H49 , &H49 , &H49 , &H31 , &H00 ' "5"
Data &H3C , &H4A , &H49 , &H49 , &H30 , &H00 ' "6"
Data &H01 , &H71 , &H09 , &H05 , &H03 , &H00 ' "7"
Data &H36 , &H49 , &H49 , &H49 , &H36 , &H00 ' "8"
Data &H06 , &H49 , &H49 , &H29 , &H1E , &H00 ' "9"
Data &H00 , &H6C , &H6C , &H00 , &H00 , &H00 ' ":"
Data &H00 , &HEC , &H6C , &H00 , &H00 , &H00 ' ";"
'60
Data &H08 , &H14 , &H22 , &H41 , &H00 , &H00 ' "‹"
Data &H24 , &H24 , &H24 , &H24 , &H24 , &H00 ' "="
Data &H00 , &H41 , &H22 , &H14 , &H08 , &H00 ' "›"
Data &H02 , &H01 , &H59 , &H09 , &H06 , &H00 ' "?"
Data &H3E , &H41 , &H5D , &H55 , &H1E , &H00 ' "@"
Data &H7E , &H09 , &H09 , &H09 , &H7E , &H00 ' "A"
Data &H7F , &H49 , &H49 , &H49 , &H36 , &H00 ' "B"
Data &H3E , &H41 , &H41 , &H41 , &H22 , &H00 ' "C"
Data &H7F , &H41 , &H41 , &H41 , &H3E , &H00 ' "D"
Data &H7F , &H49 , &H49 , &H49 , &H41 , &H00 ' "E"
'70
Data &H7F , &H09 , &H09 , &H09 , &H01 , &H00 ' "F"
Data &H3E , &H41 , &H49 , &H49 , &H7A , &H00 ' "G"
Data &H7F , &H08 , &H08 , &H08 , &H7F , &H00 ' "H"
Data &H00 , &H41 , &H7F , &H41 , &H00 , &H00 ' "I"
Data &H30 , &H40 , &H40 , &H40 , &H3F , &H00 ' "J"
Data &H7F , &H08 , &H14 , &H22 , &H41 , &H00 ' "K"
Data &H7F , &H40 , &H40 , &H40 , &H40 , &H00 ' "L"
Data &H7F , &H02 , &H04 , &H02 , &H7F , &H00 ' "M"
Data &H7F , &H02 , &H04 , &H08 , &H7F , &H00 ' "N"
Data &H3E , &H41 , &H41 , &H41 , &H3E , &H00 ' "O"
Data &H7F , &H09 , &H09 , &H09 , &H06 , &H00 ' "P"
'80
Data &H3E , &H41 , &H51 , &H21 , &H5E , &H00 ' "Q"
Data &H7F , &H09 , &H09 , &H19 , &H66 , &H00 ' "R"
Data &H26 , &H49 , &H49 , &H49 , &H32 , &H00 ' "S"
Data &H01 , &H01 , &H7F , &H01 , &H01 , &H00 ' "T"
Data &H3F , &H40 , &H40 , &H40 , &H3F , &H00 ' "U"
Data &H1F , &H20 , &H40 , &H20 , &H1F , &H00 ' "V"
Data &H3F , &H40 , &H3C , &H40 , &H3F , &H00 ' "W"
Data &H63 , &H14 , &H08 , &H14 , &H63 , &H00 ' "X"
Data &H07 , &H08 , &H70 , &H08 , &H07 , &H00 ' "Y"
Data &H71 , &H49 , &H45 , &H43 , &H00 , &H00 ' "Z"
Data &H00 , &H7F , &H41 , &H41 , &H00 , &H00 ' "["
'90
Data &H02 , &H04 , &H08 , &H10 , &H20 , &H00 ' "\"
Data &H00 , &H41 , &H41 , &H7F , &H00 , &H00 ' "]"
Data &H04 , &H02 , &H01 , &H02 , &H04 , &H00 ' "^"
Data &H80 , &H80 , &H80 , &H80 , &H80 , &H00 ' "_" ' "`"
Data &H0C , &H12 , &H12 , &H0C , &H00 , &H00 ' neu "°" statt "`"
'Data &H00 , &H03 , &H07 , &H00 , &H00 , &H00
Data &H20 , &H54 , &H54 , &H54 , &H78 , &H00 ' "a"
Data &H7F , &H44 , &H44 , &H44 , &H38 , &H00 ' "b"
Data &H38 , &H44 , &H44 , &H44 , &H28 , &H00 ' "c"
Data &H38 , &H44 , &H44 , &H44 , &H7F , &H00 ' "d"
Data &H38 , &H54 , &H54 , &H54 , &H18 , &H00 ' "e"
Data &H08 , &H7E , &H09 , &H09 , &H00 , &H00 ' "f"
'100
Data &H18 , &HA4 , &HA4 , &HA4 , &H7C , &H00 ' "g"
Data &H7F , &H04 , &H04 , &H78 , &H00 , &H00 ' "h"
Data &H00 , &H00 , &H7D , &H00 , &H00 , &H00 ' "i"
Data &H40 , &H80 , &H84 , &H7D , &H00 , &H00 ' "j"
Data &H7F , &H10 , &H28 , &H44 , &H00 , &H00 ' "k"
Data &H00 , &H00 , &H7F , &H40 , &H00 , &H00 ' "l"
Data &H7C , &H04 , &H18 , &H04 , &H78 , &H00 ' "m"
Data &H7C , &H04 , &H04 , &H78 , &H00 , &H00 ' "n"
Data &H38 , &H44 , &H44 , &H44 , &H38 , &H00 ' "o"
Data &HFC , &H44 , &H44 , &H44 , &H38 , &H00 ' "p"
Data &H38 , &H44 , &H44 , &H44 , &HFC , &H00 ' "q"
'110
Data &H44 , &H78 , &H44 , &H04 , &H08 , &H00 ' "r"
Data &H08 , &H54 , &H54 , &H54 , &H20 , &H00 ' "s"
Data &H04 , &H3E , &H44 , &H24 , &H00 , &H00 ' "t"
Data &H3C , &H40 , &H20 , &H7C , &H00 , &H00 ' "u"
Data &H1C , &H20 , &H40 , &H20 , &H1C , &H00 ' "v"
Data &H3C , &H60 , &H30 , &H60 , &H3C , &H00 ' "w"
Data &H6C , &H10 , &H10 , &H6C , &H00 , &H00 ' "x"
Data &H9C , &HA0 , &H60 , &H3C , &H00 , &H00 ' "y"
Data &H64 , &H54 , &H54 , &H4C , &H00 , &H00 ' "z"
Data &H08 , &H3E , &H41 , &H41 , &H00 , &H00 ' "{"
'120
Data &H00 , &H00 , &H7F , &H00 , &H00 , &H00 ' "|"
Data &H00 , &H41 , &H41 , &H3E , &H08 , &H00 ' "}"
Data &H02 , &H01 , &H02 , &H01 , &H00 , &H00 ' "~"
Data &H3F , &H21 , &H21 , &H21 , &H21 , &H00 ' "["
Data &H21 , &H21 , &H21 , &H21 , &H21 , &H00
Data &H21 , &H21 , &H21 , &H21 . &H3F , &H00 ' "]"
Data &H3F , &H3F , &H3F , &H3F , &H3F , &H00
Data &H3F , &H00 , &H00 , &H00 , &H00 , &H00
$data