/* Der kommt irgendwie mit den Vergleichen nicht kla.. und nur Gott weiß warum.. Am Ende soll hier ein DUAL -> HEX umwandler für die Zahlen 1-16 einstehen, Wenn z.B die die Zahl 15 gespeichert ist, dann hat ports[0] den WErt 1 und ports[1] den Wert 5 */ c = toupper(cbf_get(rx_buf)); ports[0]=c; c = toupper(cbf_get(rx_buf)); ports[1]=c; if (ports[0] >='0' && ports[0] <='1' && ports[1] >='0' && ports[1] <='F') { cbf_put(cmd_buf, 'I'); cbf_put(cmd_buf, 'S'); cbf_put(cmd_buf, myadress ); cbf_put(cmd_buf, 0x00); cbf_init(rx_buf); cbf_put(cmd_buf, 0x01); cbf_put(cmd_buf, 'S'); cbf_put(cmd_buf, 0x01); cbf_put(cmd_buf, 'C'); cbf_put(tx_buf, 'S'); cbf_put(tx_buf, 'C'); cbf_put(tx_buf, ' '); } if (ports[0]==0) { cbf_put(rx_buf, ports[0]); cbf_put(rx_buf, ports[1]); } else if(ports[0] == '1' && ports[1] == '0') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'A');} else if(ports[0] == '1' && ports[1] == '1') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'B');} else if(ports[0] == '1' && ports[1] == '2') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'C');} else if(ports[0] == '1' && ports[1] == '3') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'D');} else if(ports[0] == '1' && ports[1] == '4') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'E');} else if(ports[0] == '1' && ports[1] == '5') {cbf_put(rx_buf, '0'); cbf_put(rx_buf, 'F');} else if(ports[0] == '1' && ports[1] == '6') {cbf_put(rx_buf, '1'); cbf_put(rx_buf, '0');} else {return parse_error(tx_buf, '?', PSTR("Y")); }
a) Was ist jetzt das Problem, und was ist die Frage? b) Sourcecode entweder mit
1 | [c] |
2 | [/c] |
formatieren, oder als .c-Datei anhängen. Ohne das kann das kaum einer lesen. Oliver
Patrick schrieb: > /* > Der kommt irgendwie mit den Vergleichen nicht kla.. und nur Gott weiß > warum.. Und der sagt nix. Genauso, wie deine Fehlerbeschreibung nix sagt. > Wenn z.B die die Zahl 15 gespeichert ist, dann hat > ports[0] den WErt 1 und ports[1] den Wert 5 > */ > > c = toupper(cbf_get(rx_buf)); > ports[0]=c; > > c = toupper(cbf_get(rx_buf)); > ports[1]=c; > > if (ports[0] >='0' && ports[0] <='1' && ports[1] >='0' && ports[1] > <='F') wo sind denn hier Zahlen im Spiel? An dieser Stelle handelt das Programm immer noch von Zeichen. Und Zeichen wie '0', '1', ... '9', 'A', 'F' aber auch '+', '#', '(' sind einfach nur Zeichen. Jedes Zeichen hat einen Code und dieser Code ist in ports[0] gespeichert. Aber: Der Code sagt nicht unbedingt etwas über die Reihenfolge der Zeichen, egal ob aufsteigend oder absteigend aus! C gibt dir zwar die Garantie, dass die Zeichen '0' bis '9' codemäsig gesehen eine Reihe bilden, d.h. das das Zeichen '3' unmittelbar auf das Zeichen '2' folgt, aber C sagt nichts darüber aus, ob '5' jetzt beispielsweise einen größeren oder einen kleineren Code als 'W' hat, bzw. überhaupt ob der Code von 'W' größer oder kleiner als zb der Code von 'V' ist.
http://de.wikipedia.org/wiki/Zahlbasiswechsel Gibt aber noch weitere schöne Formeln dafür. Ist einfacher als Zeichen für Zeichen. Arbeite mit Zahlen nd nicht mit Strings!
Einsprung mit der Zahl (0...19) in Variable EINER Ausgang: Zehnerstelle in ZEHNER, Einerstelle in EINER CONVRT MOVLW 0 MOVWF ZEHNER DO10 MOVLW d´10´ SUBWF EINER, W BNC END MOVWF EINER INCF ZEHNER END Gruss Michael
Michael Roek schrieb: > CONVRT MOVLW 0 > MOVWF ZEHNER > DO10 MOVLW d´10´ > SUBWF EINER, W > BNC END > MOVWF EINER > INCF ZEHNER > END Das ist keine gültige C-Syntax. Damit kann also keiner was anfangen. Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.