Hi, habe bisher den PIC16F84 in Assembler programmiert und wollte jetzt auf den PIC16F88 umsteigen. Ein kleines Programm test88.asm ist im Anhang beigefügt (blinker an portb). Das Programm enthält auch die Fuses-Einstellungen. Probleme: 1. Das Programm läuft, aber anscheinenend mit internem Oszillator Der Takt lässt sich mit externen RC-Netzwerk nicht beeinflussen. 2. Es blinken nur die LEDs Nr.0 bis 5 am portb, LEDs Nr.6 und 7 sind dauernd an (=1) Vermute dass irgendwas mit der Initialisierung nicht stimmt. Programmierung erfolgte mit ICprog und JDM-Programmer mit geschaltetem Vcc. Kann mir jemand helfen? reinhardt
Hallo.. Also das mit den Pins RB6 und RB7 könnnte daran liegen, dass diese beim PIC16F88 als analoge Eingänge fungieren(siehe Datenblatt Seite 11). Und mir kommt vor, dass du nirgends den ADC abgeschalten hast, aber ich sag es gleich... ich kann kein ASM ;-) Warum das mit dem RC-Glied nicht funktioniert, kann ich dir leider nicht sagen, da ich es nie benutze. mfg schoasch
Hi, kenne das Problem, ich verwende den CC5X Compiler und habe Projekte, die auf dem PIC16F84 problemlos laufen auf dem 16F88 nicht zum laufen bekommen. Ich habe herausgefunden, dass man zuerst die Eingänge von analog auf digital umschalten muss, dann funktioniert der Pic16f88 auch genauso wie der 16f84. In CC5X geht das folgendermaßen: man setzt einfach das ANSEL Register auf 0 und dieses möglichst gleich ganz oben in der Main. Ausser man möchte den AD verwenden.. ANSEL=0; das sollte in Assembler kein Problem darstellen eine 0 in das ANSEL Register zu schieben. Sebastian Miesner
Hallo Sebastian, vielen Dank für deinen Tipp. Hatte aber die ANSEL Register schon richtig eingestellt. Bei mir war das Problem die Programmierschaltung: Beim ..f88 muss die Betriebsspannung +5V beim Programmiervorgang geschaltet werden, beim ..f84 jedoch nicht. Nachdem ich die Programmierschaltung umgebaut habe funktioniert alles bestens. Viele Grüße R.
Hallo, ich bin auch ein Anfänger und will gerade ein Programm vom PIC16F84 auf den 16F88 "umschreiben" und habe wohl auch das Problem mit dem ANSEL=0. wie setze ich das aber auf 0? Im Hauptprogramm einfach ANSEL=0; ? ich verwende CC5x als Compiler. THX Sebastian
Hi Programmierst du in C oder auch ASM? In C wärs
1 | ANSEL=0; |
Und in ASM weis ich es gerade nicht. Da müsstest du wohl zuerst 0 ins W-Register schreiben und dann ins ANSEL-Register verschieben/kopieren. mfg SChoasch
Bratwurst wrote: > genau: > > movlw 0x00 > movwf ANSEL Wieso einfach, wenn es auch kompliziert geht: clrf ANSEL Gruss Severino
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.