TechPioneers

Προγραμματισμός, Συστήματα Αυτόματου Ελέγχου, Software, Hardware.


    Εντολές Assembly για μικροελεγκτές PIC

    Μοιραστείτε

    Giorgos3924
    Administrator
    Administrator

    Posts : 34
    Join date : 02/04/2010

    Εντολές Assembly για μικροελεγκτές PIC

    Δημοσίευση από Giorgos3924 Την / Το Δευ Απρ 05, 2010 2:36 am

    Οι παρακάτω εντολές αφορούν τους μικροελεγκτές 8 bit, οικογένειας PIC της εταιρίας Microchip.
    Δεν περιέχοντε όλες οι εντολές απο το ρεπερτόριο των συγκεκριμένων μικροελεγκτών αλλά υπάρχουν οι πιο σημαντικές για την συγγραφή ενός τόσο απλού όσο και σύνθετου προγράμματος.

    MOVLW
    Φόρτωσε μία τιμή στον W
    Πχ. MOVLW B’01011010’ Δυαδικό
    MOVLW 0x5A Δεκαεξαδικό
    MOVLW D’90’ Δεκαδικό

    MOVWF
    Μεταφορά δεδομένων από W σε άλλο καταχωρητή.
    Πχ. MOVWF PORTB
    MOVWF REG1

    MOVF
    Μεταφορά δεδομένων από ένα καταχωρητή στον W.
    Πχ. MOVF REG1,1 ή 0
    MOVF PORTA,1 ή 0
    Με 1 τα δεδομένα δεν μεταφέρονται στον W, τα δεδομένα κάνουν κύκλο και επιστρέφουν πίσω.
    Με 0 τα δεδομένα μεταφέρονται στον W.

    BFS
    Αλλαγή ενός bit, ενός καταχωρητή σε λογικό 1.
    Πχ. BSF REG2,3 (Θέσε λογικό 1 το bit 3 του καταχωρητή REG2).

    BCF
    Αλλαγή ενός bit, ενός καταχωρητή σε λογικό 0.
    Πχ. BCF REG2,3 (θέσε λογικό 0 το bit 3 του καταχωρητή REG2).

    SWAPF
    Εναλλαγή των 4 λιγότερο σημαντικών ψηφίων με τα 4 περισσότερα σημαντικά ψηφία.
    Πχ. SWAPF REG1,1 (Με 1 το αποτέλεσμα παραμένει στον REG1).
    SWAPF REG1,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    ANDLW
    Λογική πράξη AND μεταξύ του W και ενός αριθμού.
    Πχ. ANDLW B’01011010’ Δυαδικό
    ANDLW 0x5A Δεκαεξαδικό
    ANDLW D’90’ Δεκαδικό
    Το αποτέλεσμα αποθηκεύεται πάντα στον W.

    ANDWF
    Λογική πράξη AND μεταξύ του W και ενός καταχωρητή.
    Πχ. ANDWF REG2,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG2).
    ANDWF REG2,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    IORLW
    Λογική πράξη OR μεταξύ W και ενός αριθμού.
    Πχ. IORLW B’01011010’ Δυαδικό
    IORLW 0x5A Δεκαεξαδικό
    IORLW D’90’ Δεκαδικό
    Το αποτέλεσμα αποθηκεύεται πάντα στον W.

    IORWF
    Λογική πράξη OR μεταξύ W και ενός καταχωρητή.
    Πχ. IORWF REG2,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG2).
    IORWF REG2,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    XORLW
    Λογική πράξη XOR μεταξύ W και ενός αριθμού.
    Πχ. XORLW B’01011010’ Δυαδικό
    XORLW 0x5A Δεκαεξαδικό
    XORLW D’90’ Δεκαδικό
    Το αποτέλεσμα αποθηκεύεται πάντα στον W.

    XORWF
    Λογική πράξη XOR μεταξύ W και ενός καταχωρητή.
    Πχ. XORWF REG3,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG3).
    XORWF REG3,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    COMF
    Συμπλήρωμα ως προς 1 στο περιεχόμενο ενός καταχωρητή.
    Πχ. COMF REG1,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG1).
    COMF REG1,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    RLF
    Αριστερή ολίσθηση κατά μία θέση, στο περιεχόμενο ενός καταχωρητή
    Πχ. RLF REG,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG).
    RLF REG,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    RRF
    Δεξιά ολίσθηση κατά μία θέση, στο περιεχόμενο ενός καταχωρητή
    Πχ. RRF REG,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG).
    RRF REG,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    ADDLW
    Αριθμητική πράξη πρόσθεσης μεταξύ του W και ενός αριθμού.
    Πχ. ADDLW B’01011010’ Δυαδικό
    ADDLW 0x5A Δεκαεξαδικό
    ADDLW D’90’ Δεκαδικό
    Το αποτέλεσμα αποθηκεύεται πάντα στον W.

    ADDWF
    Αριθμητική πράξη πρόσθεσης μεταξύ του W και ενός καταχωρητή.
    Πχ. ADDWF REG2,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG2).
    ADDWF REG2,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    SUBLW
    Αριθμητική πράξη αφαίρεσης μεταξύ του W και ενός αριθμού.
    Πχ. SUBLW B’01011010’ Δυαδικό
    SUBLW 0x5A Δεκαεξαδικό
    SUBLW D’90’ Δεκαδικό
    Το αποτέλεσμα αποθηκεύεται πάντα στον W.

    SUBWF
    Αριθμητική πράξη αφαίρεσης μεταξύ του W και ενός καταχωρητή.
    Πχ. SUBWF REG2,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG2).
    SUBWF REG2,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    INCF
    Αύξηση στο περιεχόμενο ενός καταχωρητή κατά 1.
    Πχ. INCF REG1,1 (Με 1 το αποτέλεσμα παραμένει στον καταχωρητή REG1).
    INCF REG1,0 (Με 0 το αποτέλεσμα μεταφέρετε στον W).

    BTFSC
    Έλεγχος ενός bit, ενός καταχωρητή.
    Αν αυτό είναι 1 εκτελείται η επόμενη κατά σειρά εντολή, αλλιώς, αν αυτό είναι 0 εκτελείται η μεθεπόμενη εντολή.
    Πχ. BTFSC REG,3 (Αν το bit3 του καταχωρητή REG είναι 1 εκτελείται η επόμενη εντολή, αλλιώς, αν είναι 0 εκτελείται η μεθεπόμενη).
    BTFSC REG,6 (Αν το bit6 του καταχωρητή REG είναι 1 εκτελείται η επόμενη εντολή, αλλιώς, αν είναι 0 εκτελείται η μεθεπόμενη).

    BTFSS
    Έλεγχος ενός bit, ενός καταχωρητή.
    Αν αυτό είναι 0 εκτελείται η επόμενη κατά σειρά εντολή, αλλιώς, αν αυτό είναι 1 εκτελείται η μεθεπόμενη εντολή.
    Πχ. BTFSS REG,2 (Αν το bit2 του καταχωρητή REG είναι 0 εκτελείται η επόμενη εντολή, αλλιώς, αν είναι 1 εκτελείται η μεθεπόμενη).
    BTFSS REG,7 (Αν το bit7 του καταχωρητή REG είναι 0 εκτελείται η επόμενη εντολή, αλλιώς, αν είναι 1 εκτελείται η μεθεπόμενη).

    DECFSZ
    Μείωση του περιεχόμενου ενός καταχωρητή κατά 1 και παράλειψη της επόμενης εντολής για Z=0.
    Πχ. DECFSZ

    GOTO
    Μεταφορά της ροής εκτέλεσης ενός προγράμματος σε άλλο σημείο.
    Για τη μεταφορά χρειάζεται ετικέτα.
    Πχ. GOTO LOOP
    GOTO TIME
    CALL
    Κάλεσμα μιας υπορουτίνας.
    Πχ. CALL DELAY
    CALL LOOP4

    RETURN
    Επιστροφή της ροής εκτέλεσης του προγράμματος μετά από αλλαγή (CALL) και εκτέλεση της επόμενης κατά σειρά εντολής.
    Πχ. CALL DELAY1
    … … … … … …
    … … … … … …
    RETURN

      Η τρέχουσα ημερομηνία/ώρα είναι Τρι Οκτ 16, 2018 5:24 am