-
Thread
32 Bit binär in BCD umwandeln
Liebe Gemeinde ! Hat jemand eine C Routine, welche eine 32 Bit binär- Zahl in BCD verwandelt ? Es sollten 6-8 BCD Zahlen herauskommen. Schöne Grüße Josef
-
Thread
10 Bit binärzahl in BCD umwandeln
hi zusammen, ich möchte eine 10 bit zahl in eine BCD zahl (3-stellen) umwandeln, kann mir da jemand helfen? habe bisher nur 8-Bit-Zahlen in BCD umgewandelt. ich programmiere in Assembler (8051). Gruss und danke
R6, R7 = 5 digits (ASCII) ; bin16_ascii: mov a, r7 mov r3, #-1 + '0' _bcd1: inc r3 add a, #low(-10000) xch a, r6 addc a, #high(-10000) xch a, r6 jc _bcd1 mov r4, #10 + '0' _bcd2:
-
Thread
8 Bit nach 3x BCD umwandeln
Hallo, ich suche eine Möglichkeit ohne µC die Ausgabe eines 8 Bit Zählers (1,2,4,8,16... hier der 74HC590) nach 3x BCD ausgeben zu können, damit auf drei 7 Segment Anzeigen 0-255 angezeigt werden kann. Ein reiner BCD Counter zu kaskadieren reicht mir nicht aus, weil ich ja die reale Zählfolge der Ausgänge des 74HC590 zusätzlich brauche. Wie könnte man das am einfachsten realsieren? Im Internet habe ich leider nichts passendes dazu gefunden.
-
Thread
Binärzahl umwandeln
************************************************************************** ; 8Bit binär in packed BCD - wert in aa - ergebnis in aa ! is so cool man ! bin2bcd: clr temp ;clear result msd bBCD81: subi aa,10 ;input = input -10 brcs bBCD82 ;abort if carry set subi temp
6 (3bit), > also mit einer Anzeige kein Problem für mich. Das sollte sich problemlos mit einem BCD-Siebensegment-Decorder erschlagen lassen. Adrian schrieb im Beitrag #2473158: > Die zweite Zahl ist etwas größer (12bit) und die muss ich auch > umwandeln, möglichst ohne zu programmieren. Wenn
-
Thread
7 Segmentanzeige in Dezimal umwandeln Gesperrt
"NIXIE" Uhr bauen. Dazu müsste ich das 7-Segment-Signal des Uhrendisplays in ein Dezimalsignal umwandeln. Wie man von einem BCD-Signal zu einem Dezimalsignal kommt wäre mit einem 4028 möglich, nur wie komme ich von einem 7 Segment Signal zu einem BCD Code? Gibt es da Bausteine, so wie es umgekehrt
Segmenten der Uhr (wobei bei etlichen Displays schon intern Segmente zusammengeschaltet sind) dann Umwandeln in BCD-Code. Von da aus Weiterverarbeitung mit den (Latch)-Decoder-Treibern, die zu der Anzeige passen. Also der Schritt BCD noch dazwischen. Nicht direkt 1:10 wandeln. Jörg R. schrieb im Beitrag
-
Thread
Taschenrechner
zählen rjmp dual2bcd3 ;bis dual<10 dual2bcd4: swap r15 ;r15=zehner 0000 or r16,r15 ;r16<-Zehner Einer pop r15 ;Hilfsregister zurück subi r16,-$30 ;in ASCII umwandeln
zählen rjmp dual2bcd3 ;bis dual<10 subi R15, 0xd0 call lcd_output ; vorher R15 entsprechend umladen dual2bcd4: subi r16,0xd0 ;in ASCII umwandeln call lcd_output ; vorher
-
Thread
Hex zu Dez (BCD) in C
nicht "von hex in Dec umwandeln", Du möchstest Dezimal in (gepacktes) BCD konvertieren. https://en.wikipedia.org/wiki/Binary-coded_decimal#Packed_BCD Das geht so: [c] uint64_t toBcd(uint32_t decVal) { uint64_t bcdSum
32-Bit-BCD-Zahl (Wertebereich 0 - 99999999), deswegen uint64_t als Rückgabewert.
-
Thread
hex <-> dez
aber in welchem format die zahl jetzt dargestellt ist (in hex oder binär) ist in dem fall egal. bcd code ist eine gute idee. aber die kann ich eine hex oder binäre zahl mit dem 8051 befehlen in bcd umwandeln?
eigentlich möchte ich nur eine 8 bit große binärzahl in den bcd code umwandeln. und das ganze ohne externen IC sondern mit dem 8051 befehlen
-
Thread
8-Bit als Dezimalzahlen
dass sie die Zahlen von 0-256 auf 3 > 7-Segmentanzeigen darstellen? Wenn Du bereits ein 8-Bit BCD-Signal hast, kannst Du das natürlich auch direkt über z.B. 4543 anzeigen. Ein 8-Bit Binärsignal müsstest Du erst in ein (10 Bit)BCD-Signal umwandeln. Der einfachste Weg dazu ohne uP wäre ein doppelter
aber ähnlich viele Bauteile und Verdrahtung wie die alten 74185. Dasselbe geht auch rückwärts für BCD->Binär.
-
Thread
Hex Wert -> Dezimal an LCD ausgeben
pdf ;*************************************************************************** ;* ;* "bin2BCD16" - 16-bit Binary to BCD conversion ;* ;* This subroutine converts a 16-bit number (fbinH:fbinL) to a 5-digit ;* packed BCD number represented by 3 bytes (tBCD2:tBCD1:tBCD0). ;* MSD of the 5-digit
*********************************************** ;***** Subroutine Register Variables .equ AtBCD0 =13 ;address of tBCD0 .equ AtBCD2 =15 ;address of tBCD1 .def tBCD0 =r13 ;BCD value digits 1 and 0 .def tBCD1 =r14 ;BCD value digits 3 and 2 .def tBCD2 =r15 ;BCD value
-
Thread
char in integer
was macht ihr denn? Wenn ich das richtig verstehe hat er zwei bcd zahlen in einem Byte was spricht gegen uint8 bcd = 0b00010001; uint8 binaer = ((bcd>>8)*10) + (bcd&0xF)
ups, richtig wär: uint8 binaer = ((bcd>>4)*10) + (bcd&0xF)
-
Thread
Analoges Signal zu binär-code.
Bausteinen ist zu beachten, dass sie die > Spannung nicht als Binärzahl ausgeben, sondern entweder als BCD oder > direkte Segmentsignale. BCD und Segmentsignale /sind/ Binärzahlen.
Rolf M. schrieb im Beitrag #6292046: > BCD und Segmentsignale sind Binärzahlen. Bei Binärzahlen müsste das fünfte Bit eine Wertigkeit von dez16 haben. Das ist weder bei BCD noch bei Segmentsignalen der Fall.
-
Thread
Binär-->BCD in C
Ich habe eine unsigned char mit einer Zahl kleiner 99 und will sie in eine 2 stellige BCD Zahl umwandeln.
Yalu X. schrieb im Beitrag #3427233: > bcd = 3 * (((uint8_t)(zahl + 1) * 51) >> 8 & ~1) + zahl; Auch wenn ich es so mache muss ich zahl in eine unsigend int umwandeln damit es funktioniert: bcd = 3 * (((unsigned int)(zahl + 1) * 51) >>
-
Thread
8-Bit Binär zu 7-Segment
#3840866: > und diesen Wert will ich bei den 7-Segment anzeigen. Zeig ihn als Hexwert (00..FF) an. Umwandeln in BCD nur mit Gatterlogik ist eine Schnapsidee. Georg
Georg schrieb im Beitrag #3840872: > Umwandeln in BCD nur mit Gatterlogik > ist eine Schnapsidee. Warum den das? verständlich das es per Software besser geht mit "Shift and add 3 algorithmus". Analog sollte dies doch aus machbar sein
-
Thread
Hilfe - Umrechung 5 Byte! Array Dezimal => Hex. Gesperrt
Wahrscheinlichkeit deshalb, weil der Erfinder nich dran gedacht hat, dass das irgendwer mal in eine Zahl umwandeln will. Roger P. schrieb im Beitrag #7718584: > jedes Byte "geht" dezimal von 0-99 zu definieren. Weißt du inzwischen, was BCD ist? > Diese Nummer ist eben in 5 Byte abgelegt. Und nochmal
nichts weiter heist das du eine Zahl im Format "Packed BCD" (5 Byte/10 Stellen, Big-Endian) ins Binärformat umwandeln willst, (5 Byte/40 Bit,Big-Endian) Du muss mal schauen, dass Du die Fachbegriffe nicht vermischst, sonst versteht dich kein Mensch. Eine
-
Thread
Bin2bcd, Bcd2bin dringend nötig (c code)
bin-=100; } while(bin>=10) { bcds+=0x10; bin-=10; } bcds+=bin; return bcds; UARTprintf("BCD: %d\n", bcds); } [/c] Ist hier vielleicht ein Fehler drin.Danke.
gefunden gehabt, aber dies ist doch für dezimal zahlen geeignet, jedoch will ich doch eine binärzahl in bcd umwandeln, oder sollte ich erst eine binär in dezimal umwandeln und dann in bcd und umgekehrt. [c]void Convert_Int_Bcd ( unsigned long int Zahl) //7-stellig { unsigned long
-
Thread
Atmega128: Umwandeln von HEX in ASCII
R17, R16 = 5 digits (ASCII) ;cycle: 20 ... 170 ; bin16_ascii: ldi r20, 1- + '0' _bcd1: inc r20 subi r16, low(10000) ;-10000 sbci r17, high(10000) brcc _bcd1 ldi r19, 10 + '0' _bcd2: dec r19 subi r16, low(-1000) ;+1000 sbci r17, high(-1000) brcs _bcd2 ldi r18, -1 + '0' _bcd3: inc r18 subi r16, low(100) ;-100 sbci r17, high(100) brcc _bcd3 ldi r17, 10 + '0' _bcd4:
-
Thread
dezimal in 8-4-2-1 BCD
Programmiersprache C erst seit ca. 3 Tagen! Suche nun einen Code der mir eine Zahl von 0-9 in einen BCD Code umwandelt. Etwa so: 0 = 0000 1 = 0001 2 = 0010 Usw. Den BCD Code möchte ich auf z.B. PortB ausgeben. Wie funktioniert die Umwandlung und wie die Ausgabe? Vielen Dank für eure Hilfe
aber irgeneinmal kommt noch mehr dazu und ich bin somit flexibel. Um Pins zu sparen kommt die BCD ausgabe zum zuge. Habe ein ATTiny 461-20PU. (Zum üben habe ich noch ein AVR Butterfly Demoboard) Tasten entprellen: Würde auch ein Kondensator reichen?
-
Thread
Hex Werte in Datum umwandeln
Moin... Wie kann ich aus den 0x0A und 0x0F ein gültige Uhrzeit bilden? Eigentlich hätte ich lieber 10:15 Ich habe einen Zähler der mit diese Hex Werte übergibt. Im ASCII Format bekomme ich natürlich andere Zeichen.. Jemand ne Idee?
-
Thread
Schnelle 8-Bit Binär nach BCD für 8Bit-AVR
und da noch ein bisschen auf die Geschwindigkeit an. Wenn man dann plötzlich 1000000 Zahlen nach BCD umwandeln will, fällt's doch ins Gewicht ;)
Simon K. wrote: > Wenn man dann plötzlich 1000000 Zahlen nach BCD umwandeln will, fällt's > doch ins Gewicht ;) Nö, die CPU-Last ist ganz genau die gleiche (nämlich nicht erwähnenswert). Sie hängt nicht von der Anzahl Werte ab, sondern von dem Verhältnis der
-
Thread
8 BCD in 4 Bytes umwandeln
Hallo, suche für ein PIC18 Projekt folgende Routine (Microchip Assembler). Ich habe 8 BCD Stellen (jede von 0-9) in je einem Register. 1. Stelle = 1er, 2. Stelle = 10er, 3. Stelle = 100er usw. Ich möchte nun die Zahl, die sich daraus ergiebt, z.B. Dezimal 25 120 367 in ein 32 Bit Register schreiben, das auf 4 8 Bit Register aufgeteilt ist. Hat dafür jemand eine Lösung oder einen Denkansatz? viele Grüße
-
Thread
Division mit "krummen" 10
Allenfalls zu beginn weg in BCD rechnen ?
> Allenfalls zu beginn weg in BCD rechnen ? AVR's haben doch gar keine BCD Operationen.
-
Thread
Zeiteinstellung DS1307
BCD-Darstellung geht so: [c] stunde_bcd = (stunde_zehner << 4) + stunde_einer; // | statt + geht auch [/c] Dasselb für die Minuten usw. Eine Lib ist für so etwas triviales nicht notwendig.
- stunde_zehner * 10; // = 1 stunde_bcd = (stunde_zehner << 4) + stunde_einer; Jetzt nochs stunde_bcd in die RTC schreiben, fertig. [/c] Das ist doch nicht soooo schwer.....
-
Thread
Bitte um Hilfe bei DS1307 Problem
kann ich seconds ja nicht einfach >> uart_puts(); übergeben. Kann ich das nun in einen String umwandeln? > > [[FAQ]] gleich der erste Punkt Obwohl. Bei dir gehts viel einfacher. Genau das ist ja der springende Punkt, warum die Uhr überhaupt in BCD zählt. Eben weil man dann ganz trivial eine
Hallo, num[0] und num[1] enthält dann die Dezimalzahl, derer vorher in BCD repräsentierten Zahl. Somit enthält num[] einen C-String mit der BCD-Zahl als String.
-
Thread
7-Segmentanzeige mit TTL und Transistoren ansteuern
) so umformen, daß man sie mit NAND oder NOR Gattern implementieren kann. > Die Umwandlung von BCD auf Binär ist bereits erledigt. Hierfür habe ich > 5 mal den DM74LS00 und 4 mal den DM74LS10 verwendet. Was muß man von BCD auf Binär umwandeln? > Mein Problem ist nun die Ansteuerung der vier
Axel S. schrieb im Beitrag #5359804: > Was muß man von BCD auf Binär umwandeln? Das würde mich auch interessieren.
-
Thread
Datentypen Problem
ich vermute mal (nach Deiner Beschreibung, ohne den Baustein zu kennen), dass Dein DS1302 gepackten BCD-Code erwartet. Du musst also erst umwandeln (z.B. Division durch 10 und Modulo 10). Du solltest vielleicht auch mal die Doku zur sprintf-Funktion zu Rate ziehen. Du benutzt (vermutlich) ein falsches
Wichtig: Die Zahl ist immer das gleiche BITMUSTER eine andere Sache sind CODIERUNGEN z.B. BCD-Code GRAY-CODE etc.
-
Thread
bit in vectore umwandeln
Du willst die Zahlen 0..63 im Vektor (5 downto 0) in zwei BCD-Zahlen umrechnen. Das geht /nicht/ mit einem Mux. Hier habe ich Lösungen für die Aufgabe: http://www.lothar-miller.de/s9y/archives/33-Byte-nach-BCD.html Das ist zwar für einen 8-Bit Vektor, aber
zuerst danke miller ich will binär in hexa umwandeln zb 11111 ist 1F hexa 01010 ist 1A hexa mit deinem decoder kann ich ZB 11111 umwandeln ;die 1111 in enem F umwandeln Und 1 bleibt 01010 ,1010 in A und 0 bleibt mux brauche ich nicht um zu
-
Thread
HEX Zahlen über UART STM32
Peter II schrieb im Beitrag #5213005: > ok wenn es bcd ist, dann kann man es auch ganz einfach machen Schreibt man vor BCD auch "0x"?
auch durch häufigeres Probieren nicht besser. Die Uhr erwarte die Eingabe wohl doch nicht als BCD sondern als hex, i.e. du musst deine ASCII-Eingabe erst einmal in hex umwandeln, als "14" -> 0x0e
-
Thread
Eigenes "Datensystem" so anwendbar?
Bzgl. das ganze BCD: So wie ich gelesen habe gibt der DS1629 die Daten als BCD raus, weswegen ich sie so abspeichern würde (weniger Rechenzeit). Als BCD könnte ich sie auch wieder direkt über UART ausgeben. Meint
achso, wusste nicht, dass die Daten schon im BCD Format sind. Aber da du die warscheinlich irgendwann sowieso umwandeln musst, kannst du das auch vor dem Speichern machen. Wie groß ist denn dein Speicher? Wenn es eine 2GB-SD-Karte ist, sind die
-
Thread
TTL Schnittstelle
brauchst Du einen µC mit UART. Ablauf: - Daten (ASCII-String) über RX empfangen - ASCII-String umwandeln in einen Zahlenwert - Wert umrechnen - neuen Wert umwandeln in ASCII-String - ASCII-String Senden über TX Gruß Dietrich
Zahl konvertieren, wenn taster gedrückt multiplizieren - ansonsten einfach weitergeben, in ASCII umwandeln - Neuen datenstring über serielle Schnittstelle2 senden - und wieder zum Anfang rgds
-
Thread
3-Stellige BCD-Zahl nach Binär umwandeln
Hallo zusammen! Ich habe drei Kodier-Drehschalter, mit welchen ich jeweils Werte von 0 bis 9 einstellen kann. Damit möchte ich Zahlen im Dezimalsystem von 0 bis 999 eingeben. Die einzelnen Kodierschalter haben eine Ausgabe im BCD-System. D.h. ich bekomme insgesamt eine dreistellige BCD-Zahl. Wie kann ich diese mit einfachen Mitteln, mit Standard-TTL bzw. CMOS Bausteinen in eine Binärzahl umwandln? Grund dafür ist, dass ich einen Binärzähler jeweils bis zum eingestellten Wert hochzählen lassen will. Ich kann mir vorstellen, dass es fertige BCD->Binärdekoder als Baustein gibt, aber ich habe
-
Thread
Wie kann ich einen Dezimalwert auf´s LCD-Display bringen?
Hallo Sascha, da wirst du um etwas Rechnerei nicht rumkommen. Du muß das binäre Wort in BCD umwandeln. Schau mal da nach: http://www.fh-pforzheim.de/fb05/labore/mclt/pdf/AD_Wandlung.pdf ist ne gute Anleitung. Benutzt ich auch um eine AD - Kanal Auszuwertung zu machen und auf LCD darzustellen
"Du muß das binäre Wort in BCD umwandeln." Wie bitte ??? Las das mal lieber das sprintf() machen, dazu ist es doch schließlich da. Du must Dir bloß mal die Syntax zu Gemüte führen, d.h. was z.B. "%4u" bedeutet. Ich entwickle
-
Thread
Zählerztände vom mega32 auslesen lassen
{ if(MIN_EINER==zae1) zae1++; ??? . //hier muss ich die Zahlen in Ascii zeichen umwandeln wie?? printf("\n\r%2d:%2d"); } } } mfg
MinZehner = ( MINUTE_PORT & MINUTE_ZEHNER ); Minuten = 10 * MinZehner + MinEiner; ... Umwandeln nach ASCII ... Ausgeben per RS232 [/C] Für den Schritt "Umwandeln nach ASCII" schaust du dir das hier an http://www.mikrocontroller.net/articles/FAQ#Wie_kann_ich_Zahlen_auf_LCD.2FUART_ausgeben
-
Thread
speicherplatzsparend auf eeprom schreiben
Vielleicht genügt auch das BCD-Format?
>>Wenn du zwei Ziffern in ein Byte schreiben willst, dann nimm BCD Zahlen. BCD alleine reicht dann nicht, es muss dann packed-BCD sein, also eine Ziffer je Nibble. Jochen Müller
-
Thread
Spannung in Temperatur umwandeln
anzeigen. Ich bekomme einen Wert zwischen 0 und 5 Volt (steht für 0 bis 255° Celsius), muss diesen umwandeln und dann auf zwei 7-Segment Anzeigen darstellen. Die Ansteuerung für die Anzeigen erfolgt über 2 SN7446N ICs und funktioniert soweit. Wir scheitern momentan an der Umwandlung der Temperatur-Spannung
Hexdarstellung schwer zu organisieren ist. 3) bleibt nur noch die Frage wie Du 255 dastellen willst und den BCD Coder nach dem AD Wandler hinbringst. Mit binär zu BCD vielleicht mit SN 74184. Da wäre mein erster Ansatz. # LG Carsten
-
Thread
Wert in Frequenz umwandeln
natürlich proportional sein (1% Fehler) Oder wäre es besser den WERT am Port auszugeben und in einen BCD-Frequenz Wandler Chip zu speisen (gibt es sowas?) Danke und Grüße Sven
weil der Systemtakt nur max. 5Mhz ist. Ich bräuchte wohl ca. das 10fache.... Daher die Idee einen BCD - Frequenzumsetzer nachzuschalten? welcher 16 bit Eingang in 0- 65000 Hz umwandelt. Aber wer baut solche ICs?
-
Thread
MSP430F1612_RTC_Display
. Vermulich frißt aber deine LCD_Zahl binärcodierte Werte. Sie interpretiert die BCD-Daten also falsch.
Umwandlungsproblem handelt, hatte ich mir schon gedacht. ;-) Wie krieg ich es jetzt hin, dass mein LCD die BCD-Daten versteht? Ich muss sie sicherlich umwandeln, aber wie mach ich das am schlauesten? (möglichst in C) Ich find es auch unschön, dass er dann die Umwandlung jede Sekunde machen muss. Es wäre
-
Thread
C Programmieren, 10er und 1er getrennt speichern
Da kommt aber ganz schön oft "BCD" vor, in den Kommentaren ;-)
wirklich. y = bin2bcd(31); // 0x13 bzw 19 z = bcd2bin(0x26); // 0x16 bzw 22
-
Thread
Binär in ASCII
hier einen Assermbler-Code und dazu die Aufgabenstellung: Das UP übernimmt im Akku eine gepachte BCD-Zahl(2-stellig) und wandle daraus 2 ASCII-Zeichen. Niederwertige ASCII-Stelle in DPL --> höhere DPH Was ist eine "gepachte BCD-Zahl". Also eine BCD-Zahl ist eine Zahl in Binär von 0-9 in Dezimal.
wie komme ich erstmal von einer Binärzahl auf das ASCII-Zeichen? Die Binärzahl in eine BDC-Zahl umwandeln und dann mit 30hex addieren hab ich gelesen. Warum muss ich dann in meinem Programm 2mal UND verknüpfen mittels ANL? Warum das ganze 2mal? Da eine BCD-Zahl nur 4bit hat? Aber ich hab 16Bit, irgendwie
-
Thread
Hex to Dec -> C
. Sie sollte also bin_to_bcd oder decimal_to_bcd (oder eben wie üblich kurz bin2bcd) heißen, und zum Schluss müsste somit stehen "return bcd;"
Leo schrieb im Beitrag #7306121: > Und das macht ChatGPT bei BCD to Dez: > ... Die Funktion bcd_to_decimal kann optimiert werden zu [c] int bcd_to_decimal(int bcd) { return bcd > 0 ? bcd : 0; } [/c] Was war denn diesbezüglich deine Anfrage an ChatGPT
-
Thread
Daten>32Bit auf AVR
günstigsten wäre vermutlich, mit Zahlen von 0-99 in einem Byte zu rechnen. Die kann man anschliessend gut in BCD umwandeln. Sollte das Ergebnis einer Addition =>100 sein, einfach 100 abziehen und einen Übertrag bilden. Wären 22000 Takte für einen Additionsgang. Hier würde das Ergebnis schon nach 11s zur Verfügung
wäre vermutlich, mit Zahlen von 0-99 in einem Byte zu > rechnen. Die kann man anschliessend gut in BCD umwandeln. Sollte das > Ergebnis einer Addition =>100 sein, einfach 100 abziehen und einen > Übertrag bilden. Sehr guter Vorschlag! Gegenüber meinem "String" Vorschlag bekommt man damit doppelt
-
Thread
effiziente Division durch 10
, -1 + '0' _bcd3: inc r18 subi r16, low(100) sbci r17, high(100) brcc _bcd3 ldi r17, 10 + '0' _bcd4: dec r17 subi r16, -10 brcs _bcd4 subi r16, -'0' ret [/avrasm]
Karl Heinz schrieb im Beitrag #3513333: > Ein DAA ist kein allgemeiner Hex-BCD Konverter. Für den kommt man um > eine Division durch 10 nicht rum. Doch. Man kann Binär nach BCD umwandeln ohne eine einzige Division. Stichwort: Dreierkorrektur XL
-
Thread
Dezimal in binär umwandeln
Dann kriege ich 5,5 raus und muss das anschliessend ins binäre umwandeln? 101,101?
unterschiedliche Möglichkeiten Die am häufigsten genutzte ist IEEE 754. Bevor es sich durchsetzte, war BCD-Code verbreitet. Dann gibt es noch Festkommazahlen. Du nimmst das Zweierkomplement von -2375 und dein Programm weiß, dass es das Komma um 3 Stellen verschieben muss. Und natürlich kannst du auch deine
-
Thread
10bit binär -> BCD
Hallo! Manchmal möchte man eine 10bittige Zahl ins BCD format umwandeln (z.B. vom AD Wandler). hier mein code (musste leider ins statement, weil upload nicht geht). Ich hab in Englisch kommentiert... aber das is ja kein problem. .include "../avr/includes
made a routine ; if we use indirect register adressing (0x00-0x1f) .MACRO addtobcd ldi mpr,@1 add bcd@0,mpr mov mpr,bcd@0 ;if bcd<10 then break cpi mpr,10 brlo lt10_m mov mpr,bcd@0 ;bcd -= 10 subi mpr,10 mov bcd@0,mpr inc bcd@00 lt10_m: .ENDMACRO c10bit2bcd: mov mpr,numberL
-
Thread
Algorithmus für Zeit zw 2 Zeiten
Zeit (die ich über einem RTC >geschickt bekomme) zwischen 2 anderen Zeiten liegt. Liefert die RTC BCD Werte? Dann kannst du die Zeit in z.B. zwei 32 Bit Variablen schieben. Damit reduzieren sich die Vergleiche erheblich.
und wie wandle ich dann die Monate in Sekunden um???? Sollte ich direkt die Jahre in Sekunden umwandeln und dann den Monat mit select case einzeln in 12 abfragen in Sekunden umwandeln??? Sorry jungs, aber mir fällt dazu wieder keine bessere Idee ein....
-
Thread
Binär zu BCD / Binär zu 7 Segment Converter.
Mit drei 64k x 8 EPROMs kann man 16 Bit zu 5 BCD-Stellen (0..65535) dekodieren.
Wie Klaus sagte: gleich in BCD rechnen. Hier etwas Theorie: http://www.6502.org/users/dieter/bcd/bcd_0.htm http://www.6502.org/users/dieter/bcd2/bcd2_0.htm
-
Thread
PIC Assembler Division 8Bit
-------------------- BIN2BCD ; BIN zu BCD (00..99) clrf BCD_high BIN2BCD_1 movlw 0x0A ; BCD_high subwf BIN,W ; BIN - 10 btfss STATUS,C ;
funktionieren. Wenn du aber immer nur durch 10 dividieren willst, kannst du den Dividend auch in BCD umwandeln und dann einen Rechtsshift machen und das Ergebnis wieder in eine Binärzahl zurückwandeln. Der Vorteil wäre, das du den Rest dann auch gleich mit einsammeln kannst und keinen Rechenfehler