; Έλεγχος σημαίας λήψης (RCIF=0: άδειος buffer)

Σχετικά έγγραφα
LCD_LINE0 equ 0x000 ; Διεύθυνση της γραμμής 0 του LCD LCD_LINE1 equ 0x040 ; Διεύθυνση της γραμμής 1 του LCD

Εντολές PIC16F rrf <όνομα καταχωρητή>,a a=f ή a=w H εντολή πραγματοποιεί ολίσθηση προς τα δεξιά του καταχωρητή που ακολουθεί μέσω κρατουμένου

ΠΑΡΟΥΣΙΑΣΗ ΤΟΥ ΕΡΓΑΣΤΗΡΙΑΚΟΥ ΜΑΘΗΜΑΤΟΣ «ΣΥΣΤΗΜΑΤΑ ΨΗΦΙΑΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ» ή ΠΡΟΓΡΑΜΜΑΤΙΖΟΝΤΑΣ ΤΟΝ ΜΙΚΡΟΕΛΕΓΚΤΉ PIC16F877 ΤΗΣ MICROCHIP TECHNOLOGY INC

Καταχωρητής STATUS. IRP: Bit επιλογής περιοχής μνήμης (Bank) για την έμμεση διευθυνσιοδότηση 1= Bank2, Bank3 0= Bank0, Bank1

ΔΙΑΚΟΠΕΣ PΙC16F887(INTERRUPTS) Όταν σηματοδοτηθεί μια διακοπή στον PIC16F887, ο έλεγχος του προγράμματος μεταφέρεται στο τμήμα κώδικα που βρίσκεται

2. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΩΝ ΘΥΡΩΝ ΕΙΣΟ ΟΥ/ΕΞΟ ΟΥ ΤΟΥ PIC16F877-ΑΡΙΘΜΗΤΙΚΕΣ ΕΝΤΟΛΕΣ

Εφαρμογές μικροελεγκτών

Σπύρος Καζαρλής, Χειμώνας

Εντολές PIC16F887. Reg1=b' ' b' '

Οδηγώντας μια οθόνη υγρών κρυστάλλων Liquid Crystal Display

ΠΕΡΙΦΕΡΕΙΑΚΑ ΤΟΥ PIC16F887

1. ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ ΤΟΥ ΜΙΚΡΟΕΛΕΓΚΤΗ PIC16F877

Αρχιτεκτονική και προγραμματισμός του μικροελεγκτή PIC 16F877

Εισαγωγή στους μικροελεγκτές PIC

Αυτή η άσκηση έχει σαν σκοπό, να δείξει τον τρόπο με τον οποίο τίθεται σε λειτουργία η οθόνη LCD του αναπτυξιακού.

Είναι το πρωτόκολλο RS232 που χρησιμοποιείται στις σειριακές θύρες COM με τη διαφορά ότι εκτελείται σε επίπεδο τάσεων TTL. 2

ΕΙΣΑΓΩΓΗ. 1. Το λογισμικό MPLAB. 2. Υλικό προγραμματισμού και αποσφαλμάτωσης

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

Μικροεπεξεργαστές - Μικροελεγκτές Ψηφιακά Συστήματα

ΕΛΕΓΧΟΣ ΚΑΥΣΤΗΡΑ ΠΕΤΡΕΛΑΙΟΥ & ΠΕΡΙΒΑΛΛΟΝΤΟΣ ΧΩΡΟΥ

γρηγορότερα. Αν θέλουμε να μηδενίσουμε όλα τα υπόλοιπα bit μπορούμε να χρησιμοποιήσουμε την εντολή:

Αρχές Προγραμματισμού Πραγματικού Χρόνου

WDT και Power Up timer

Οργάνωση επεξεργαστή (1 ο μέρος) ΜΥΥ-106 Εισαγωγή στους Η/Υ και στην Πληροφορική

Γενική οργάνωση υπολογιστή «ΑΒΑΚΑ»

για τις ρυθμίσεις LabView μέσα από το κανάλι και του καλωδίου USB.

ΔΙΑΧΥΤΑ ΚΑΙ ΕΝΣΩΜΑΤΩΜΕΝΑ ΣΥΣΤΗΜΑΤΑ

ΑΣΚΗΣΗ 1 ΑΣΚΗΣΗ 1. Συγγραφή. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

ΕΙΣΑΓΩΓΗ. Αρχιτεκτονική Η/Υ ΗΜΟΣ ΜΠΟΛΑΝΑΚΗΣ

Electronics μαζί με τα συνοδευτικά καλώδια και το αισθητήριο θερμοκρασίας LM335 που περιέχονται

Σχεδίαση και υλοποίηση συστήματος συναγερμού με. μικροελεγκτή PIC. Πτυχιακή Εργασία του

Μετρήσεις και συλλογή δεδομένων (Data acquisition) με μικροελεγκτές. Εισαγωγή στο Arduino. Ηλεκτρομηχανολογικός εξοπλισμός διεργασιών

Έλεγχος της Σειριακής Θύρας

ίοδοι Εκποµπής Φωτός

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2013

ΑΡΧΙΤΕΚΤΟΝΙΚΗ HARDWARE ΥΠΟΛΟΓΙΣΤΙΚΩΝ ΣΥΣΤΗΜΑΤΩΝ

Συλλογή & Επεξεργασία Δεδομένων Εργαστήριο 2 USB και Σειριακή Επικοι- νωνία Σ Σειριακή Επικοινωνία

Σελίδα 1 από 11. Απαντήσεις στο φυλλάδιο 57 Ερώτηση: 1 η : Οι ακροδέκτες αυτοί χρησιµοποιούνται για:

Ψηφιακοί Υπολογιστές

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

ΘΕΜΑ : ΣΥΣΤΗΜΑΤΑ ΑΡΙΘΜΗΣΗΣ. ΔΙΑΡΚΕΙΑ: 1 περιόδους. 22/1/ :11 Όνομα: Λεκάκης Κωνσταντίνος καθ. Τεχνολογίας

12. Διακοπές Interrupts (IRQ)

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΟΥΣ ΥΠΟΛΟΓΙΣΤΕΣ

ΠΕΡΙΕΧΟΜΕΝΑ ΚΕΦΑΛΑΙΟ I: ΕΙΣΑΓΩΓΗ ΣΤΑ ΗΛΕΚΤΡΟΝΙΚΑ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2006

; Οι HL δείχνουν την επόµενη θέση µνήµης MVI A, 38H CMP H JNZ DO_FLMEM ; POP B. ; Ανάκτηση καταχωρητών απο το σωρό.

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 3: Εντολές λογικών πράξεων και εντολές κλήσης ρουτινών

Σ ή. : υαδικά. Ε ό. ή Ενότητα

ΡΟΜΠΟΤΙΚΗ. ΕΡΓΑΣΙΑ ΠΑΝΩ ΣΤΗΝ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΝΧΤ ΚΑΙ ΤΑ ΠΡΩΤΟΚΟΛΛΑ ΕΠΙΚΟΙΝΩΝΙΑΣ BLUETOOTH, I2C και serial communication

Περιεχόµενα. I Βασικές Γνώσεις 1

1 η Θεµατική Ενότητα : Δυαδικά Συστήµατα

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 5: Εξωτερικές διακοπές του 8051

Θέμα 1ο (3 μονάδες) Υλοποιήστε το ακoλουθιακό κύκλωμα που περιγράφεται από το κατωτέρω διάγραμμα

Κεφάλαιο 4 Σύνδεση Μικροεπεξεργαστών και Μικροελεγκτών ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

Μικροεπεξεργαστές. Σημειώσεις Μαθήματος Υπεύθυνος: Δρ Άρης Παπακώστας,

Εφαρμογές Σειριακής Επικοινωνίας

Κεφάλαιο 3 Αρχιτεκτονική Ηλεκτρονικού Τμήματος (hardware) των Υπολογιστικών Συστημάτων ΕΡΩΤΗΣΕΙΣ ΑΣΚΗΣΕΙΣ

6.1 Καταχωρητές. Ένας καταχωρητής είναι μια ομάδα από f/f αλλά μπορεί να περιέχει και πύλες. Καταχωρητής των n ψηφίων αποτελείται από n f/f.

Σκοπόςτης Διάλεξης. Εφαρμογή των χρονιστών για την ακριβή μέτρηση του χρόνου με την υλοποίηση του προγράμματος Real_Time_Clock.

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ. ΚΕΦΑΛΑΙΟ 4ο ΜΝΗΜΕΣ. (c) Αμπατζόγλου Γιάννης, Ηλεκτρονικός Μηχανικός, καθηγητής ΠΕ17

Πανεπιστήμιο Πατρών Τμήμα Φυσικής Εργαστήριο Ηλεκτρονικής. Ψηφιακά Ηλεκτρονικά. Αριθμητικά Συστήματα. Επιμέλεια Διαφανειών: Δ.

Τετάρτη 5-12/11/2014. ΣΗΜΕΙΩΣΕΙΣ 3 ου και 4 ου ΜΑΘΗΜΑΤΟΣ ΕΙΔΙΚΟΤΗΤΑ: ΤΕΧΝΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ ΜΑΘΗΜΑ: ΑΡΧΙΤΕΚΤΟΝΙΚΗ Η/Υ Α ΕΞΑΜΗΝΟ

7 η Θεµατική Ενότητα : Καταχωρητές, Μετρητές και Μονάδες Μνήµης

ΕΡΓΑΣΤΗΡΙΟ ΜΙΚΡΟΕΛΕΓΚΤΩΝ

ΠΛΗΡΟΦΟΡΙΚΗ I Ενότητα 6

Προηγμένοι Μικροεπεξεργαστές. Εργαστήριο 4 - Editor

ΨΗΦΙΑΚΑ ΣΥΣΤΗΜΑΤΑ Γ ΕΠΑΛ 14 / 04 / 2019

Εγχειρίδιο χρήσης του Άβακα

Υπολογιστές Ι. Άδειες Χρήσης. Εισαγωγή. Διδάσκοντες: Αν. Καθ. Δ. Παπαγεωργίου, Αν. Καθ. Ε. Λοιδωρίκης

ΘΕΜΑΤΑ & ΕΝΔΕΙΚΤΙΚΕΣ ΛΥΣΕΙΣ

ΑΝΑLOG TO DIGITAL CONVERTER (ADC)

ΕΡΓΑΣΤΗΡΙΟ 4 ΕΙΣΑΓΩΓΗ ΣΤΟN ARDUINO: ΨΗΦΙΑΚΗ ΕΙΣΟΔΟΣ/ΕΞΟΔΟΣ

Αρχιτεκτονική Υπολογιστών

ΥΠΟΛΟΓΙΣΤΕΣ Ι. Τα επιμέρους τμήματα Η ΟΜΗ TOY ΥΠΟΛΟΓΙΣΤΗ. Αναπαράσταση μεγεθών. Αναλογική αναπαράσταση ΚΕΝΤΡΙΚΗ ΜΝΗΜΗ ΜΟΝΑ Α ΕΛΕΓΧΟΥ

«ΜΙΚΡΟΫΠΟΛΟΓΙΣΤΕΣ» ΕΣΩΤΕΡΙΚΗ ΑΡΧΙΤΕΚΤΟΝΙΚΗ ΚΑΙ ΛΕΙΤΟΥΡΓΙΕΣ

10. Πληκτρολόγιο matrix 4x4

Ενσωµατωµένα Συστήµατα

Εργαστήριο Δομής και Λειτουργίας Μικροϋπολογιστών. Βοήθημα εκτέλεσης εργαστηριακής άσκησης 4: Ρουτίνες καθυστέρησης. [Συγγραφή ρουτίνας καθυστέρησης]

2ο ΓΕΛ ΑΓ.ΔΗΜΗΤΡΙΟΥ ΑΕΠΠ ΘΕΟΔΟΣΙΟΥ ΔΙΟΝ ΠΡΟΣΟΧΗ ΣΤΑ ΠΑΡΑΚΑΤΩ

Εισαγωγή στην Πληροφορική

Ηλεκτρολόγοι Μηχανικοί ΕΜΠ Λογική Σχεδίαση Ψηφιακών Συστημάτων Διαγώνισμα κανονικής εξέτασης 2017

Θεωρητικές Ερωτήσεις

Ενσωματωμένα Συστήματα

Οδηγίες EQL Desktop (rev ) ΣΥΝ ΕΣΗ S-710 ΜΕ ΚΑΛΩ ΙΟ USB ΠΡΟΚΑΤΑΡΚΤΙΚΕΣ ΕΡΓΑΣΙΕΣ

ΑΣΚΗΣΕΙΣ ΠΟΛΛΑΠΛΗΣ ΕΠΙΛΟΓΗΣ ΓΙΑ ΤΗ ΘΕΩΡΙΑ

ΥΠΟΥΡΓΕΙΟ ΠΑΙΔΕΙΑΣ ΚΑΙ ΠΟΛΙΤΙΣΜΟΥ ΔΙΕΥΘΥΝΣΗ ΑΝΩΤΕΡΗΣ ΚΑΙ ΑΝΩΤΑΤΗΣ ΕΚΠΑΙΔΕΥΣΗΣ ΥΠΗΡΕΣΙΑ ΕΞΕΤΑΣΕΩΝ ΠΑΓΚΥΠΡΙΕΣ ΕΞΕΤΑΣΕΙΣ 2009 ΑΠΑΝΤΗΣΕΙΣ

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΠΛΗΡΟΦΟΡΙΚΗ

Ι ΑΣΚΩΝ ΚΑΘΗΓΗΤΗΣ: ΚΑΘΗΓΗΤΗΣ ΕΦΑΡΜΟΓΩΝ ΠΑΡΑΡΤΗΜΑ ΚΑΣΤΟΡΙΑΣ ΤΕΙ ΥΤΙΚΗΣ ΜΑΚΕ ΟΝΙΑΣ

ΤΕΧΝΟΛΟΓΙΚΟ ΕΚΠΑΙΔΕΥΤΙΚΟ ΙΔΡΥΜΑ ΛΑΜΙΑΣ. A. Μετατροπή αριθμών 1. Μετατροπή αριθμών από δεκαδικό σε δυαδικό σύστημα αρίθμησης

Παραδείγματα Προγραμματισμού σε Assembly του TRN

Μέρος Β - Δίκτυα. Ασκήσεις I. Ποιος ο ρόλος του πομπού και του δέκτη στο μοντέλο επικοινωνίας που α- πεικονίζεται στο σχήμα που ακολουθεί; Μ Δεδομένα

Αρχιτεκτονική Υπολογιστών Εργαστήριο

ΕΡΓΑΣΤΗΡΙΟ ΑΡΧΙΤΕΚΤΟΝΙΚΗΣ Η/Υ

Ενότητα 4. Εισαγωγή στην Πληροφορική. Αναπαράσταση δεδοµένων. Αναπαράσταση πληροφορίας. υαδικοί αριθµοί. Χειµερινό Εξάµηνο

Οργάνωση Υπολογιστών (IΙI)

Περιεχόμενα. Πρώτο Κεφάλαιο. Εισαγωγή στα Ψηφιακά Συστήματα. Δεύτερο Κεφάλαιο. Αριθμητικά Συστήματα Κώδικες

8051 Interrupt Ports. Name Alternate Function

Στοιχεία αρχιτεκτονικής μικροεπεξεργαστή

Ανάπτυξη Μικρής Αυτόνομης Ρομποτικής Πλατφόρμας Οδηγούμενης μέσω Ασύρματης Σειριακής ιασύνδεσης ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ

Transcript:

**************************************************************************** *Πρόγραμμα μέτρησης θερμοκρασίας με το LM335 και απεικόνιση σtην οθόνη * *ενός υπολογιστή, με τον οποίο συνδέεται μέσω σειριακής θύρας RS232. * *Λογισμικό του Η/Υ: Οποιοδήποτε πρόγραμμα επικοινωνίας (π.χ. Hyperterminal)* * * * Όνομα αρχείου : temp232.asm * * Δημιουργία : Φεβρουάριος 2005 * *Τελευταία ενημέρωση: Μάρτιος 2005 * * Συγγραφέας : Α.Μαρμαρινός * **************************************************************************** #include "p16f877.inc" Συμπεριέλαβε το αρχείο δηλώσεων του επεξεργαστή **************************************************************************** *CONFIG: Ρύθμιση διαφόρων παραμέτρων του μικροελεγκτή * * CP: Code Protect - Προστασία κώδικα * * DEBUG: In Circuit Debugger Mode - Κατάσταση εκσφαλμάτωσης * * WRT: FLASH Program Memory Write Enable - Επίτρεψη εγγραφής στη μνήμη * * CPD: EE Memory Code Protect - Προστασία κώδικα στη μνήμη EEPROM * * LVP: Low Voltage Programing - Προγραμματισμός με χαμηλή τάση * * BODEN: Brown out Detect * * PWRTE: Power up timer Enable * * WDT: Watchdog timer * * RC_OSC: RC Oscilator - Ταλαντωτής RC * * HS_OSC: High speed crystal Oscilator - Ταλαντωτής υψηλής συχνότητας * * XT_OSC: Crystal Oscilator - Κρυσταλλικός ταλαντωτής * * LP_OSC: Low Power Crystal Oscilator - Ταλαντωτής χαμηλής ισχύος * **************************************************************************** CONFIG h'3db9' _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_ON & _BODEN_OFF & _PWRTE_OFF & _WDT_OFF & _XT_OSC **************************************************************************** Δηλώσεις Καταχωρητών - Μεταβλητών του προγράμματος Διάφοροι καταχωρητές TABLE_INDEX equ 0x020 Δείκτης για τους πίνακες μηνυμάτων COUNT equ 0x021 Ένας μετρητής DELAY equ 0x022 Χρήση στη ρουτίνα DELAY500 X_DELAY equ 0x023 Χρήση στη ρουτίνα X_DELAY500 ADRES equ 0x024 Εκεί αποθηκεύεται το αποτέλεσμα της μετατροπής A/D Καταχωρητές για τη μετατροπή από δυαδικό σε BCD BCD100 equ 0x030 Για την αποθήκευση των εκατοντάδων BCD10 equ 0x031 Για την αποθήκευση των δεκάδων BCD1 equ 0x032 Για την αποθήκευση των μονάδων Για την επιλογή των μηνυμάτων MESG equ 0x028 Εδώ αποθηκεύεται ο κωδικός κάθε μηνύματος MESG0 equ B'00000001' Κωδικός του μηνύματος 0 MESG1 equ B'00000010' Κωδικός του μηνύματος 1 MESG2 equ B'00000100' Κωδικός του μηνύματος 2 MESG3 equ B'00001000' Κωδικός του μηνύματος 3 MESG4 equ B'00010000' Κωδικός του μηνύματος 4 MESG5 equ B'00100000' Κωδικός του μηνύματος 5 MESG6 equ B'01000000' Κωδικός του μηνύματος 6 Program start ORG 0x0000 Θέση του RESET vector RESET goto START Ρουτίνα εξυπηρέτησης διακοπών ORG 0x0004 Θέση του Interrupt vector INTERRUPT goto INTERRUPT Αρχικοποίηση καταχωρητών του επεξεργαστή. Aρχικοποίηση μονάδας A/D START POWER_ON Reset (Αρχή του προγράμματος) BANKSEL PORTD Επιλογή τμήματος μνήμης 0 (εκεί βρίσκεται ο PORTD) clrf STATUS Εκκαθάριση του Status

clrf INTCON Εκκαθάριση σημαιών διακοπών, απενεργοποίηση διακοπών clrf PCLATH Χρήση του χαμηλότερου μέρους της μνήμης 2KByte movlw B'01000001' Ρολόι μετατροπής:fosc/8, Ενεργοποίηση A/D,... movwf ADCON0...δειγματοληψία από το κανάλι 0 BANKSEL ADCON1 Επιλογή τμήματος μνήμης 1 (εκεί βρίσκεται ο ADCON1) movlw B'00001111' Αριστερή στοιχιση, 1 αναλογική είσοδος... movwf ADCON1...RA3(=5V) και RA2(=2.45V) τάσεις αναφοράς bcf STATUS, RP0 Επιλογή τμήματος μνήμης 0 call USART_INIT Αρχικοποίηση σειριακής επικοινωνίας DISPMSG Απεικόνιση εισαγωγικών μυνημάτων call LFCR DISPMSG movlw MESG5 Φόρτωσε τον κωδικό του μηνύματος 5 (1ο ΤΕΕ) call TABLE_MSG Απεικόνισε το μήνυμα call LFCR Αλλαγή γραμμής movlw MESG6 Φόρτωσε τον κωδικό του μηνύματος 6(3ο ΣΕΚ) call TABLE_MSG Απεικόνισε το μήνυμα call LFCR Αλλαγή γραμμής movlw h'09' Χαρακτήρας ελέγχου 'Horizontal TAB' Αποστολή χαρακτήρα movlw MESG2 Φόρτωσε τον κωδικό του μηνύματος 2 (Σχεδίαση) call TABLE_MSG Απεικόνισε το μήνυμα movlw '-' movlw MESG3 Φόρτωσε τον κωδικό του μηνύματος 3 (Κατασκευή) call TABLE_MSG Απεικόνισε το μήνυμα call LFCR Αλλαγή γραμμής movlw h'09' Χαρακτήρας ελέγχου 'Horizontal TAB' Αποστολή χαρακτήρα movlw MESG4 Φόρτωσε τον κωδικό του μηνύματος 4 (Α.Μαρμαρινός) call TABLE_MSG Απεικόνισε το μήνυμα call LFCR Αλλαγή γραμμής movlw MESG0 Φόρτωσε τον κωδικό του μηνύματος 5 (Εργαστήριο ΣΜΕΔ) call TABLE_MSG Απεικόνισε το μήνυμα call LFCR Αλλαγή γραμμής movlw MESG1 Φόρτωσε τον κωδικό του μηνύματος 1(Θερμ/σία: οc) call TABLE_MSG Απεικόνισε το μήνυμα movlw H'08' Δύο θέσεις πίσω για την απεικόνιση της Θερμοκρασίας στη σωστή θέση (H'08'=ASCII'Backspace') **** Διαδικασία A/D μετατροπής επεξεργασίας και απεικόνισης των μετρήσεων **** BANKSEL PORTB Επιλογή της περιοχής μνήμης 0 Loop bsf ADCON0,GO Έναρξη μετατροπής A/D στο κανάλι 0 Wait btfss PIR1,ADIF Αναμονή για την ολοκλήρωση της μετατροπής goto Wait movf ADRESH,W Διάβασε το αποτέλεσμα της μετατροπής... movwf ADRES...και αποθήκευσέ το στον καταχωρητή ADRES bcf STATUS, C ΜΗΔΕΝΙΣΜΌΣ C movlw h'1c' - subwf ADRES, F ΑΦΑΙΡΕΣΗ (ADRES-1C) (δηλ d'28') btfss STATUS, C - (2.73-2.45)*(255/2.55)=28 goto NEGATIVE Αν ο αριθμός είναι αρνητικός πήγαινε στην κατάλληλη ρουτίνα movf ADRES,W Μεταφορά του ADRES στον W call bin2bcd8 Κλήση της υπορουτίνας μετατροπής από δυαδικό σε BCD movlw H'08' Τρείς θέσεις πίσω για την απεικόνιση της Θερμοκρασίας στη σωστή θέση (H'08'=ASCII'Backspace') Απεικόνιση εκατοντάδων movf BCD100, W Ανάγνωση της BCD τιμής των εκατοντάδων addlw H'30' Πρόσθεση της ASCII τιμής του αριθμού 0 Απεικόνιση του αριθμού Απεικόνιση δεκάδων

DISP movf BCD10, W Ανάγνωση της BCD τιμής των δεκάδων addlw H'30' Πρόσθεση της ASCII τιμής του αριθμού 0 Απεικόνιση του αριθμού Απεικόνιση μονάδων movf BCD1, W Ανάγνωση της BCD τιμής των μονάδων addlw H'30' Πρόσθεση της ASCII τιμής του αριθμού 0 Απεικόνιση του αριθμού btfsc PIR1,RCIF call CLEARSCREEN Έλεγχος σημαίας λήψης (RCIF=0: άδειος buffer) NEGATIVE movlw h'ff' call X_DELAY500 Καθυστέρηση μέχρι την επόμενη μέτρηση call X_DELAY500 Συνολικά (255*0.5)+3*(165*0.5)=375 msec call X_DELAY500 call X_DELAY500 bcf PIR1,ADIF Εκκαθάριση της σημαίας ολοκλήρωσης της μετατροπής goto Loop Επανάληψη της διαδικασίας movlw H'08' Τρείς θέσεις πίσω για την απεικόνιση της Θερμοκρασίας στη σωστή θέση movlw '-' Απεικόνιση του '-' movf ADRES, W Μεταφορά του ADRES στον W sublw H'FF' Αντιστροφή του αριθμού:αφαίρεση FF-W -> W addlw H'1' πρόσθεση W+1 -> W movwf ADRES Μεταφορά στον ADRES call bin2bcd8 Κλήση της υπορουτίνας μετατροπής από δυαδικό σε BCD goto DISP Η συνέχεια είναι όπως και στους θετικούς Αποστολή μηνύματος χρησιμοποιώντας πίνακα TABLE_MSG movwf MESG movlw 0 Δείκτης αρχής του πίνακα μηνύματος DISP_MSG movwf TABLE_INDEX Αποθήκευση του δείκτη btfsc MESG,0 - call MSG0 btfsc MESG,1 call MSG1 btfsc MESG,2 call MSG2 Εύρεση του τρέχοντος μηνύματος από την τιμή btfsc MESG,3 του καταχωρητή MESG call MSG3 btfsc MESG,4 call MSG4 btfsc MESG,5 call MSG5 btfsc MESG,6 call MSG6 - andlw 0x0FF Έλεγχος αν έφθασε στο τέλος του μηνύματος btfsc STATUS, Z (στο τέλος του μηνύματος ενεργοποιείται η σημαία Ζ) goto TABLE_MSG_END Αν έφθασε στο τέλος, επέστρεψε Απεικόνιση χαρακτήρα movf TABLE_INDEX, W Επόμενος χαρακτήρας addlw 1 goto DISP_MSG TABLE_MSG_END Πίνακες μηνυμάτων για απεικόνιση MSG0 Μήνυμα "ΕΡΓΑΣΤΗΡΙΟ ΣΜΕΔ"

MSG0_END retlw 'Γ' retlw 'A' retlw 'T' retlw 'H' retlw 'I' retlw 'O' retlw 'Δ' Πήγαινε στον χαρακτήρα που περιέχεται στον W MSG1 Μήνυμα "ΘΕΡΜ/ΣΙΑ : oc" retlw 'Θ' retlw '/' retlw 'I' retlw 'A' retlw ':' retlw H'B0' retlw 'C' MSG1_END MSG2 Μήνυμα "Σχεδίαση" retlw 'χ' retlw 'ε' retlw 'δ' retlw 'ί' retlw 'σ' retlw 'η' MSG2_END Πήγαινε στον χαρακτήρα που περιέχεται στον W Πήγαινε στον χαρακτήρα που περιέχεται στον W MSG3 Μήνυμα "Κατασκευή" retlw 'K' retlw 'τ' retlw 'σ' Πήγαινε στον χαρακτήρα που περιέχεται στον W

MSG3_END retlw 'κ' retlw 'ε' retlw 'υ' retlw 'ή' MSG4 Μήνυμα "Α. Μαρμαρινός" Πήγαινε στον χαρακτήρα που περιέχεται στον W DT " A. M",.223,.238,.234,.223,.238,.231,.235,"os " retlw 'A' retlw '.' retlw 'ρ' retlw 'μ' retlw 'ρ' retlw 'ι' retlw 'ν' retlw 'ό' retlw 'ς' MSG4_END MSG5 Μήνυμα "1o TEE N.ΣΜΥΡΝΗΣ" retlw '1' retlw H'B0' retlw 'T' retlw '.' retlw 'Y' retlw 'H' MSG5_END MSG6 Μήνυμα "3o ΣΕΚ N.ΣΜΥΡΝΗΣ" retlw '3' retlw H'B0' retlw 'K' retlw '.' retlw 'Y' retlw 'H' MSG6_END Πήγαινε στον χαρακτήρα που περιέχεται στον W Πήγαινε στον χαρακτήρα που περιέχεται στον W

Υπορουτίνες της σειριακής επικοινωνίας USART_INIT Αρχικοποίηση της σειριακής επικοινωνίας Μπορεί να προσαρμοστεί στην κάθε εφαρμογή (baud rate, κτλ.) Εδώ έχει ρυθμιστεί για ασύγχρονη επικοινωνία 9600,8,Ν,1 OK USART_INIT bcf STATUS,RP0 Επιλογή τμήματος μνήμης 0 movlw 0xFF movwf PORTC Όλα τα bit της θύρας C σε κατάσταση High bsf STATUS,RP0 Επιλογή τμήματος μνήμης 1 movwf TRISC Όλα τα bit της Θύρας C ορίζονται ως είσοδοι movlw 0x24 Ενεργοποίηση μονάδας εκπομπής USART, movwf TXSTA με επιλογή υψηλού ρυθμού μετάδοσης movlw D'25' movwf SPBRG Ρύθμιση για ρυθμό μετάδοσης 9600bps bcf STATUS,RP0 Επιλογή τμήματος μνήμης 0 movlw 0x90 Ενεργοποίηση σειριακής θύρας (RC6,RC7), movwf RCSTA Ενεργοποίηση συνεχούς λήψης, SENDCHAR Αποστολή του χαρακτήρα που βρίσκεται στον W OK SENDCHAR btfss PIR1,TXIF Έλεγχος σημαίας διακοπής (TXIF=1: άδειος buffer) goto SENDCHAR movwf TXREG Αποστολή χαρακτήρα CLEARSCREEN Λήψη χαρακτήρα, έλεγχος αν είναι ο 'c' και αν είναι, καθαρισμός της οθόνης. OK CLEARSCREEN movf RCREG,W Μεταφορά χαρακτήρα στον W sublw 'c' Αφαίρεση του ASCII κωδικού του χαρακτήρα 'c' btfss STATUS,Z Έλεγχος αν το αποτέλεσμα της αφαίρεσης είναι 0 goto WRONGCHAR Αν δεν είναι, επέστρεψε movlw H'0C' Αν είναι στείλε το χαρακτήρα ελέγχου "Form Feed" goto DISPMSG Πήγαινε στο τμήμα απεικόνισης εισαγ. μηνυμάτων WRONGCHAR LFCR Άλλαξε γρμμή και πήγαινε στην αρχή της OK LFCR movlw H'0A' Αποστολή χαρακτήρα ελέγχου (Line feed) movlw H'0D' Αποστολή χαρακτήρα ελέγχου (Carriage ) **************************************************************************** Ρουτίνα χρονικής καθυστέρησης Η διάρκεια ενός κύκλου είναι 1 μsec για κρύσταλλο 4MHz Fosc = 4MHz Cycle_time= 1/(Fosc / 4) = 1/[(4*10^6)/ 4] = 1μsec Delay_time = ((DELAY_value * 3) + 4) * Cycle_time DELAY_value = (Delay_time - (4 * Cycle_time)) / (3 * Cycle_time)

π.χ. (για κρύσταλλο 4MHz) Delay_time = ((32 * 3) + 4) * 1μsec = 100μsec DELAY_value = (500μsec - 4) / 3 = 165.33 = 165 Ρουτίνα DELAY500 : Καθυστέρηση 500 μsec Ρουτίνα Χ_DELAY500 : Καθυστέρηση Χ*500 μsec, όπου Χ είναι το περιεχόμενο του W DELAY500 movlw D'165' +1 1 cycle movwf DELAY +2 1 cycle DELAY500_LOOP DECFSZDELAY, F step 1 1 cycle goto DELAY500_LOOP step 2 2 cycles DELAY500_END +3 2 cycles X_DELAY500 movwf X_DELAY +1 1 cycle X_DELAY500_LOOP call DELAY500 step1 wait 500μsec DECFSZ X_DELAY, F step2 1 cycle goto X_DELAY500_LOOP step3 2 cycles X_DELAY500_END +2 2 cycles bin2bcd8 Ρουτίνα μετατροπής ενός 8-bit αριθμού σε 3-ψήφιο BCD Μετατρέπει το περιεχόμενο του W και αποθηκεύει τις εκατοντάδες στον καταχωρητή BCD100, τις δεκάδες στον BCD10 και τις μονάδες στον BCD1 Π.χ. ο αριθμός h'c2'=b'11000010'=d'194' μετατρέπεται σε (01,09,04) δηλ. 1 εκατοντάδα, 9 δεκάδες, 4 μονάδες ** bin2bcd8 clrf BCD100 Μηδένισε τους καταχωρητές που θα γραφεί το αποτέλεσμα clrf BCD10 clrf BCD1 bcf STATUS,C Μηδένισε τη σημαία κρατουμένου EKATONTADES Υπολογισμός εκατοντάδων addlw -.100 Αφαίρεσε μια εκατοντάδα btfss STATUS,C Αρνητικό αποτέλεσμα goto DEKADES Αν ναι, τέλειωσαν οι εκατοντάδες - υπολόγισε τις δεκάδες incf BCD100, F Αν όχι, αύξησε το μετρητή εκατοντάδων... goto EKATONTADES...και επανέλαβε DEKADES Υπολογισμός δεκάδων addlw.100 Επανέφερε τον αριθμό bcf STATUS,C Μηδένισε τη σημαία κρατουμένου again addlw -.10 Αφαίρεσε μια δεκάδα btfss STATUS,C Αρνητικό αποτέλεσμα goto MONADES Αν ναι, τέλειωσαν οι δεκάδες και μένουν οι μονάδες incf BCD10, F Αν όχι, αύξησε το μετρητή δεκάδων... goto again... και επανέλαβε MONADES addlw.10 Επανέφερε τον αριθμό movwf BCD1 Έχουν μείνει μόνο οι μονάδες, οπότε αποθήκευσέ τις END Τέλος του προγράμματος