PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Uart Ausgabe vertauscht Wertepaare



Picht
24.08.2006, 15:40
Hallo Profis,
Hier mal ein Testprogramm ,das bei der Ausgabe die Zahlenpaare
vertauscht.Es sollen die Paare so ausgegeben werden,wie sie
abgelegt sind.Komischerweise fängt die Ausgabe mit einen Zahlenpaar
aus der Mitte einer Data-ablage an.Wie kriegt man das hin,
das der Speicher wahrheitsgemäss abgearbeitet wird?


$regfile = "attiny2313.dat"
$crystal = 3686400
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialout = Buffered , Size = 10
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Dim S As Byte , Count As Byte
Declare Sub Datenpunkt
Declare Sub Displaycls

Do
Wait 2
Displaycls 'Display löschen
Datenpunkt 'Datenpunkt setzen
Restore Data1:
For Count = 1 To 4
Read S : Print Chr(s);
Next
Loop

Sub Displaycls
Local C As Byte
Restore Cls1:
For Count = 1 To 3
Read C : Print Chr(c);
Next
End Sub

Sub Datenpunkt
Local D As Byte
Restore Datp10:
For Count = 1 To 5
Read D : Print Chr(d);
Next
End Sub

'Datentabelle
Cls1:
Data &H02 , &H43 , &H41 '02 43 41
Datp10:
Data &H04 , &H53 , &H01 , &H00 , &H56 '04 53 01 00 56
Data1:
Data &H03 , &H50 , &H41 , &H12 '03 50 41 12

-tomas-
24.08.2006, 20:25
Du fängst jetzt den dritten Thread zum gleichen Code-Schnipsel in zwei Tagen an !!

Und schau Dir bitte mal das richtige Posten von Code an...

PS: Im Simulator erfolgt die Ausgabe der Datenwerte in der Reihenfolge wie die DATA-Werte angeordnet sind.

chr-mt
24.08.2006, 20:52
Hi,
Code kannst du so posten:
[ code]Hier kommt dein Code rein[ /code ]
(Die Leerzeichen in den Klammern weglassen)
Sieht dann so aus:

Hier kommt dein Code rein

Vorteil ist, daß die Formatierungen (Einrücken) erhalten bleiben.
Das macht's übersichtlicher.

Gruß
Christopher

Picht
24.08.2006, 22:05
Hallo Profis,
ich hatte Bedenken das jemand Antworten noch liest.
Mit dem Code stimme ich zu.Anbei ein geänderte Form.
Die Anzahl der Wertepaare stimmt.Es werden aber Wertepaare aus
beiden Data Blocks benutzt.Das ergibt keinen Sinn.
die Hilfe kann ich schon langsam auswendig.Ich habe bewußt
mal alles stehen lassen.Kriege soweit alles hin,bis auf die Ausgabe.
Übrigens ich lese immer mit einen Terminalprogramm aus.
Es wurden mehrere Varianten der Ausgabe probiert.
Und Danke für die formellen Hinweise.



$regfile = "attiny2313.dat"
$crystal = 3686400
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialout = Buffered , Size = 10
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Dim S As Byte , Count As Byte
Declare Sub Datenpunkt
Declare Sub Displaycls

Do
'Print Chr(&H02) ; Chr(&H43) ; Chr(&H41) ; 'Display löschen
Datenpunkt 'Datenpunkt setzen
Restore Dta2:
For Count = 1 To 4
Read S : Printbin S;
Next
Wait 2
Loop

'Sub Displaycls
'Local C As Byte
'Restore Cls1:
'For Count = 1 To 3
' Read C : Print Chr(c);
' Next
'End Sub

Sub Datenpunkt
Local A As Byte
Restore Dta1:
For Count = 1 To 5
Read A : Printbin A;
Next Count
Wait 1
End Sub

'Datentabelle
Dta1:
Data &H04 , &H53 , &H01 , &H00 , &H56 '04 53 01 00 56
Dta2:
Data &H03 , &H50 , &H41 , &H12 '03 50 41 12

Gento
24.08.2006, 22:30
selten so ein codegewurschtet gelesen.
Mich wundert da nichts.

Was genau soll Dein Prog
Case of
machen:?
Können:?
end ?

Gento

Picht
24.08.2006, 22:46
ich versuche einfach auf verschiedene Weise "Data" über die Schnittstelle
auszugeben.Also lesen und ausgeben.Orginalgetreu!
Wobei Dta2 hakt in der Simulation.Es werden später ca 50 Data's
abgelegt.Aber wie gesagt ich habe einen Zahlendreher.

Picht
25.08.2006, 11:03
Hallo Profis
habe die Nacht durchgearbeitet und siehe da es läuft.
Die Idee mit der Simulation war sehr gut.Es gibt nur noch ein Problem:
Zum Schleifenende muss der zuletzt ausgegebene Wert gelöscht werden.
Sicher keine grosse Sache mann muss es nur wissen.
Anbei mal den Code in "Hochdeutsch".
Vielleicht kann mal jemand die Werte in der Deklaretion kommentieren.
Wurde aus Beispielen übernommen.





'-----------------------------------------------------------------------------------------
'name : Display Nokia.bas

'Programm Zur Ansteuerung Eines Miniterminals
'zur Datenausgabe auf Nokia 3310 Display
'-----------------------------------------------------------------------------------------

$regfile = "attiny2313.dat"
$crystal = 3686400
$baud = 9600
$hwstack = 32
$swstack = 10
$framesize = 40
Config Serialout = Buffered , Size = 40
Config Com1 = Dummy , Synchrone = 0 , Parity = Even , Stopbits = 1 , Databits = 8 , Clockpol = 0
Dim Count As Byte
Declare Sub Datenpunkt
Declare Sub Displaycls
Declare Sub Text

'-----------------------------------------------------------------------------------------
Do
'Hauptschleife
Displaycls 'Display löschen
Datenpunkt 'Datenpunkt setzen
Text 'Text
'Platz für Hauptprogamm
' Wait 2
Loop
'-----------------------------------------------------------------------------------------

Sub Displaycls 'Unterprogramm
Local C As Byte 'Display löschen
Restore Cls1:
For Count = 1 To 3
Read C : Printbin C;
Next
End Sub

Sub Datenpunkt 'Unterprogramm
Local A As Byte 'Datenpunkt setzen
Restore Dta1:
For Count = 1 To 5
Read A : Printbin A;
Next
End Sub

Sub Text 'Unterprogramm
Local B As Byte 'Text
Restore Dta2:
For Count = 1 To 4
Read B : Printbin B;
Next Count
End Sub
'-------------------------------------------------------------------------------------------
'Datentabelle

Cls1:
Data &H02 , &H43 , &H41 '02 43 41
Dta1:
Data &H04 , &H53 , &H01 , &H00 , &H56 '04 53 01 00 56
Dta2:
Data &H03 , &H50 , &H41 , &H12 '03 50 41 12

'und so weiter