Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΦΩΤΙΑ ΗΣ Α. ΗΜΗΤΡΗΣ M.Sc. ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Τ.Ε. ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ (Σ.Τ.ΕΦ.) ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ d.fotiadis@kastoria.teikoz.gr
ΛΕΙΤΟΥΡΓΙΕΣ ΧΡΟΝΙΣΤΩΝ ΜΕΤΡΗΤΩΝ (TIMERS COUNTERS) ΤΟΥ 8051 ΠΡΟΣΕΓΓΙΣΗ ΒΑΣΙΣΜΕΝΗ ΣΕ ΛΟΓΙΣΜΙΚΟ (SOFTWARE) ΕΥΕΛΙΞΙΑ ΠΡΟΣΕΓΓΙΣΗ ΒΑΣΙΣΜΕΝΗ ΣΕ ΥΛΙΚΟ (HARDWARE) ΜΕΙΩΜΕΝΗ ΕΥΕΛΙΞΙΑ ΣΥΝ ΥΑΣΜΟΣ ΠΡΟΣΕΓΓΙΣΗΣ ΒΑΣΙΣΜΕΝΗΣ ΣΕ ΛΟΓΙΣΜΙΚΟ ΚΑΙ ΥΛΙΚΟ
ΠΡΟΣΕΓΓΙΣΗ ΒΑΣΙΣΜΕΝΗ ΣΕ ΛΟΓΙΣΜΙΚΟ START Να γραφεί πρόγραμμα με το οποίο θα παράγεται ένας τετραγωνικός παλμός στο Pin P1.0 P1.0 (P1.0) 1 ΑΡΧΙΚΟΠΟΙΗΣΗ ΚΑΤΑΧΩΡΗΤΗ ΜEΤΡΗΣΗΣ (COUNT REGISTER) (CR) (CR 1) SETB P1.0 LOOP: MOV R0,#255 DJNZ R0,$ OXI EINAI CR 0? NAI (P1.0) /(P1.0) CPL P1.0 SJMP LOOP
ΠΡΟΣΕΓΓΙΣΗ ΒΑΣΙΣΜΕΝΗ ΣΕ ΥΛΙΚΟ (ΑΣΤΑΘΗΣ ΠΟΛΥ ΟΝΗΤΗΣ 555) f 1.44 R1 2R 2 C Hz R R 1 2 6.8k 3.3k C 10nF f 10.8kHz
8051 ΚΑΤΑΧΩΡΗΤΕΣ TIMER/COUNTER ΥΟ TIMERS/COUNTERS ΣΤΟΝ 8051 (TIMER 0 ΚΑΙ 1) ΚΑΤΑΧΩΡΗΤΕΣ TIMER/COUNTER ΑΥΞΗΤΙΚΗ ΜΕΤΡΗΣΗ 2 ΚΑΤΑΧΩΡΗΤΕΣ ΤΩΝ 16ΒΙΤ ΚΑΘΕΝΑΣ ΑΠΟΤΕΛΕΙΤΑΙ ΑΠΟ 2 ΚΑΤΑΧΩΡΗΤΕΣ ΤΩΝ 8ΒΙΤ TA ONOMATA ΤΟΥΣ ΕΙΝΑΙ: TL0, TH0, TL1, TH1 ΑΡΧΙΚΟΠΟΙΟΥΝΤΑΙ ΜΕ ΕΝΤΟΛΕΣ ΟΠΩΣ: MOV TH1,#0AFH ΚΑΘΕΝΑΣ ΜΠΟΡΕΙ ΝΑ ΜΕΤΡΗΣΕΙ ΑΠΟ ΤΟ 0 ΕΩΣ ΤΟ 65535 TH0 D15...... D8 TL0 D7...... D0 TH1 TL1 D15...... D8 D7...... D0
ΚΑΤΑΧΩΡΗΤΕΣ ΕΛΕΓΧΟΥ TIMER/COUNTER ΥΟ EΠΙΠΛΕΟΝ ΚΑΤΑΧΩΡΗΤΕΣ ΕΛΕΓΧΟΥΝ ΤΗ ΛΕΙΤΟΥΡΓΙΑ ΤΩΝ TIMER/COUNTER TCON: TIMER CONTROL REGISTER TMOD: TIMER MODE CONTROL REGISTER
ΧΑΡΤΗΣ ΜΝΗΜΗΣ ΚΑΤΑΧΩΡΗΤΩΝ TIMER/COUNTER SFR Περιγραφή ιεύθυνση Bit addressable TH0 TL0 TH1 TL1 Υψηλής τάξης byte του Timer 0 Χαμηλής τάξης byte του Timer 0 Υψηλής τάξης byte του Timer 1 Χαμηλής τάξης byte του Timer 1 8CH 8AH 8DH 8BH Όχι Όχι Όχι Όχι TCON Έλεγχος του Timer 88H Ναι TMOD Τρόπος λειτουργίας του Timer 89H Όχι
ΚΑΤΑΧΩΡΗΤΗΣ ΕΙ ΙΚΩΝ ΛΕΙΤΟΥΡΓΙΩΝ (SPECIAL FUNCTION REGISTER ή SFR) TCON MSB TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 LSB ΙΠΛΗ ΛΕΙΤΟΥΡΓΙΑ: TIMER CONTROL ΚΑΙ INTERRUPT CONTROL Bit Όνομα ιεύθυνση bit Περιγραφή Λειτουργίας Χρονιστής 7 TF1 8FH 6 TR1 8EH 5 TF0 8DH 4 TR0 8CH Υπερχείλιση Timer 1. Το bit αυτό παίρνει τιμή 1 (high) από τον 8051 όταν έχουμε υπερχείλιση του Timer 1. Έναρξη Timer 1. Όταν το bit αυτό έχει τιμή 1 (high), τότε ο Timer 1 λειτουργεί. Όταν το bit αυτό έχει τιμή 0 (low), τότε ο Timer 1 δε λειτουργεί. Υπερχείλιση Timer 0. Το bit αυτό παίρνει τιμή 1 (high) από τον 8051 όταν έχουμε υπερχείλιση του Timer 0. Έναρξη Timer 0. Όταν το bit αυτό έχει τιμή 1 (high), τότε ο Timer 0 λειτουργεί. Όταν το bit αυτό έχει τιμή 0 (low), τότε ο Timer 0 δε λειτουργεί. 1 1 0 0
ΥΠΕΡΧΕΙΛΙΣΗ TIMER/COUNTER ΟΙ TIMERS/COUNTERS ΥΠΕΡΧΕΙΛΙΖΟΥΝ ΟΤΑΝ Η ΤΙΜΗ ΤΟΥΣ ΑΛΛΑΖΕΙ ΑΠΟ FFFFH 0000H TOTE ΟΙ ΣΗΜΑΙΕΣ ΥΠΕΡΧΕΙΛΙΣΗΣ (TO TF1 Ή ΤΟ TF0) ΑΠΟ 0 ΓΙΝΟΝΤΑΙ 1 RESET TF1 ( ΗΛΑ Η ΑΠΟ 1 ΝΑ ΓΙΝΕΙ 0) CLR TF1 JMP 001BH (INTERRUPT SUBROUTINE ADDRESS) RESET TF0 ( ΗΛΑ Η ΑΠΟ 1 ΝΑ ΓΙΝΕΙ 0) CLR TF0 JMP 000BH (INTERRUPT SUBROUTINE ADDRESS)
ΚΑΤΑΧΩΡΗΤΗΣ ΕΙ ΙΚΩΝ ΛΕΙΤΟΥΡΓΙΩΝ (SPECIAL FUNCTION REGISTER ή SFR) TMOD MSB LSB GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 TIMER1 TxM1 TxM0 Timer Mode TIMER0 Περιγραφή 0 0 0 Μετρητής των 13 bit 0 1 1 Μετρητής των 16 bit 1 0 2 Μετρητής των 8 bit αυτόματης επαναφόρτωσης (Auto Reload) 1 1 3 ιαιρούμενος χρονιστής (Split Timer)
ΚΑΤΑΧΩΡΗΤΗΣ ΕΙ ΙΚΩΝ ΛΕΙΤΟΥΡΓΙΩΝ (SPECIAL FUNCTION REGISTER ή SFR) TMOD MSB LSB GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 TIMER1 TIMER0 Bit Όνομα Περιγραφή λειτουργίας Χρονιστής/ Μετρητής 7 GATE1 6 C/T1 Όταν το bit αυτό έχει τιμή 1 (high), τότε ο χρονιστής θα λειτουργεί μόνο όταν δεχτεί το σήμα INT1 (P3.3 ήτοbit 3 της πόρτας 3) με τιμή 1 (high). Όταν το bit αυτό έχει τιμή 0 (low), τότε ο χρονιστής θα λειτουργεί ανεξάρτητα από την τιμή που διαβάζει το pin ΙΝΤ1. Όταν το bit αυτό έχει τιμή 1 (high), τότε ο χρονιστής θα μετράει συμβάντα που θα δέχεται στο pin T1 (P3.5 ήτοbit 5 της πόρτας 3). Όταν το bit αυτό έχει τιμή 0 (low), τότε ο χρονιστής θα αυξάνει την τιμή του κατά ένα σε κάθε κύκλο μηχανής. 1 1
ΚΑΤΑΧΩΡΗΤΗΣ ΕΙ ΙΚΩΝ ΛΕΙΤΟΥΡΓΙΩΝ (SPECIAL FUNCTION REGISTER ή SFR) TMOD MSB LSB GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 TIMER1 TIMER0 Bit Όνομα Περιγραφή λειτουργίας Χρονιστής/ Μετρητής 3 GATE0 2 C/T0 Όταν το bit αυτό έχει τιμή 1 (high), τότε ο χρονιστής θα λειτουργεί μόνο όταν δεχτεί το σήμα INT0 (P3.2 ήτοbit 2 της πόρτας 3) με τιμή 1 (high). Όταν το bit αυτό έχει τιμή 0 (low), τότε ο χρονιστής θα λειτουργεί ανεξάρτητα από την τιμή που διαβάζει το pin ΙΝΤ0. Όταν το bit αυτό έχει τιμή 1 (high), τότε ο χρονιστής θα μετράει συμβάντα που θα δέχεται στο pin T0 (P3.4 ήτοbit 4 της πόρτας 3). Όταν το bit αυτό έχει τιμή 0 (low), τότε ο χρονιστής θα αυξάνει την τιμή του κατά ένα σε κάθε κύκλο μηχανής. 1 1
ΚΑΤΑΧΩΡΗΤΗΣ ΕΙ ΙΚΩΝ ΛΕΙΤΟΥΡΓΙΩΝ (SPECIAL FUNCTION REGISTER ή SFR) TMOD MSB LSB GATE1 C/T1 T1M1 T1M0 GATE0 C/T0 T0M1 T0M0 TIMER1 TIMER0 M0, M1 : ΤΡΟΠΟΣ (MODE) ΛΕΙΤΟΥΡΓΙΑΣ GATE : ΕΝΕΡΓΟΠΟΙΗΣΗ Ή ΑΠΕΝΕΡΓΟΠΟΙΗΣΗ ΜΕΤΡΗΣΗΣ C/T : ΠΗΓΗ ΠΑΛΜΩΝ ΕΙΣΟ ΟΥ
ΛΟΓΙΚΗ ΕΛΕΓΧΟΥ ΧΡΟΝΙΣΤΩΝ/ΜΕΤΡΗΤΩΝ ΕΣΩΤΕΡΙΚΗ ΠΗΓΗ ΕΞΩΤΕΡΙΚΗ ΠΗΓΗ GATE=0, SW TIMER/COUNTER CONTROL (TR0 Ή TR1 ΕΝΕΡΓΟΠΟΙΟΥΝ ΛΕΙΤΟΥΡΓΙΑ ) GATE=1, HW TIMER/COUNTER CONTROL (INT0 Ή INT1 ΕΝΕΡΓΟΠΟΙΟΥΝ ΛΕΙΤΟΥΡΓΙΑ)
ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ 0 (MODE( 0) ΜΕΤΡΗΤΗΣ 13-bit ΕΣΩΤΕΡΙΚΟΙ (OSC/12) Ή ΕΞΩΤΕΡΙΚΟΙ (T0 ΉΤ1) ΠΑΛΜΟΙ TLX 5 bits THX 8 bits TFX INTERRUPT ΜΕΤΡΗΤΗΣ 13 bit (0 8191) TLX: ΜΕΤΡΗΣΗ 0 31 ΤΗX: ΜΕΤΡΗΣΗ 0-255
ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ 1 (MODE( 1) ΜΕΤΡΗΤΗΣ 16-bit ΕΣΩΤΕΡΙΚΟΙ (OSC/12) Ή ΕΞΩΤΕΡΙΚΟΙ (T0 ΉΤ1) ΠΑΛΜΟΙ TLX 8 bits THX 8 bits TFX INTERRUPT ΜΕΤΡΗΤΗΣ 16 bit (0 65535) TLX: ΜΕΤΡΗΣΗ 0 255 ΤΗX: ΜΕΤΡΗΣΗ 0-255
ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ 2 (MODE( 2) ΜΕΤΡΗΤΗΣ 8-bit ΑΥΤΟΜΑΤΗΣ ΕΠΑΝΑΦΟΡΤΩΣΗΣ ΕΣΩΤΕΡΙΚΟΙ (OSC/12) Ή ΕΞΩΤΕΡΙΚΟΙ (T0 ΉΤ1) ΠΑΛΜΟΙ INTERRUPT Κάθε φορά που ο TLX υπερχειλίζει (φτάνει την τιμή FFH), τότε αντί να αρχικοποιηθεί στην τιμή 00Η, αρχικοποιείται με την τιμή που περιέχει ο καταχωρητής THX (και συνεχίζεται η μέτρηση είτε του χρόνου είτε των συμβάντων.
ΤΡΟΠΟΣ ΛΕΙΤΟΥΡΓΙΑΣ 3 (MODE 3) ΙΑΙΡΟΥΜΕΝΟΣ ΧΡΟΝΙΣΤΗΣ (SPLIT TIMER) ΕΣΩΤΕΡΙΚΟΙ (OSC/12) Ή ΕΞΩΤΕΡΙΚΟΙ (T0 Ή Τ1) ΠΑΛΜΟΙ TIMER 0 INTERRUPT TIMER 1 ΕΣΩΤΕΡΙΚΟΙ (OSC/12) ΠΑΛΜΟΙ INTERRUPT TR1 ύο ανεξάρτητοι χρονιστές/μετρητές των 8bit. O πραγματικός Timer 1 μπορεί να λειτουργεί σε MODE 0, 1 ή 2, αλλά χωρίς τη δυνατότητα να εκκινήσει ή να σταματήσει, μιας και όλα τα bit ελέγχου του Timer 1 σχετίζονται πλέον με τον καταχωρητή TH0. Ο πραγματικός Timer 1 μπορεί επίσης να λειτουργεί σε MODE 3