Archiv verlassen und diese Seite im Standarddesign anzeigen : Dezimalzahl in Binärzahl umwandeln Atmega8
runner02
30.07.2011, 20:07
Hallo Leute,
Komischerweise finde ich weder in Google noch hier in der Forumssuche einen Befehl (wie 'inttostr' in Delphi), der mir Zahlen von int nach bin umwandelt... :(
Z.B.
variable1 = 24
variable2 = inttobin (variable1)
-> gebe ich variable2 aus, soll 0011001 etc rauskommen <-
Mfg
Welche Programmiersprache?
Gruß Richard
runner02
30.07.2011, 20:11
Bascom, bitte
Mit dem Befehl "Bin" machst du das.
Wenn du dieses Programm hast:
Dim A as Byte
A = 10
Dim B as String * 10
B = Bin(A)
Damit wandelst du die Zahl A in einen Binären String um.
runner02
30.07.2011, 20:39
Großartig, Danke!!
String*10?? Und wenn ich es per LEDs ausgebe brauche ich Byte?? -> PORTB = Bin(A)
Und statt Byte kann ich auch Integer nehmen?? Also wenn ich z.b. 2053 habe, dann reicht doch Byte nicht mehr... ?
Ja genau für Portausgabe heißt es dann "Print Bin(A). Und die genaue deffinition des Befehls ist:
Convert a numeric variable into the binary string representation.
Sollte dann auch mit Integer gehen. Weiß ich aber nicht genau. Musst du mal ausprobieren.
Sauerbruch
30.07.2011, 23:18
Und wenn ich es per LEDs ausgebe brauche ich Byte??
Was meinst Du denn genau mit "per LED ausgeben"? Sollen alle Bits nacheinander, d.h. seriell über einen einzigen Pin ausgegeben werden, oder alle Bits gleichzeitig über 8 bzw. 16 Anschlüsse?
Nein du kannst mit "Bin" jeden Numerischen Wert in einen Binären String verwandeln den du dann auf den Ports ausgeben kannst.
Sauerbruch
30.07.2011, 23:25
Die Frage ging mehr an runner02 - der "Bin"-Befehl ist mir wohl geläufig, nur kann man ein Byte (oder mehrere Bytes) ja durchaus auch parallel über einen kompletten Port ausgeben...
mehrere Bytes gehen nur bei Ports mit mehr als 8 Bit, ansonsten beim 8-Bitter brauchst Du garnix umwandeln so lange Deine Zahl unter 256 bleibt passt das auf das Portregister. Wenn Du ne Word- oder Int- Variable auf zwei Ports verteilen willst machst Du das entweder über high() oder low() -Befehl oder legst gleich ne Overlayvariable an ...
dim x_word as word
dim lowbyte_word as byte at x_word overlay
dim highbyte_word as byte at x_word+1 overlay
dann nur noch
porta=lowbyte
portb=highbyte
Eine Dezimalzahl brauchst Du nicht in Binär umwandeln, der µC rechnet eh nur in Binärzahlen. Die Ausgabe von Dezimalzahlen muss dieser immer umrechnen :)
runner02
03.08.2011, 14:26
mehrere Bytes will ich gar nicht ausgeben, bei integer ist es um die Tage gegangen.... Siehe hier https://www.roboternetz.de/community/showthread.php?54278-BASCOM-simple-Uhr&p=520358#post520358
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.