Forum: Mikrocontroller und Digitale Elektronik Frage zu Assembler


von Acker (Gast)


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.

von oldmax (Gast)


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

von Acker (Gast)


Lesenswert?

habs schon hinbekommen mit AND weil unser lehrer es erklärt hat.

von ich (Gast)


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.

von usuru (Gast)


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 *****
     ****************************

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

oldmax schrieb:
> Ein Goto in Assembler ist mir unbekannt.
> Auch Sprungmarken ohne ":"
Deshalb habe ich seinerzeit auch nicht mit den PICs angefangen... ;-)

Und die Dinger hatten anfangs nicht mal Interrupts. Echt!
Und dann noch die Segmentiererei.
Und nur 1 Arbeitsregister.
Üble Sache...

von usuru (Gast)


Lesenswert?

> Und die Dinger hatten anfangs nicht mal Interrupts. Echt!

Das Urgestein der Flash-Typen ist der 16F84. Der hat Interrupt.

von ich (Gast)


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.

von Acker (Gast)


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

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.