διακόπτουν ΑΛΛΑΓΗ ΣΤΟ ΛΙΜΑΝΙ PIC 16FXXX

C

creative_35

Guest
Έχω πρόβλημα στο λιμάνι, επιτρέπει την αλλαγή αυτής της ρύθμισης, ενώ προσομοίωση ρουτίνας σε mblab.
I RB4 ρυθμιστεί ως την αλλαγή του λιμένα και όταν πυροδοτικών RB4, που πηδά σε ΔΑΜ και ποτέ δεν επιστρέφει από ISR ρουτίνας.Δεν ξέρω γιατί.κανέναν σας είχε τέτοια προβλήματα;pls να με βοηθήσει.Κωδικός:

p = 16f628 λίστα? λίστα οδηγία να καθορίσει επεξεργαστή

# περιλαμβάνουν <p16f628.inc>? επεξεργαστή συγκεκριμένη μεταβλητή ορισμοί__CONFIG _CP_OFF & _WDT_ON & _BODEN_ON & _PWRTE_ON & _ER_OSC_CLKOUT & _MCLRE_ON & _LVP_ON;***** VARIABLE ΟΡΙΣΜΟΙ

w_temp EQU 0x70? μεταβλητό πλαίσιο που χρησιμοποιούνται για την αποθήκευση

status_temp EQU 0x71? μεταβλητό πλαίσιο που χρησιμοποιούνται για την αποθήκευση;************************************************* *********************

ORG 0x000? Επεξεργαστή ηδενίσετε διάνυσμα

goto κύριος? μεταβείτε στην αρχή του προγράμματος;**************** ISR ΣΥΝΗΘΗΣ ******************************* ***

ORG 0x004? Διακόπτουν διάνυσμα θέσης

movwf w_temp? αποθηκεύσετε εκτός τρέχουσα W μητρώο περιεχόμενο

movf STATUS, w? κίνηση καθεστώς μητρώο σε μητρώο W

movwf status_temp? εκτός από το περιεχόμενο του μητρώου ΚατάστασηBANKSEL INTCON

BCF INTCON, RBIFmovf status_temp, w? ανακτήσετε αντίγραφο του μητρώου Κατάσταση

movwf STATUS? αποκατάσταση της προ-ISR Κατάσταση μητρώο περιεχόμενο

swapf w_temp, στ

swapf w_temp, w? αποκατάσταση της προ-ISR W μητρώο περιεχόμενο

retfie? επιστροφή από τη διακοπή

:************************************************* **********************

MAIN

BANKSEL CMCON

movlw 7η

movwf CMCON

BANKSEL PORTB

clrf PORTB

clrf ΠΟΡΤΑ

BANKSEL TRISB

movlw 0x10

movwf TRISB

clrf TRISASTART

BANKSEL INTCON

BSF INTCON, GIE

BCF INTCON, RBIF

BSF INTCON, RBIE

goto $ΤΕΛΟΣ
 
Γεια creative_35
is actioned but the interupt flag RBIF
is set again on the line following bcf INTCON,RBIF
.

Θα βρείτε retfie
σας είναι actioned αλλά διακόπτουν τη σημαία RBIF
που είναι και πάλι στη γραμμή μετά BCF INTCON, RBIF.Εξήγηση:the mismatch
condition on PORTB by a read or write of the PORTB - then
RBIF can be cleared.

Όταν από interupted int-on-αλλαγή θα χρειαστεί για να
καθαρίσετε την αναντιστοιχία
προϋπόθεση για PORTB από μια ανάγνωση ή γραφή του PORTB - RBIF τότε
μπορεί να διαγραφεί.Εκκαθάριση της RBIF σημαία από μόνο του δεν είναι σαφής η αναντιστοιχία κατάσταση.

Εάν η αναντιστοιχία κατάσταση συνεχιστεί, το RBIF σημαία που θα είναι για τον επόμενο κύκλο μηχανής Q1 και άλλη διακόπτουν θα συμβεί - και ξανά και ξανά ......

Η σύγκριση είναι μεταξύ τελευταία PORTB Διαβάστε και portb σάρωση κάθε Q1 κύκλο μηχανής.

Σημείωση: Όπως κάθε εντολή με ένα αρχείο ως προορισμού έχει διαβάσει-τροποποίησης-γράφουν ότι μια τέτοια δράση για να γράψετε PORTB θα παρέχει την αναγκαία για την ΔΙΑΒΑΣΤΕ τέλος της αναντιστοιχίας κατάσταση.

Ανατρέξτε στο φύλλο δεδομένων 877A - PortB περιγραφή

Ειδική Σημείωση:Q1 machine cycle.

PORTB (7:4) των δεδομένων είναι μανδαλωμένη-Q1 σε κάθε
κύκλο μηχανής.
Αν έχετε γρήγορη αλλαγές (ακίδα / μικροβλάβη) PORTB για αυτές μπορεί να εντοπιστεί από int-για την αλλαγή, αλλά δεν διαβάζεται από τα pins ή thay μπορεί να χαθεί εντελώς.
Ο ελάχιστος χρόνος παλμού είναι 1 κύκλος να είναι βέβαιοι για την αλίευση.

Mismatch εκκαθάρισης διενεργείται κατά τη διάρκεια της Ε3 κύκλο μηχανής.

ελπίδα αυτό βοηθά Polymath

 
Ευχαριστώ verymuch Polymath.
along with clearing of rbif

and it's working.

Έχω προσθέσει BCF PORTB, 4,

μαζί με την εκκαθάριση των rbif

και
της εργασίας.

 

Welcome to EDABoard.com

Sponsor

Back
Top