Προς το περιεχόμενο

assembly 8085 - ρουτίνα εξυπηρέτησης διακοπών (Interrupt Service Routine)


mariakal

Προτεινόμενες αναρτήσεις

Δημοσ.

Έχω ένα σύστημα παρακολούθησης που αποτελείται από 4 ασύρματες κάμερες και έναν δέκτη. Στον δέκτη υπάρχει ψηφιακός μικρο-ελεγκτής, ο οποίος διαβάζει 4 bits εισόδου (S1, S2, S3, S4) από αντίστοιχα dip switches και γράφει 4 bits εξόδου (C1, C2, C3, C4), που ενεργοποιούν τις 4 κάμερες, αντίστοιχα.

C4 C3 C2 C1 S4 S3 S2 S1

Τα 4 bits εισόδου έχουν την παρακάτω χρήση:

• S1: “1” / “0” = ενεργοποίηση / απενεργοποίηση παρακολούθησης

• S2: “1”: κυκλική σάρωση καμερών, “0”: παρακολούθηση σταθερής κάμερας

• S4S3: (S4 το πλέον σημαντικό bit)

o αν S2=“1”, τότε: αναμονή 2*(S4S3)+2 sec ανά κάμερα, π.χ. για S4S3=112 αναμονή 8 sec ανά κάμερα,

o αν S2=“0”, τότε: S4S3 = ο αριθμός της κάμερας που παρακολουθείται, π.χ. S4S3=112 για την κάμερα #4.

 

Το λογισμικό του μικρο-ελεγκτή διαβάζει τα bits εισόδου από τη διεύθυνση (I/O) 80h και γράφει τα bits εξόδου στη διεύθυνση (I/O) 80h, ενώ δεν διαβάζει ούτε γράφει σε άλλες I/O διευθύνσεις. Η παραπάνω επικοινωνία I/O γίνεται περιοδικά (polling), με συχνότητα 10 Hz χρησιμοποιώντας τη γραμμή διακοπών (maskable interrupts) του μικρο-ελεγκτή.

 

εκείνο που με βασανίζει είναι, πώς μπορώ να σχεδιασω το ψηφιακό κύκλωμα που υλοποιεί το παραπάνω σύστημα, με χρήση του μικροεπεξεργαστή 8085. [clock 10Hz] αλλά κυρίως πώς μπορώ να γραψω σε γλώσσα προγραμματισμού assembly 8085 η ρουτίνα εξυπηρέτησης διακοπών (Interrupt Service Routine), που υλοποιεί την παραπάνω λογική λειτουργία του μικρο-ελεγκτή.

Δημοσ.

Έχω ένα σύστημα παρακολούθησης που αποτελείται από 4 ασύρματες κάμερες και έναν δέκτη. Στον δέκτη υπάρχει ψηφιακός μικρο-ελεγκτής, ο οποίος διαβάζει 4 bits εισόδου (S1, S2, S3, S4) από αντίστοιχα dip switches και γράφει 4 bits εξόδου (C1, C2, C3, C4), που ενεργοποιούν τις 4 κάμερες, αντίστοιχα.

C4 C3 C2 C1 S4 S3 S2 S1

Τα 4 bits εισόδου έχουν την παρακάτω χρήση:

• S1: “1” / “0” = ενεργοποίηση / απενεργοποίηση παρακολούθησης

• S2: “1”: κυκλική σάρωση καμερών, “0”: παρακολούθηση σταθερής κάμερας

• S4S3: (S4 το πλέον σημαντικό bit)

o αν S2=“1”, τότε: αναμονή 2*(S4S3)+2 sec ανά κάμερα, π.χ. για S4S3=112 αναμονή 8 sec ανά κάμερα,

o αν S2=“0”, τότε: S4S3 = ο αριθμός της κάμερας που παρακολουθείται, π.χ. S4S3=112 για την κάμερα #4.

 

Το λογισμικό του μικρο-ελεγκτή διαβάζει τα bits εισόδου από τη διεύθυνση (I/O) 80h και γράφει τα bits εξόδου στη διεύθυνση (I/O) 80h, ενώ δεν διαβάζει ούτε γράφει σε άλλες I/O διευθύνσεις. Η παραπάνω επικοινωνία I/O γίνεται περιοδικά (polling), με συχνότητα 10 Hz χρησιμοποιώντας τη γραμμή διακοπών (maskable interrupts) του μικρο-ελεγκτή.

 

εκείνο που με βασανίζει είναι, πώς μπορώ να σχεδιασω το ψηφιακό κύκλωμα που υλοποιεί το παραπάνω σύστημα, με χρήση του μικροεπεξεργαστή 8085. [clock 10Hz] αλλά κυρίως πώς μπορώ να γραψω σε γλώσσα προγραμματισμού assembly 8085 η ρουτίνα εξυπηρέτησης διακοπών (Interrupt Service Routine), που υλοποιεί την παραπάνω λογική λειτουργία του μικρο-ελεγκτή.

Δημοσ.

Με λιγα λογια αυτο που σε βασανιζει ειναι ολη η επιλυση της ασκησης.

 

Προτεινω λοιπον να κανεις post τι εχεις κανει μεχρι στιγμης και το βλεπουμε.:-)

Δημοσ.

Με λιγα λογια αυτο που σε βασανιζει ειναι ολη η επιλυση της ασκησης.

 

Προτεινω λοιπον να κανεις post τι εχεις κανει μεχρι στιγμης και το βλεπουμε.:-)

Δημοσ.

Δεν εχω κανει πολλά πράγματα γιατί με έχει δυσκολέψει πολύ!!

Ο συλλογισμός μου εχει ως εξής:

 

Με ρολόι 10Hz ο χρόνος μιας κατάστασης θα είναι Τ = 1/10Hz = 0,1sec χρόνος σχετικά μεγάλος για να αγνοηθούν οι εκτελούμενες εντολές μεταξύ 2 διαδοχικών εναλλαγών στις κάμερες (περίπτωση S2=1).

 

Σε χρόνο αναμονής 2sec = 20T θα πρέπει οπωσδήποτε να χωρέσουν τουλάχιστον:

- μια εντολή OUT 80h (10T),

- μια μεταβολή στον Α (τουλάχιστον 4Τ),

- ένα JMP (7Τ) για τη συνεχή επανάληψη πχ από την 4η στη 1η κάμερα

Σύνολο λοιπόν 21Τ=2,1sec χρόνος που ξεπερνά το όριο των 2sec.

 

Εν τέλει, νομίζω ότι με ρολόι 10Hz ο χρόνος μιας κατάστασης θα είναι Τ = 1/10Hz = 0,1 μsec (και όχι sec).

 

1Hz = 1cycle/sec = 1/sec

 

μ = 10^(-6)

 

Επομένως T= 1/10Hz = 0,1sec

 

ΜΠΟΡΕΙ ΝΑ ΜΕ ΒΟΗΘΗΣΕΙ ΚΑΝΕΙΣ?

Δημοσ.

Τα 10Hz είναι μια αυθαίρετη συχνότητα polling. Αφορά το software/firmware. Η συχνότητα λειτουργίας (clock) του 8085 είναι 3MHz. Καμιά σχέση το ένα με το άλλο...

 

Αλίμονο αν μια cpu ήθελε ~2 sec για να εκτελέσει μια χούφτα εντολές!

Δημοσ.
Έχω ένα σύστημα παρακολούθησης που αποτελείται από 4 ασύρματες κάμερες και έναν δέκτη. Στον δέκτη υπάρχει ψηφιακός μικρο-ελεγκτής, ο οποίος διαβάζει 4 bits εισόδου (S1, S2, S3, S4) από αντίστοιχα dip switches και γράφει 4 bits εξόδου (C1, C2, C3, C4), που ενεργοποιούν τις 4 κάμερες, αντίστοιχα.

C4 C3 C2 C1 S4 S3 S2 S1

Τα 4 bits εισόδου έχουν την παρακάτω χρήση:

• S1: “1” / “0” = ενεργοποίηση / απενεργοποίηση παρακολούθησης

• S2: “1”: κυκλική σάρωση καμερών, “0”: παρακολούθηση σταθερής κάμερας

• S4S3: (S4 το πλέον σημαντικό bit)

o αν S2=“1”, τότε: αναμονή 2*(S4S3)+2 sec ανά κάμερα, π.χ. για S4S3=112 αναμονή 8 sec ανά κάμερα,

o αν S2=“0”, τότε: S4S3 = ο αριθμός της κάμερας που παρακολουθείται, π.χ. S4S3=112 για την κάμερα #4.

 

Το λογισμικό του μικρο-ελεγκτή διαβάζει τα bits εισόδου από τη διεύθυνση (I/O) 80h και γράφει τα bits εξόδου στη διεύθυνση (I/O) 80h, ενώ δεν διαβάζει ούτε γράφει σε άλλες I/O διευθύνσεις. Η παραπάνω επικοινωνία I/O γίνεται περιοδικά (polling), με συχνότητα 10 Hz χρησιμοποιώντας τη γραμμή διακοπών (maskable interrupts) του μικρο-ελεγκτή.

 

εκείνο που με βασανίζει είναι, πώς μπορώ να σχεδιασω το ψηφιακό κύκλωμα που υλοποιεί το παραπάνω σύστημα, με χρήση του μικροεπεξεργαστή 8085. [clock 10Hz] αλλά κυρίως πώς μπορώ να γραψω σε γλώσσα προγραμματισμού assembly 8085 η ρουτίνα εξυπηρέτησης διακοπών (Interrupt Service Routine), που υλοποιεί την παραπάνω λογική λειτουργία του μικρο-ελεγκτή.

 

την έλυσες εν τέλει πως;

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...