ΑΣΚΗΣΗ 4 Ενδείκτης 7 τοµέων
Σκοπός της άσκησης Μελέτη ενδείκτη 7 τοµέων Είδη ενδείκτη 7 τοµέων Συνδεσµολογίες ιακοπτική λειτουργία BJT Απεικόνιση αριθµών ή λατινικών χαρακτήρων µέσω προγράµµατος ηµιουργία πίνακα στη µνήµη του µc Άντληση δεδοµένων από πίνακα µε τη χρήση του index
Πρόβληµα Στους ακροδέκτες 0-6 της θύρας Β του µεείναι συνδεδεµένος ένας ενδείκτης 7 τοµέων. Να γραφεί πρόγραµµα που θα απεικονίζει τους αριθµούς 0,1,2,3,..,9 στον ενδείκτη κάθε ένα δευτερόλεπτο. Η διαδικασία αυτή να επαναλαµβάνεται συνεχώς.
Ενδείκτης 7 τοµέων 10 9 8 7 6 G F GND A B A F B E E D G D GND C DP C DP 1 2 3 4 5
Είδη ενδείκτη 7 τοµέων A B C D E F G DP A B C D E F G DP Κοινής καθόδου Κοινής ανόδου
Συνδεσµολογία ενδείκτη 7 τοµέων A B C A B C 0 0 1 1 D E F G DP D E F G DP Common Cathode Vdd Common Anode
Κύκλωµα άσκησης MCU PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTB0 Ra Rb Rc Rd Re Rf Rg 470R 470R 470R 470R 470R 470R 470R F E Gnd A G D B C DP PTD5 Rb 470R
Ηδιακοπτική λειτουργία του BJT Vin Rb Vdd Rc Vdd Vdd Rc Rc Vin= 0 Vin= 1 I I I b c c = β sat = I b V dd ic > sat β V R V V V V > R β R c led in be dd led b c β:κέρδος τάσης (Typ.=100)
Πίνακας οδήγησης ενδείκτη ΑΠΕΙΚΟΝΙΖΟΜΕΝΟΣ PTB6 PTB5 PTB4 PTB3 PTB2 PTB1 PTB0 ΑΡΙΘΜΟΣ SEG A SEG B SEG C SEG D SEG E SEG F SEG G 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 A 2 1 1 0 1 1 0 1 3 1 1 1 1 0 0 1 F G B 4 0 1 1 0 0 1 1 5 1 0 1 1 0 1 1 E D C 6 1 0 1 1 1 1 1 DP 7 1 1 1 0 0 0 0 8 1 1 1 1 1 1 1 9 1 1 1 1 0 1 1
Αριθµοί στον ενδείκτη A F G B E D C DP
Αποθήκευση πίνακα στη µνήµη FLASH ORG $8300 ;Table Start FCB %01111110 ;0 FCB %00110000 ;1 FCB %01101101 ;2 FCB %01111001 ;3 FCB %00110011 ;4 FCB %01011011 ;5 FCB %01011111 ;6 FCB %01110000 ;7 FCB %01111111 ;8 FCB %01111011 ;9
Άντληση δεδοµένων από πίνακα LDA $8300,X Acc $(8300+X) X=0 Acc= 00111111 X=1 Acc= 00000110. ORG $8300 ;Table Start FCB %01111110 ;0 FCB %00110000 ;1 FCB %01101101 ;2 FCB %01111001 ;3 FCB %00110011 ;4 FCB %01011011 ;5 FCB %01011111 ;6 FCB %01110000 ;7 FCB %01111111 ;8 FCB %01111011 ;9
Άντληση δεδοµένων από πίνακα LDA TABLE,X Acc $(8300+X) X=0 Acc= 00111111 X=1 Acc= 00000110. TABLE FCB %01111110 ;0 FCB %00110000 ;1 FCB %01101101 ;2 FCB %01111001 ;3 FCB %00110011 ;4 FCB %01011011 ;5 FCB %01011111 ;6 FCB %01110000 ;7 FCB %01111111 ;8 FCB %01111011 ;9
ΗεντολήCLRX Εντολή Σύνταξη CLRX (CLeaR IndeX) CLRX (Χωρίς όρισµα) Αποτέλεσµα Μηδενισµός του περιεχοµένου του καταχωρητής X (X=0)
ΗεντολήCLRA Εντολή Σύνταξη CLRA (CLeaR Accumulator) CLRA (Χωρίς όρισµα) Αποτέλεσµα Μηδενισµός του περιεχοµένου του καταχωρητής A (A=0)
ΗεντολήCLR Εντολή Σύνταξη CLR (CLeaR register) CLRX ιεύθυνση µνήµης Παράδειγµα CLR $0040 CLR COUNTER CLR PORTA.DATA Αποτέλεσµα Μηδενισµός του περιεχοµένου του καταχωρητής X (X=0)
Πρόγραµµα START CLRX LOOP LDA TABLE,X STA PORTB.DATA JSR DELAY.1SEC INCX JMP LOOP TABLE FCB %01111110 FCB %00110000 FCB %01101101 FCB %01111001 FCB %00110011 FCB %01011011 FCB %01011111 FCB %01110000 FCB %01111111 FCB %01111011
Εντολή ΗεντολήCMPX CMPX (CoMPare index) Σύνταξη CMPX Αριθµός CMPX ιεύθυνση Μνήµης Παράδειγµα CMPX #!9 ;Χ-9 CMPX $0040 Αποτέλεσµα Κάνει αφαίρεση της τιµής του καταχωρητή Χ µε έναν αριθµό ή µε το περιεχόµενο µιας διεύθυνσης, χωρίς να επηρεάζει την αρχική τιµή του Χ
Εντολή ΗεντολήCMPΑ CMPΑ (CoMPare Αccumulator) Σύνταξη CMPA Αριθµός CMPA ιεύθυνση Μνήµης Παράδειγµα CMPA #!9 ;Acc-9 CMPA $0040 Αποτέλεσµα Κάνει αφαίρεση της τιµής του καταχωρητή A µε έναν αριθµό ή µε το περιεχόµενο µιας διεύθυνσης, χωρίς να επηρεάζει την αρχική τιµή του Χ
ΗεντολήBLS Εντολή BLS (Branch if Lower or Same) Σύνταξη BLS Ετικέτα Παράδειγµα BLS LOOP Αποτέλεσµα Μεταπήδηση στο σηµείο του προγράµµατος που δείχνει η ετικέτα εφόσον η ισχύει η συνθήκη 0
ΗεντολήBLO Εντολή BLO (Branch if LOwer) Σύνταξη BLO Ετικέτα Παράδειγµα BLO LOOP Αποτέλεσµα Μεταπήδηση στο σηµείο του προγράµµατος που δείχνει η ετικέτα εφόσον η ισχύει η συνθήκη < 0
ΗεντολήBHS Εντολή BHS (Branch if Higher or Same) Σύνταξη BHS Ετικέτα Παράδειγµα BHS LOOP Αποτέλεσµα Μεταπήδηση στο σηµείο του προγράµµατος που δείχνει η ετικέτα εφόσον η ισχύει η συνθήκη 0
ΗεντολήBHI Εντολή BHI (Branch if HIgher) Σύνταξη BHI Ετικέτα Παράδειγµα BHI LOOP Αποτέλεσµα Μεταπήδηση στο σηµείο του προγράµµατος που δείχνει η ετικέτα εφόσον η ισχύει η συνθήκη >0
START CLRX LOOP LDA TABLE,X STA PORTB.DATA JSR DELAY.1SEC INCX CMPX #!9 BLS LOOP Πρόγραµµα TABLE FCB %01111110 FCB %00110000 FCB %01101101 FCB %01111001 FCB %00110011 FCB %01011011 FCB %01011111 FCB %01110000 FCB %01111111 FCB %01111011 JMP START
START CLRX LOOP LDA TABLE,X STA PORTB.DATA JSR DELAY.1SEC INCX CMPX #!9 BHI START Πρόγραµµα TABLE FCB %01111110 FCB %00110000 FCB %01101101 FCB %01111001 FCB %00110011 FCB %01011011 FCB %01011111 FCB %01110000 FCB %01111111 FCB %01111011 JMP LOOP BEQ
ιάγραµµα ροής ΑΡΧΗ PTD5 = 1 PTD5: Εξοδος PTB[0..6] = 0 PTB[0..6]: ΕΞΟ ΟΙ ΛΗΨΗ Ε ΟΜΕΝΩΝ ΑΠ ΤΟΝ ΠΙΝΑΚΑ ΜΕ ΤΟΝ Χ ΕΓΓΡΑΦΗ Ε ΟΜΕΝΩΝ ΣΤΗ ΘΥΡΑ Β DELAY 1SEC ΜΗ ΕΝΙΣΜΟΣ ΤΟΥ Χ ΑΥΞΗΣΗ ΚΑΤΑ 1 ΤΟΥ Χ χ 9 ΟΧΙ
PORTB.DATA EQU $0001 PORTD.DATA EQU $0003 PORTB.DIRECTION EQU $0005 PORTD.DIRECTION EQU $0007 COUNTER1 EQU $0040 COUNTER2 EQU $0041 COUNTER3 EQU $0042 ROM.START EQU $8000 RESET.VECTOR EQU $FFFE Πρόγραµµα Display: ON InitPorts ORG ROM.START BSET 0,$001F MOV #$1F,$003C BSET 5,PORTD.DATA BSET 5,PORTD.DIRECTION CLR PORTB.DATA MOV #%01111111,PORTB.DIRECTION
Πρόγραµµα START CLRX LOOP LDA TABLE,X STA PORTB.DATA JSR DELAY.1SEC INCX CMPX #!9 BLS LOOP JMP START DELAY.1SEC MOV LOAD.COUNTER2 MOV LOAD.COUNTER1 MOV DELAY.LOOP DBNZ DBNZ DBNZ RTS #!55,COUNTER3 #!100,COUNTER2 #!180,COUNTER1 COUNTER1,DELAY.LOOP COUNTER2,LOAD.COUNTER1 COUNTER3,LOAD.COUNTER2
Πρόγραµµα TABLE FCB %01111110 FCB %00110000 FCB %01101101 FCB %01111001 FCB %00110011 FCB %01011011 FCB %01011111 FCB %01110000 FCB %01111111 FCB %01111011 ORG FDB RESET.VECTOR ROM.START
Ανακεφαλαίωση Μονάδα εξόδου: Ενδείκτης 7 τοµέων Συνδεσµολογία του ενδείκτη Έλεγχος ON-OFF του display µέσω BJT Συγγραφή κώδικα για την απεικόνιση αριθµών στον ενδείκτη Αποθήκευση πίνακα στη µνήµη προγράµµατος Χρήση του καταχωρητή Χ ως δείκτη Εντολές CLR,CLRX,CLRA,CMPX,CMPA,BLS,BLO,BHS,BHI
Εργασία στους Η/Υ Στους ακροδέκτες 0-6 της θύρας Β του µε είναι συνδεδεµένος ένας ενδείκτης 7 τοµέων. Να γραφεί πρόγραµµα που θα απεικονίζει τους αριθµούς 0,1,2,3,..,9 στον ενδείκτη. Η αύξηση αυτή θα γίνεται µε τοπάτηµα ενός διακόπτη που είναι συνδεδεµένος στον ακροδέκτη PTC0. Η διαδικασία αυτή να επαναλαµβάνεται συνεχώς. Ελέγξτε και σηµειώστε τις παρατηρήσεις σας στη λειτουργία του κυκλώµατος όταν δε χρησιµοποιείται η υπορουτίνα καθυστέρησης για την απόσβεση αναπηδήσεων του διακόπτη.
Εργασία για το σπίτι Στους ακροδέκτες PTC0, PTC1 του µc είναι συνδεδεµένοι δύο διακόπτες τύπου Push-Button, ενώ στους ακροδέκτες 0-6 της θύρας Β ένας ενδείκτης 7 τοµέων. Να γραφεί πρόγραµµα που θα προσοµοιώνει τη λειτουργία ελέγχου του χώρου στάθµευσης ενός parking. Αρχικά ο ενδείκτης θα έχει την τιµή µηδέν, ως ένδειξη ότι δεν υπάρχουν σταθµευµένα αυτοκίνητα. Για κάθε όχηµα που θα εισέρχεται στο χώρο του parking (πάτηµα του διακόπτη PTC0) θα αυξάνεται η ένδειξη στο display. Αντίστοιχα για κάθε όχηµα που θα εξέρχεται από το χώρο του parking (πάτηµα του διακόπτη PTC1) θα µειώνεται η ένδειξη στο display.