Εφαρμογέσ Μικροχπολογιςτών ςτισ Τηλεπικοινωνίεσ Έλεγχοσ ςειριακήσ θφρασ του 8051 (Serial Port)
8051 Serial Ports Port Bit Name Alternate Function P3.0 RxD Receive data for serial port P3.1 TxD Transmit data for serial port P3.2 INT0 External interrupt 0 P3.3 INT1 External interrupt 1 P3.4 T0 Timer / counter 0 external input P3.5 T1 Timer / counter 1 external input P3.6 WR External data memory write strobe P3.7 RD External data memory read strobe
Ειζαγωγή To baud rate τθσ κφρασ ρυκμίηεται με τθν βοικεια του Timer1, όπωσ κα δοφμε παρακάτω. Ο 8051 περιλαμβάνει μία ςειριακι κφρα θ οποία μπορεί να λειτουργιςει με διάφορουσ τρόπουσ (Modes) ςε μια μεγάλθ γκάμα ςυχνοτιτων. Η ουςιαςτικι λειτουργία τθσ ςειριακισ κφρασ είναι να παρζχει παράλλθλθ ςε ςειριακι μετατροπι των εξερχόμενων δεδομζνων (output data) και ςειριακι ςε παράλλθλθ μετατροπι των ειςερχόμενων δεδομζνων (input data). Η πρόςβαςθ του hardware ςτθν ςειριακι κφρα γίνεται μζςω των ακροδεκτϊν RxD (Receive Data) και TxD (Transmit Data). Αυτά τα pins είναι το 11 (P3.1) για το TxD και το 10 (P3.0) για το RxD. Η ςειριακι κφρα παρζχει πλιρωσ αμφίδρομθ (full duplex) επικοινωνία, δθλαδι ταυτόχρονθ αποςτολι και λιψθ δεδομζνων. Για τον προγραμματιςμό και τθν χριςθ τθσ ςειριακισ χρθςιμοποιοφμε δφο καταχωρθτζσ ειδικισ λειτουργίασ (SFR) τον SBUF και τον SCON. τον SBUF καταχωροφνται τα δεδομζνα προσ αποςτολι ι/και λιψθ. Ο SCON κακορίηει τουσ τρόπουσ λειτουργίασ τθσ ςειριακισ κφρασ.
Τα bits ηοσ καηατωρηηή SCON θαίνονηαι ζηο παρακάηω ζτήμα: Bit Σφμβολο Bit address SCON.7 SM0 9FH Serial Port mode bit 0 SCON.6 SM1 9EH Serial port mode bit 1 Περιγραφή SCON.5 SM2 9DH SCON.4 REN 9CH Serial port mode bit 2. Ενεργοποιεί τθν επικοινωνία του 8051 ςτα modes 2 και 3. To RI δε κα ενεργοποιθκεί εάν το 9 ο λαμβανόμενο bit είναι 0 Receiver enable. Πρζπει να τίκεται "1 " για τθ λιψθ χαρακτιρων SCON.3 TB8 9BH Transmit bit 8. Είναι το 9 ο bit που μεταδίδεται ςτα modes 2 και 3. Σίκεται "1" ι "0" μζςω software SCON.2 RB8 9AH Receive bit 8. Είναι το 9 ο bit που λαμβάνεται SCON.1 TI 99H Transmit interrupt flag Σίκεται "1" ςτο τζλοσ του χαρακτιρα μετάδοςθσ. Σίκεται "0" μζςω software SCON.0 RI 98H Receive interrupt flag Σίκεται "1" ςτο τζλοσ του χαρακτιρα λιψθσ. Σίκεται "0" μζςω software
Τα bits SM0 και SM1 καθορίζοσν ζε ηι Mode θα δοσλεύει η ζειριακή ζύμθωνα με ηον πίνακα ποσ θαίνεηαι παρακάηω: SM0 SM1 Mode Description Baud Rate 0 0 0 shift register F OSC /12 0 1 1 8-bit UART variable 1 0 2 9-bit UART F OSC /64 or F OSC /32 1 1 3 9-bit UART variable UART : Universal Asynchronous Receiver/Transmitter F OSC : υχνότθτα Κρυςτάλλου
Σο Baud Rate ςτα Mode 1 και 3, ρυκμίηεται με τθ βοικεια του Timer 1, τον οποίο λειτουργοφμε ςε Mode2 (auto-reload), και θ τιμι που βάηουμε ςτον ΣΗ1 υπολογίηεται με τθ βοικεια τθσ ςχζςθσ: BaudRate 2 32 12 SMOD 1 FOSC 256 ( TH 1 ) Σο SMOD1 είναι το bit 6 του καταχωτθτι PCON, και με τθ βοικεια του μποροφμε να διπλαςιάηουμε το Baud Rate κζτοντασ το απλά ςε 1. Η εξ οριςμοφ (default) τιμι αυτοφ του bit είναι 0. Λφνοντασ αυτι τθ ςχζςθ ωσ προσ ΣΗ1 ζχουμε: TH 1 256 2 384 SMOD1 F OSC BaudRate Από τθν τελευταία ςχζςθ παρατθροφμε ότι γνωρίηοντασ τθ ςυχνότθτα κρυςτάλλου (F osc ) και το επικυμθτό BaudRate, μποροφμε εφκολα να υπολογίςουμε τθν τιμι του TH1.
Αριθμηηικό παράδειγμα για ηις δύο διαθορεηικές ηιμές ηοσ SMOD1: Για Baudrate = 9600 bps και SMOD1 = 0 ζχουμε : 0 2 11,0592MHz 111,0592MHz TH1 256 256 256 3 384 9600bps 384 9600bps 253 Για Baudrate = 9600 bps και SMOD1 = 1 ζχουμε : 1 2 11,0592MHz 2 11,0592MHz TH1 256 256 256 6 384 9600bps 384 9600bps 250
F osc Baudrate TH1 Value (decimal) TH1 final (decimal hex) Recalculated Baud rate Deviation % 12MHz 9600 bps 252,75 253 FD 10417 bps 8,5 % 11,0592MHz 9600 bps 253 253 FD 9600 bps 0 % 11,0592MHz 2400 bps 244 244 F4 2400 bps 0 % 11,0592MHz 1200 bps 232 232 E8 1200bps 0 % 12MHz 2400 bps 242,979 243 F3 2404 bps 0,16 % 12MHz 1200 bps 229,958 230 E6 1202 bps 0,16 %
Σο bit REN ενεργοποιεί τθ λιψθ τθσ ςειριακισ κφρασ. Έτςι εάν κζλουμε να είναι ενεργοποιθμζνθ θ λιψθ τότε κζτουμε αυτό το bit 1, διαφορετικά το κζτουμε 0. Σο bit TI είναι θ ςθμαία τθσ διακοπισ αποςτολισ (Transmit Ιnterrupt flag). Η ςθμαία αυτι γίνεται αυτόματα 1 μόλισ ολοκλθρωκεί θ αποςτολι ενόσ χαρακτιρα από τθ ςειριακι κφρα. Η ςθμαία αυτι δεν γίνεται αυτόματα 0 και ζτςι αυτό πρζπει να γίνεται από το πρόγραμμα. Σο bit RI είναι θ ςθμαία τθσ διακοπισ λιψθσ (Receive Ιnterrupt flag). Η ςθμαία αυτι γίνεται αυτόματα 1 μόλισ ολοκλθρωκεί θ λιψθ ενόσ χαρακτιρα από τθ ςειριακι κφρα. Η ςθμαία αυτι δεν γίνεται αυτόματα 0 και ζτςι αυτό πρζπει να γίνεται από το πρόγραμμα.
Εργαζίες 1. Προγραμματίςτε τον Timer1 του 8051 να παράγει τον κατάλλθλο χρονιςμό για να μεταδίδουμε χαρακτιρεσ μζςω ςειριακισ κφρασ με ρυκμό 2400 bps. 2. Σροποποιιςτε το πρόγραμμα τθσ προθγοφμενθσ εργαςίασ ϊςτε να αποςτζλλει ςτθν ςειριακι κφρα το μινυμα ELECTRONICS.GR. 3. α) Nα γράψετε κϊδικα που να εμφανίηει ςτθν οκόνθ lcd του 8051 χαρακτιρεσ που λαμβάνονται μζςω ςειριακισ κφρασ χωρίσ χρήςη interrupt. β) Να επεκτακεί το πρόγραμμα ϊςτε να λειτουργεί ςωςτά για (16 < πλήθοσ χαρακτήρων <= 32). 4. Να γράψετε κϊδικα ςε assembly 8051 ϊςτε όταν πατθκεί το πλικτρο 'l' ςτον ςυνδεδεμζνο μζςω ςειριακισ κφρασ υπολογιςτι, να εμφανίηεται το προαποκθκευμζνο μινυμα ςτθ κζςθ μνιμθσ login και όταν πατθκεί το 'p' να εμφανίηεται το προαποκθκευμζνο μινυμα ςτθ κζςθ μνιμθσ 'password'. Ρυκμόσ Μετάδοςθσ ςειριακισ κφρασ = 9600bps 5. α) Να γράψετε πρόγραμμα για 8051 ϊςτε να λαμβάνει δεδομζνα από τον υπολογιςτι και να τα αποκθκεφει ςτθν μνιμθ RAM από τθν διεφκυνςθ 50h και άνω. Να τερματίηει τθν διαδικαςία με τθν λιψθ του χαρακτιρα 0Dh που κωδικοποιεί κατά ASCII τον χαρακτιρα 'Carriage Return'. Ρυκμόσ Μετάδοςθσ = 2400b/s. Με ποιοφσ τρόπουσ μπορεί να επιτευχκεί θ αποκικευςθ; β) Μετά τον τερματιςμό, ο 8051 κα πρζπει να είναι ςε κζςθ να ξαναλάβει μινυμα.