Forum: Mikrocontroller und Digitale Elektronik sdcc und at89s8252 rotiert bits falsch


von Tim (Gast)


Lesenswert?

Hallo

ich versuche zum ersten mal C anstelle von ASM zu benutzen, und da ich
Linuxer bin muss es eben sdcc sein. Ich will nun ein Bit endlos durch
meinen Port laufen lassen. Unter Asm macht man das mit RL oder RR, in
sdcc schreibt man das so: i=((i<<1)|(i>>7))
Der sdcc compiliert ja nicht nur, sondern macht vorher eine .asm file,
in der der Assemblercode drin steht. Dort steht auch richtigerweise rr
a;
Nun lade ich aber die .ihx in meinen 8051er Simulator, der meckert dann
erstmal ueber einen checksum error und wenn ich mir das Prog dann dort
anschaue steht da kein RR, sondern ein RRC. Macht nun der sdcc und oder
sein Assembler Murks oder der Simulator? Wieso kommen da .ihx raus, und
keine .hex? Ist das ein Unterschied oder ist einfach der Name
unterschiedlich. Ich rufe einfach sedcc bla.c auf, keine weiteren
Optionen. Dann muesste er doch ein fuer mein 89s8252 passendes Hexfile
erstellen, oder?


TIM

von Matthias (Gast)


Lesenswert?

Hi

der sdcc hatte, als ich mit ihm gearbeitet habe, die Angewohnheit sehr
merkwürdige HEX-Dateien (mit der Endung ihx und unterschiedlichsten
Zeilenlängen) zu erstellen. Evtl. macht das deinem Simulator Probleme.
Beim sdcc sollte das tool packihx dabei sein welches aus dem
durcheinandergewürfelten ihx ein ordentliches hex macht.

i=((i<<1)|(i>>7)) hat bei mir aber immer funktioniert.

Matthias

von Tim (Gast)


Lesenswert?

hoert sich ja nach nem passenden Tipp an, nur passiert nach einem
packihx bla.ihx nichts. Ich habe danach keine bla.hex und an der
bla.ihx hat sich (laut checksum) nichts geaendert, auch wenn packihx
meine
:040000000200823246
:01000B0032C2
:0100130032BA
:01001B0032B2
:0100230032AA
:01002B0032A2
:1000820075810712007EE5826003020033020033AD
:1000330012003880FE7A0175800075900075B05A01
:1000430075A0008AA0EA03FAC00212006AD002C0B7
:100053000212006AD002C00212006AD002C0021269
:10006300006AD00280DD22758901D28CAA8CC3EA92
:0F007300958C5004AA8C80F6C28C2275820022D4
:00000001FF
packihx: read 22 lines, wrote 13: OK.

Tim

von Matthias (Gast)


Lesenswert?

Hi

dann ist an dem HEX-File eben nichts mehr zu packen. Du kannst aber mal
versuchen mit hex2bin und bin2hex ein komplett neues HEX-File zu
erstellen.

Diese Tools gibt es hier http://www.keil.com/download/list/utility.htm
für Windows. Für Linux findet sich aber bestimmt auch was.

Oder versuch einfach mal:

:1000000002008232FFFFFFFFFFFFFF32FFFFFFFF13
:10001000FFFFFF32FFFFFFFFFFFFFF32FFFFFFFF8A
:10002000FFFFFF32FFFFFFFFFFFFFF32FFFFFFFF7A
:10003000FFFFFF12003880FE7A0175800075900086
:1000400075B05A75A0008AA0EA03FAC00212006ACD
:10005000D002C00212006AD002C00212006AD002AE
:10006000C00212006AD00280DD22758901D28CAAFA
:100070008CC3EA958C5004AA8C80F6C28C227582BF
:10008000002275810712007EE582600302003302C0
:0200900000333B
:00000001FF

Matthias

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
Noch kein Account? Hier anmelden.