Κατέβασμα παρουσίασης
Η παρουσίαση φορτώνεται. Παρακαλείστε να περιμένετε
1
ΜΙΚΡΟΕΛΕΓΚΤΕΣ-ΜΙΚΡΟΕΠΕΞΕΡΓΑΣΤΕΣ
Π. ΚΩΣΤΑΡΑΚΗΣ Β. ΧΡΙΣΤΟΦΙΛΑΚΗΣ ΤΜΗΜΑ ΦΥΣΙΚΗΣ ΠΑΝΕΠΙΣΤΗΜΙΟ ΙΩΑΝΝΙΝΩΝ Εισαγωγή μέρος 4
2
WinIDE Το πρόγραμμα WinIDE (Windows Integrated Development Environment) που παρέχει η Motorola για το μC M68HC705C8A είναι ένα γραφικό περιβάλλον για την ανάπτυξη, μετάφραση και αποσφαλμάτωση του κώδικα που θα επιμεληθεί ο χρήστης (προγραμματιστής). Για να γράψει ο προγραμματιστής τον κώδικα σε γλώσσα assembly πηγαίνει στο File menu και επιλέγει New File.
3
WinIDE Στο νέο παράθυρο που ανοίγει γράφεται το πρόγραμμα σε γλώσσα assembly με ορισμένη σύνταξη. Η σύνταξη των προγραμμάτων πρέπει να γίνεται σε στήλες, όπου κάθε στήλη απέχει από την προηγούμενη κατά ένα στηλοθέτη (TAB).
4
Filename.asm - δομή *********************************************** * exercise01.ASM - Sample code to test PortA.Data EQU $0000 ;pseudo operators PortA.Direction EQU $0004 ;comments ROM.Start EQU $0160 ;comments ORG ROM.Start BSET 0,PortA.Direction
5
Filename.asm - δομή ***********************************************
* Filename.asm (a1exercise12.asm) *Exercise # (Exercise 12) *Team # (Team A1) *Date (20/10/2014) Command1 ;comments Command2 ;comments Command3 ;comments …. Command n ;comments
6
Assemble/Compile file
Error OK
7
Asm-List-S19 Προκειμένου να φορτωθεί το πρόγραμμα στο uC, θα πρέπει ο κώδικας που υλοποιήθηκε από τον προγραμματιστή να μετατραπεί από μνημονικές εντολές σε γλώσσα μηχανής που καταλαβαίνει και είναι σε θέση να εκτελέσει η CPU. Ο assembler CASM05Z που παρέχει η Motorola για τη σειρά των μC 68HC05 ολοκληρώνει αυτή τη διαδικασία με την ανάγνωση του μνημονικού κώδικα και τη δημιουργία ενός αρχείου object (.s19) που περιλαμβάνει σε δυαδική μορφή τις εντολές και τα δεδομένα του μεταφρασμένου κώδικα, κατάλληλο να προγραμματίσει τη μνήμη του μικροελεγκτή με τη χρήση ενός programmer.
8
List file EX01PR01.asm Assembled with CASMW 29/7/2014 1:22:48 μμ PAGE 1 1 *********************************************** 2 * exercise01.ASM - Sample code to test *********************************************** PortA.Data EQU $ PortA.Direction EQU $ ROM.Start EQU $ Mask.Option1 EQU $1FF Mask.Option2 EQU $1FF Reset.Vector EQU $1FFE ORG ROM.Start
9
isc05cw simulator Το λογισμικό ICS05CW είναι ένας προσομοιωτής μη πραγματικού χρόνου. Η ταχύτητα με την οποία εκτελείται ο κώδικας στον προσομοιωτή είναι πολύ μικρότερη από την ταχύτητα εκτέλεσης του κώδικα από τον μC, ωστόσο αποτελεί ένα χρήσιμο «εργαλείο» για τον έλεγχο και την αποσφαλμάτωση του προγράμματος που θα υλοποιήσει ο προγραμματιστής. Η πρόσβαση στο Simulator γίνεται από το δεύτερο εικονίδιο (Debugger EXE1) που βρίσκεται δίπλα από το εικονίδιο του Assembler. Στο παράθυρο που ανοίγει κάνουμε αριστερό κλικ στο εικονίδιο simulation only.
11
isc05cw simulator Code Window: περιλαμβάνει τον κώδικα σε γλώσσα μηχανής. Από το Execute menu από την επιλογή Step μπορεί ο χρήστης να κάνει προσομοίωση του προγράμματος εκτελώντας κάθε μία εντολή κάθε φορά, ξεκινώντας από τη διεύθυνση μνήμης που δείχνει ο Program Counter. Από την επιλογή Multiple Step ξεκινάει μια συνεχής εκτέλεση εντολών (η επιλογή αυτή δεν εκτελεί εντολές σε πραγματικό χρόνο). Η επιλογή Reset Processor τοποθετεί στον Program Counter το περιεχόμενο του διανύσματος εκκίνησης που περιέχει τη διεύθυνση της έναρξης του προγράμματος. CPU Window: περιλαμβάνονται οι καταχωρητές της CPU. Για να αλλάξουμε την τιμή ενός καταχωρητή κάνουμε αριστερό κλικ στον αντίστοιχο καταχωρητή. CHIP Window: σ’αυτό το παράθυρο παρουσιάζονται τα λογικά επίπεδα των ακροδεκτών του μC. Τα βέλη που φαίνονται στους ακροδέκτες του μC δηλώνουν αν αυτοί είναι ακροδέκτες εισόδου ή εξόδου.
12
isc05cw simulator CYCLES Window: απεικονίζει το αριθμό των κύκλων μηχανής του μC που πέρασαν κατά τη διάρκεια εκτέλεσης του κώδικα στον προσομοιωτή. Για να υπολογίσουμε τον πραγματικό χρόνο εκτέλεσης του προγράμματος πολλαπλασιάζουμε τον αριθμό των κύκλων μηχανής με τη διάρκεια του χρόνου που απαιτεί ένας κύκλος μηχανής (για εσωτερικό ρολόι 2MHz: t=500nsec). Memory Window: χρησιμεύει για τον έλεγχο και τη τροποποίηση της μνήμης του μC. Για να αλλάξουμε μία τιμή σε μια διεύθυνση μνήμης κάνουμε αριστερό κλικ στο αντίστοιχο byte. Status Window: δέχεται και εκτελεί ένα σετ εντολών που υποστηρίζει ο simulator κατά την προσομοίωση ενός προγράμματος. (Για παράδειγμα η εντολή porta <n> βγάζει στην θύρα Α που έχει δηλωθεί σαν έξοδος την τιμή που ακολουθεί μετά την εντολή). Variable Window: στο παράθυρο αυτό προσθέτουμε μεταβλητές ή διευθύνσεις μνήμης για να γίνεται ευκολότερα ο έλεγχος της αλλαγής των τιμών τους κατά την προσομοίωση του προγράμματος.
13
Αρχικοποίηση Attempt to use invalid or uninitialized memory
STATUS WINDOW >INPUTA %
14
Συμβολισμοί Δεκαδικό: ! Δεκαεξαδικό: $ Δυαδικό: % Οκταδικό: @
LDA #$00 STA $04 LDA #$FF STA $05 LDA $00 STA $01 Το σύμβολο $ που αναγράφεται μπροστά από τον αριθμό δηλώνει αυτός είναι γραμμένος σε δεκαεξαδικό σύστημα. Δεκαδικό: ! Δεκαεξαδικό: $ Δυαδικό: % ASCII: ‘L’
15
Συμβολισμοί Το σύμβολο της δίεσης # πριν από το σύμβολο του αριθμητικού συστήματος, δηλώνει στον assembler αν ακολουθεί αριθμός ή διεύθυνση μνήμης. Π.χ. η εντολή LDA #$00 φορτώνει στον accumulator την δεκαεξαδικη τιμή 00, ενώ η εντολή LDA $00, φορτώνει στον accumulator τα περιεχόμενα διεύθυνσης μνήμης $00 LDA #$00 STA $04 LDA #$FF STA $05 LDA $00 STA $01
16
Μνημονικές εντολές assembly
Ο assembler μεταφράζει το πρόγραμμα που γράφτηκε σε μνημονικές εντολές σε γλώσσα μηχανής. Στη συνέχεια το πρόγραμμα τοποθετείται byte προς byte στη μνήμη του μC. Μνημονικές εντολές assembly Γλώσσα μηχανής LDA #$00 Α6 00 STA $04 Β7 04 LDA #$FF Α6 FF STA $05 Β7 05
17
Originate Όταν φορτώνουμε ένα πρόγραμμα σ’ έναν μC, θα πρέπει ο assembler να γνωρίζει σε ποια θέση στη μνήμη PROM θα μεταφέρει το πρόγραμμα, έτσι διαθέτει μία ψευδοεντολή η οποία ονομάζεται ORG (Originate – Τοποθέτηση). Κάθε πρόγραμμα έχει τουλάχιστον μία ψευδοεντολή ORG που καθορίζει το σημείο από το οποίο ξεκινάει η εκτέλεση του προγράμματος. Η μνήμη του μC C8A ξεκινάει από τη διεύθυνση Για να καταλάβει, λοιπόν, ο μC ότι θέλουμε να γράψουμε το πρόγραμμά μας από τη διεύθυνση και πέρα, θα πρέπει να του δώσουμε πριν από το πρόγραμμα την εντολή ORG $0160
18
Τερματισμός $0160 A6 LDA #$00 $0161 00 $0162 B7 STA $04 $0163 04 $0164 LDA #$FF $0165 FF $0166 STA $05 $0167 05 $0168 B6 LDA $00 $0169 $016A STA $01 $016B 01 $016C XX $016D $016E Το πρόγραμμά μας τελειώνει στη διεύθυνση 016Β16, ο μC όμως, δε σταματά την εκτέλεση του προγράμματος εκεί, αλλά συνεχίζει να εκτελεί το πρόγραμμα που βρίσκεται στις παρακάτω διευθύνσεις, όπου σε αυτές τις διευθύνσεις είναι λογικό να υπάρχουν τιμές που θα ληφθούν λανθασμένα ως εντολές, με απρόβλεπτες συνέπειες.
19
Τερματισμός - JMP Για τους παραπάνω λόγους χρησιμοποιούμε μια εντολή μεταφοράς ελέγχου η Η εντολή αυτή ονομάζεται JMP (JuMP to address). ORG $0160 $0160 LDA #$00 $0162 STA $04 $0164 LDA #$FF $0166 STA $05 $0168 LDA $00 $016Α STA $01 $016C JMP $0168
20
Reset Vector H CPU είναι κοινή για όλους τους μC της οικογένειας 68HC05, και για το λόγο αυτό στη μνήμη των μC οι δύο τελευταίες θέσεις μνήμης χρησιμοποιούνται για να υποδηλώσουν τη διεύθυνση της εκκίνησης του προγράμματος. Οι τελευταίες διευθύνσεις στο μC C8A είναι η 8190(1FFE) και η 8191(1FFF). Σ’ αυτές τις διευθύνσεις τοποθετείται η διεύθυνση αρχής του προγράμματος με τη μορφή: 01 $1FFE Reset Vector High Byte 60 $1FFF Reset Vector Low Byte
Παρόμοιες παρουσιάσεις
© 2024 SlidePlayer.gr Inc.
All rights reserved.