Hallo Leute! Ich habe in meiner Firma ein projekt mit einem PIC16C71 geerbt. Der ursprüngliche Entwickler ist schon vor Jahren verschwunden, Quellen sind nicht auffindbar. Das ganze wurde über einen längeren zeitraum von der Produktion einfach mit der Hex datei immer wieder dupliziert. Nun soll etwas geändert werden. Ich habe das ganze über einen Disassembler gejagt und dabei festgestellt dass der Entwickler unbekannte Opcodes verwendet. Und zwar 0x0066 (wird gleich nach dem Reset ausgeführt) und 0x0062 sowie 0x0065. Kann mir jemand sagen was das für Befehle sind? MfG
zp5ui schrieb: > und dabei festgestellt dass der > Entwickler unbekannte Opcodes verwendet. Du hast aber einen merkwürdigen Disassembler. MPLAB liefert "TRIS + Register" oder "OPTION" bei den Opcodes. Gruß Anja
Hallo! Das kann so ganz nicht stimmen. Option ist ein Register und kein Mnemonic, genauso TRIS. Das gabe es bei alten PIC 16C5X. Da musste aber das W-Register entsprechend geladen sein. Die 0x062 ist der absolut erste Befehl nach Reset.
Komisch, im Datenblatt steht das aber anders. Die Befehle werden noch unterstützt, man solle sie aber bitteschön nicht mehr benutzen. Wenn man so ein Projekt bekommt, bitte erstmal das Datenblatt runterladen und mindestens eine Nacht unters Kopfkissen legen....
> Die Befehle werden noch unterstützt, man solle sie aber bitteschön nicht > mehr benutzen. Lustigerweise fehlt in aktuellen Datenblaettern (z.b. 16F1508/9) dieser Hinweis wieder und OPTION und TRIS sind ganz normal gelistet.
Der 16C71 hat einen 14-Bit Befehlssatz und bei dem gibt es mit der Kombination 00 0000 011x xxxx genau 2 Befehle: 0x0064 = 00 0000 0110 0100 = CLRWDT 0x0063 = 00 0000 0100 0011 = SLEEP @TO: Ich kenne deinen Disassembler nicht, aber bist du dir sicher das der Disassembler auf den 14-Bit-Befehlssatz gestellt ist und nicht auf den 12-Bit Befehlssatz? Denn beim 12-Bit-Befehlssatz ist 0000 011x xxxx der CLRF Befehl und die 3 "illegalen" Opcodes sind dann 0x062 = 0000 0110 0010 = CLRF PCL 0x065 = 0000 0110 0101 = CLRF OSCCAL 0x066 = 0000 0110 0110 = CLRF GPIO ...wobei CLRF OSCCAL nicht unbedingt Sinn machen würde....
62 := OPTION Load OPTION_REG with W 65 := TRISA Load TRISA with W 66 := TRISB Load TRISB with W
Stimmt! Nur tauchen die in meiner Version des 16C71 Datasheet (DS30272A-page 70) in der Tabelle 9.2 mit dem Instruction set nicht auf....erst bei der Beschreibung von OPTION und TRIS kommt der Hinweis und dort habe ich nicht mehr nachgesehen ;-)
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.