Forum: Mikrocontroller und Digitale Elektronik PIC16F88 Einsteiger Problem


von Reinhardt Weber (Gast)


Angehängte Dateien:

Lesenswert?

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

von Schoaschi (Gast)


Lesenswert?

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

von Sebastian Miesner (Gast)


Lesenswert?

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

von Reinhardt Weber (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

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

von Schoaschi (Gast)


Lesenswert?

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

von Bratwurst (Gast)


Lesenswert?

genau:

movlw 0x00
movwf ANSEL

von Severino R. (severino)


Lesenswert?

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