Forum: Mikrocontroller und Digitale Elektronik Assembler und PIC16F887 anfänger Problem


von Alexander K. (alexanderk)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe angefangen mit Assembler herumexperimentieren da ich das für 
meine Abschlußprüfung brauchen werde.

Ich habe schon verschiedene befehle versucht, es kommt das gleiche raus.
Beim einschalten soll eine LED leuchten am RA1, das macht sie nur wenn 
man mit dem Finger den Pin berührt dann fängt sie an zu leuchten 
ansonsten tut sich nichts. Sie geht auch an wenn man mit dem Spitze vom 
Multimeter dran geht, danach leuchtet sie bis man die Spannung nicht 
unterbricht.
Das ist doch nicht normal oder ? ich habe auch schon anderen Port 
versucht, wenn man die Pin´s 36,37,38 berührt geht sie aus.
Kling komisch, aber was kann das sein ?

Kann mir auch jemand ein Rat geben wo man die interne Frequenz 
einstellen kann, wenn ich richtig verstannden habe kann man ja von 8 MHz 
to 31 kHz einstellen mit bits:

IRCF<2:0>: Internal Oscillator Frequency Select bits
111 = 8 MHz
110 = 4 MHz (default)
101 = 2 MHz
100 = 1 MHz
011 = 500 kHz
010 = 250 kHz
001 = 125 kHz
000 = 31 kHz (LFINTOSC)

Wo gibt man diese bits den ein ?




    __CONFIG    _CONFIG1, _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & 
_CPD_OFF & _CP_OFF & _MCLRE_ON & _PWRTE_ON & _WDT_OFF & 
_INTRC_OSC_NOCLKOUT
    __CONFIG    _CONFIG2, _WRT_OFF & _BOR21V


RESET_VECTOR    CODE    0x0000     ; processor reset vector
    nop
    goto        start              ; go to beginning of program

;**********************************************************************
;                                                                     *
;   Main                                                              *
;**********************************************************************

start
  BANKSEL   PORTA     ;
  CLRF     PORTA     ;Init PORTA
  BANKSEL   ANSEL     ;
  CLRF     ANSEL     ;digital I/O
  BCF     STATUS,RP1   ;Bank 1
  BANKSEL   TRISA     ;
  MOVWF     TRISA     ;as outputs
  bcf    STATUS,RP0
  bsf    PORTA,1



      END                       ; directive 'end of program'


Ich würde ihnen dankbar sein  wenn jemand Zeit hätte und mir helfen 
könnte.

von Dieter W. (dds5)


Lesenswert?

>  MOVWF     TRISA     ;as outputs

Das wird (wenn überhaupt) nur zufällig das richtige Ergebnis bringen, 
nämlich dann, wenn im W-Register der Wert 0 steht.

Besser funktioniert an dieser Stelle
CLRF TRISA

von Alexander K. (alexanderk)


Lesenswert?

danke, die LED geht jetzt fast immer von alleine an und flimmert nicht, 
aber auch nicht immer, man hat so ein Gefühl das es ein Schupser fehlt 
das die anfängt an zu leuchten.

von Alexander K. (alexanderk)


Lesenswert?

Wenn man immer den Finger am LED Beinchen plus hält leuchtet die LED 
sofort beim einschalten, ansonsten kommt das mit Zögerung oder überhaupt 
nicht.
MCLR habe ich über 1k Ohm an VDD dran.

von Holger W. (holgerw)


Lesenswert?

Nach dem Befehl   bsf    PORTA,1  rennt der PIC weiter ins Leere, du 
musst ihm sagen das er stehenbleiben soll, also ein goto auf sich 
selbst:

marke:  goto marke

von Alexander K. (alexanderk)


Lesenswert?

am ende kommt ein fehler " 67 : Symbol not previously defined (marke)"

start
  BANKSEL   PORTA     ;
  CLRF     PORTA     ;Init PORTA
  BANKSEL   ANSEL     ;
  CLRF     ANSEL     ;digital I/O
  BCF     STATUS,RP1   ;Bank 1
  BANKSEL   TRISA     ;
  CLRF     TRISA     ;as outputs
  bcf    STATUS,RP0
  bsf    PORTA,1
  goto    marke


      END                       ; directive 'end of program'

von John B. (johnbauer)


Lesenswert?

Alexander K. schrieb:
> IRCF<2:0>: Internal Oscillator Frequency Select bits
> 111 = 8 MHz
> 110 = 4 MHz (default)
> 101 = 2 MHz
> 100 = 1 MHz
> 011 = 500 kHz
> 010 = 250 kHz
> 001 = 125 kHz
> 000 = 31 kHz (LFINTOSC)
>
> Wo gibt man diese bits den ein ?

Im Register OSCCON (bit6-4).


Alexander K. schrieb:
> goto    marke

marke   goto marke

von perlbastel (Gast)


Lesenswert?

Und einmal Bildformate bitte.

von Alexander K. (alexanderk)


Lesenswert?

Werde ich nächstes mal beachten, jetzt kann ich nicht mehr ändern.

Großes dank jetzt leuchtet sie immer auf, auch wenn es manchmal immer 
noch mit Verzögerung.

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.