Forum: Mikrocontroller und Digitale Elektronik Hilfe Assembler


von d.caine (Gast)


Lesenswert?

Hallo zusammen,

bin absouluter Anfänger was Assembler und das programmieren von 
Mikrocontrollern.Villeicht kann mir einer bei helfen.
Benutze das mp lab ide von microchip.
Möchte als erstens Eingänge und Ausgänge definieren .Hab das so gemacht 
aber etwas stimmt nicht. Danke im Voraus bin für jede Hilfe dankbar.

Grüss Caine

 list p=16f877                ;der Prozessortyp wird festgelegt
 include "p16f877.inc"        ;inkluzivi podatci

org 0x00
goto main

init

 bsf     STATUS, RP0            ; auf Bank 1 umschalten
        movlw   D'00000000'    ; PortB alle output
        movwf   TRISB
        bcf     STATUS, RP0     ; auf Bank 0 schalten
        clrf    PORTB           ; alle LEDs ausschalten
        clrf    w

 bsf     STATUS, RP0            ; auf Bank 1 umschalten
        movlw   C'11111111'     ;PortB alle output
        movwf   TRISC
        bcf     STATUS, RP0     ; auf Bank 0 schalten

end

von Steffen H. (avrsteffen)


Lesenswert?

d.caine schrieb:
> org 0x00
> goto main
>
> init
>
>  bsf     STATUS, RP0            ; auf Bank 1 umschalten

Wo ist denn dein "main"? Und 'goto' ist doch auch bei Microship kein 
Assembler Befehl, oder? Da kommt doch bestimmt irgend ein Jump-Befehl 
zur Sprungmarke 'init' hin.

Ich kenne mich leider mit den PIC's und Microchips Assembler nicht aus.

Steffen

von Michael R. (mexman) Benutzerseite


Lesenswert?

Hallo Caine,

> Möchte als erstens Eingänge und Ausgänge definieren .Hab das so gemacht
> aber etwas stimmt nicht. Danke im Voraus bin für jede Hilfe dankbar.


WAS stimmt nicht?

> goto main

Muss heissen "goto init"

1. Du hast nur von In auf Out umgeschaltet, aber nicht definiert, ob die 
Portausgaenge H oder L sein sollen
2. bei PIC mit ADC musst Du zusaetzlich dort noch ein Configurationsbit 
setzen, steht aber prima im Datenblatt!

Ausserdem kannst Du in MPLAB im Simulator genau sehen was passiert, dann 
schreib hier bitte nicht "IRGENDWAS" stimmt nicht!


Gruss

Michael

von d.caine (Gast)


Lesenswert?

list p=16f877
 #include <P16f877.INC>



org 0x00



Init

 bsf     STATUS, RP0            ; auf Bank 1 umschalten
        movlw   B'00000000'     ; PortB alle output
        movwf   TRISD
        bcf     STATUS, RP0     ; auf Bank 0 schalten
        clrf    PORTD           ; alle LEDs ausschalten
        clrf    W


 bsf     STATUS, RP0            ; auf Bank 1 umschalten
        movlw   B'11111111'    ; PortC alle input
        movwf   TRISC
        bcf     STATUS, RP0    ; auf Bank 0 zurückschalten

goto main


main



end


So jetzt habe ich alles...der Fehler war das ich C'00000000' gemacht 
habe weil ich dachte ..Port C also C'00000000' . Is aber quatsch B steht 
nämlich für ein Zahlenwert von 0 bis 7 mit trisc setze ich dann diesen 
wert bei port c . main und goto noch hinzugefügt.

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.