Hallo, ich möchte einen kleinen Hardware Taschenrechner (später evtl. auch mini CPU) mit einem ATmega32 bauen. Die Programmiersprache soll C sein! Hat jemand eine Idee wie ich einen Port des ATmegas in 2 Byte jeweils 4 Bit aufteilen kann und evtl. diese zusammenrechnen und an einem anderen Port in 4 Bit wieder ausgeben? Wenn es nicht anders geht, müsste ich die Zahlen zuerst in Dezimal umwandeln, rechnen und wieder in Binär umwandeln! Mit freundlichen Grüßen Robin Wenert
Gast
#2705797
Dezimal und Binär sind nur 2 verschiedene Darstellungen für die gleiche Zahl. Erklär mal genauer was du vorhast.
Also ich möchte einen PORT als 2 BCD eingänge verwenden
(z.B. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6
PORTC.7
8 4 2 1 8 4 2
1
___________________________
__________________________
INPUT 1 INPUT 2
INPUT 1 + INPUT 2 = OUTPUT
z.B. PORTD.0 PORTD.1 PORTD.2 PORTD.3
8 4 2 1
________________________
OUTPUT
Beispiel: 8 4 2 1
INPUT 1: 0 1 0 1
INPUT 2: 0 0 1 0
++++++++
OUTPUT : 0 1 1 1
Gast
#2705813
out = (in >>4) + (in & 0xF )
OK ich weiß zwar nicht wie das funktioniert aber ich werde es testen! Wie kann ich die IN auf die Eingänge legen? Vielen Dank schonmal!!!
Hier ist mein Basisprogramm!
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Gast
#2705836
Robin Wenert schrieb: > OK ich weiß zwar nicht wie das funktioniert Dann solltest du dich dringend mit den Grundlagen von C und µPs beschäftigen...
Ja bin gerade erst von Bascom auf C umgestiegen! Aber ohne µc programmiere ich Java!
Gast
#2705848
Dann lerne erst C am PC und beschäftige dich dann mit µPs die in C programmiert werden wollen. So wird das jedenfalls nichts.
Gast
#2705852
Robin Wenert schrieb: > Aber ohne µc programmiere ich Java! in JAVA sieht es doch genauso aus.
Robin Wenert schrieb: > (z.B. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6 > PORTC.7 > 8 4 2 1 8 4 2 > 1 ich kenne eher die "gespiegelte" Schreibweise, d.h. das niederwertigste Bit ist ganz rechts (PORTC.0), und das höchstwertigste ist ganz links (PortC.7) Ist das in Bascom "anders rum"?
Gast
#2705880
Wegstaben Verbuchsler schrieb: > Robin Wenert schrieb: >> (z.B. PORTC.0 PORTC.1 PORTC.2 PORTC.3 PORTC.4 PORTC.5 PORTC.6 >> PORTC.7 >> 8 4 2 1 8 4 2 >> 1 > > ich kenne eher die "gespiegelte" Schreibweise, d.h. das niederwertigste > Bit ist ganz rechts (PORTC.0), und das höchstwertigste ist ganz links > (PortC.7) > > Ist das in Bascom "anders rum"? Nein. Der TS kennt sich offensichtlich nicht nur mit "C" nicht aus.
Gast
#2705954
Robin Wenert schrieb: > ich möchte einen kleinen Hardware Taschenrechner (später evtl. auch mini > CPU) mit einem ATmega32 bauen. > > Die Programmiersprache soll C sein! Ah, ja. Du willst einen kleinen Taschenrechner basteln, hast aber bislang keinerlei Plan, wie man sowas macht, aber du weißt schon felsenfest, daß es mit einem ATmega32 und in C sein soll. Klasse, solche genialen Entwickler braucht das Land. Mein Rat: Lerne erstmal, wie man Tasten richtig abfragt, dann wie man ein Display ansteuert und dann, was man an Datenformaten braucht, um die bei Taschenrechnern übliche Stellenanzahl von 8..10 gültigen Stellen nebst Exponent im Bereich -99 bis +99 bieten zu können. Und dann sieh dich nach einem Controller um, dessen Toolchain die benötigten Datenformate realisieren kann. Bei vielen Implementationen wird nämlich stillschweigend single anstelle double verwendet und man wundert sich, daß ab der 6. Ziffer nur noch Müll herauskommt. SO! W.S.
OK! MEIN BCD-Code stimmt ganz sicher! Ich hab noch eine Frage:
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Würde das so funktionieren?
Gast
#2709905
>* 10
???
Gast
#2709925
Soviel ich weiß, gibt es in C keinen Config-Befehl. Mach es doch erst mal in Bascom, bevor Du auf C umsteigst. Ich denke, daß es einfacher ist, dann einen funktionierenden Algorithmus in die neue Sprache zu übersetzen, als 2 Stolpersteine zu haben: Kein Algorithmus und keine Kenntnis der Syntax der neuen Sprache. MfG Paul
Ja Sorry, ich habe vergessen zu schreiben, dass ich mit Bascom weitermache!
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.