Forum: Mikrocontroller und Digitale Elektronik Hilfe Ports lassen sich nicht beschalten


von Christian T. (Firma: Titan Entertainment) (dc941)


Lesenswert?

Ich bin dankbar für jede Hilfe. Ich habe ein einfaches Programm fürn 
16F887 geschrieben aber PORTA und PORTB lassen sich nicht beschalten. 
Egal wo ich ein High-Pegel anlege es funktioniert nicht selbst im 
Simulationsmodus von MPLap.

start:
    BANKSEL  ANSELH
    CLRF     ANSELH
    BANKSEL  ANSEL
    CLRF     ANSEL
    BANKSEL  PORTA
    clrf     PORTA
    BANKSEL  PORTB
    clrf     PORTB
    BANKSEL  PORTC
    clrf     PORTC

    bsf  STATUS,RP0

    movlw  b'01110000'
    movwf  OSCCON

    movlw  B'11111111'
    movwf  TRISA
    movlw  B'11111111'
    movwf  TRISB
    movlw  B'00000000'
    movwf  TRISC

    clrf  PORTA
    clrf  PORTB
    clrf  PORTC

    bcf  STATUS,RP0

main:     btfsc  PORTA,0
          goto  ziffer_0
          btfsc  PORTA,1
          goto  ziffer_1
          btfsc   PORTA,2
          goto  ziffer_2
          btfsc   PORTA,3
          goto  ziffer_3
          btfsc  PORTA,4
          goto  ziffer_4
          btfsc   PORTA,5
          goto  ziffer_5
          btfsc   PORTA,6
          goto   ziffer_6
          btfsc   PORTA,7
          goto  ziffer_7
          btfsc   PORTB,0
          goto  ziffer_8
          btfsc  PORTB,1
          goto  ziffer_9

    goto  main


; 
------------------------------------------------------------------------

ziffer_0:          movlw  b'00011111'
      movwf  PORTC
      call   delay
      clrf   PORTC
      movlw  b'00101001'
      movwf  PORTC
      call   delay
      clrf   PORTC
      movlw  b'01001001'
      movwf  PORTC
      call   delay
      clrf   PORTC
      movlw  b'10001111'
      movwf  PORTC
      call   delay
      clrf   PORTC
      btfsc  PORTB,7
      goto   main
      goto   ziffer_0

von Detlef K. (adenin)


Lesenswert?

Fehlt vielleicht irgentwo BANKSEL ?
1
    movlw  B'11111111'
2
    movwf  TRISA
3
    movlw  B'11111111'
4
    movwf  TRISB
5
    movlw  B'00000000'
6
    movwf  TRISC
7
8
    clrf  PORTA
9
    clrf  PORTB
10
    clrf  PORTC

von Ottmar K. (wil1)


Lesenswert?

Hallo Christian,

Du hast es weniger schwer, wenn Du Dich an die Initialisierungsroutinen 
hältst welche im Datenblatt vorgegeben sind. Schau mal dort: "EXAMPLE 
4-1: INITIALIZING PORTA"

Register OSCCON ist beim 16F877 nicht vorhanden!
Du solltes auch einfachen Code kommentieren!


mfG Ottmar

von Detlef K. (adenin)


Lesenswert?

Ottmar K. schrieb:

> Register OSCCON ist beim 16F877 nicht vorhanden!
>
> mfG Ottmar

Kann ja sein.
Hier geht es aber um einen 16F887 ;)

von Ottmar K. (wil1)


Lesenswert?

sorry..
typischer Fall von Betriebsblindheit :-)
mfG Ottmar

von DC941 (Gast)


Lesenswert?

Vielen Dank Jungs für die Hilfen und Anregungen (bin halt ein noob) aber 
ich hab dann doch das Problem gelöst. Es fehlt lediglich die Zeile. bcf 
STATUS,RP0  ; Registerbank 0

Ich finde es super wie schnell man mir hier helfen wollte. Klasse macht 
weiter so. Es gibt viele "Noch"-noobs da draußen die das ändern wolln.
Danke

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.