Frage zu Assembler

Gast #2175781
Lesenswert?

;project5
;----------------------------------------------------------------------- 
-----
list        p=16f84a             ; processor pic16f84a
#include    <p16f84a.inc>         ; verwendet definition
;----------------------------------------------------------------------- 
-----
__CONFIG  _CP_OFF&_PWRTE_ON&_WDT_OFF&_RC_OSC ; voreinstellungen
;----------------------------------------------------------------------- 
-----
      org      0x00             ; reset adresse 00(hex)
      goto    main             ; sprung zu main
;----------------------------------------------------------------------- 
-----

main
      bsf      STATUS,RP0           ; schaltet auf bank1
      bcf      TRISB,0             ; setzt RB0 auf out
      bcf      TRISB,1             ; setzt RB1 auf out
      bcf      TRISB,2             ; setzt RB2 auf out
      bcf      TRISB,3             ; setzt RB3 auf out
      bcf      TRISB,4             ; setzt RB4 auf out
      bcf      TRISB,5             ; setzt RB5 auf out
      bcf      TRISB,6               ; setzt RB6 auf out
      bcf      TRISB,7             ; setzt RB7 auf out
      bcf      STATUS,RP0           ; schaltet zurück auf bank0

SA      BTFSS    PORTA,0
      goto    SAEIN
      goto    SB

SB

      BTFSS    PORTA,1
      goto    SBEIN
      goto    SC

SC
      BTFSS    PORTA,0
      goto    SC2
      goto    SA

SC2      BTFSS    PORTA,1
      goto    AUS
      goto    SA

AUS      bcf      PORTB,0
      bcf      PORTB,1
      bcf      PORTB,2
      bcf      PORTB,3
      bcf      PORTB,4
      bcf      PORTB,5
      bcf      PORTB,6
      bcf      PORTB,7
      goto    SA

SAEIN    comf    PORTB,0
      comf    PORTB,1
      comf    PORTB,2
      comf    PORTB,3
      goto    SA

SBEIN
      comf    PORTB,4
      comf    PORTB,5
      comf    PORTB,6
      comf    PORTB,7
      goto    SA
end



______________________________________________________________________ 
_

Das was ihr da oben seht ist mein Code ich habe da folgendes problem und 
zwar soll SC alle Ports ausschalten aber es soll nicht passieren das ich 
das Programm SC auslöse wenn ich SA und SB ausführe,

deswegen muss ich irgendwie die Bits masskieren finde dazu aber nix in 
google kann mir das mal einer anhand meines Codes demonstrieren.
Gast #2175809
Lesenswert?

Hi
Du solltest schon dazu schreiben, welcher Assemblercode dies ist. Ein 
Goto in Assembler ist mir unbekannt. Auch Sprungmarken ohne ":"
Ansonsten such für die Bitmasken die Referenzen für "AND", "OR", "XOR".
Gruß oldmax
Gast #2175961
Lesenswert?

oldmax schrieb:
> Du solltest schon dazu schreiben, welcher Assemblercode dies ist.

oben steht, dass es ein PIC ist. Da gibt es auch ein goto und die Labels 
werden ohne ":" geschrieben.

Acker schrieb:
> habs schon hinbekommen mit AND weil unser lehrer es erklärt hat.

ok. Aber du solltest beim initialisieren noch PORTA als Eingang 
definieren. Sicher ist sicher und ich kann nicht 100%ig sagen, ob bei 
allen PICs der Start-Zustand "Eingang" ist. Zudem kannst du auch eine 0 
ins W-Register schreiben und diese dann nach TRISB kopieren. Also mit 
movlw und movf.
Gast #2176147
Lesenswert?

und alle benutzten Ports mit einem Schreibbefehl einmal initialisieren, 
siehe Datenblatt S.15, EXAMPLE 4-1

Das ist überhaupt das wichtigste, bevor man programmiert:

     ****************************
     ***** DATENBLATT LESEN *****
     ****************************
Gast #2177239
Lesenswert?

Lothar Miller schrieb:
> Deshalb habe ich seinerzeit auch nicht mit den PICs angefangen... ;-)

Das sind natürlich zwei triftige Gründe, eine µC-Familie abzuschreiben. 
Man muss kein Doppelpunkt bei den Sprungmarken schreiben und man kann an 
eine beliebige stelle im Code springen. Das stört mich auch 
immernoch..... nicht.
Gast #2178112
Lesenswert?

fang grade erst an mit dem Programmieren wir bekommen von unserem Lehrer 
aufgaben gestellt welche wir aus eigener hand meistern sollen er gibt 
uns nur kleine tips am ende spielen wir unser programm auf und testen es 
:P

meine Laufen immer xD sind zwar ein bissel unordentlich und nicht 
kommentiert aber sie funktionieren ^^

naja aller anfang ist schwer.

aber danke für eure tips

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren