Εμφάνιση αποτελεσμάτων : 1 έως 7 από 7

Θέμα: Γλώσσα C εντολή άμμεσου τερματισμού

  1. #1
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή Γλώσσα C εντολή άμμεσου τερματισμού

    Γράφω σε C ένα πρόγραμμα ελένχου αρκετά πολύπλοκο με αρκετους εσωτερικούς βρόνχους.Το διάγραμμα ροής μου λέει οτι σε ένα κλειστό βρόνχο σε μια συνθήκη if πρέπει επειγόντος να εκτελέσω κάποιοες προτάσεις και να μεταφερθώ κατευθείαν έξω απο όλους τουσ βρόνχους να αφοπλίσω ένα ρελλέ να κάνω reset τον επεξεργαστή και να τερματίσω το πρόγραμμα.

    Θέλω να αποφύγω την GOTO.Ξέρω οτι υπάρχει και η break; αλλα αυτη με βγάζει έχω την εντύπωση έξω απο το loop που βρίσκομαι είδη δεν με πάει στο τέλος.Υπάρχει κάποια άλλη δυνατότητα η τεχνική η υποχρεωτικά με GOTO?
    Το εξωτερικό loop είναι ατέρμονο! (while(1))

    Μπορώ να βάλω και flags αλλα μην γεμίσω μεταβλητές να είναι ευανάγνοστος ο κώδικας

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

  2. #2
    Μέλος Το avatar του χρήστη tasosmos
    Όνομα
    Τάσος
    Εγγραφή
    Jul 2005
    Περιοχή
    Αθήνα
    Μηνύματα
    3.057

    Προεπιλογή

    Πρεπει να αλλαξεις το while(1) και να χρησιμοποιησεις αντιστοιχα τις συνθηκες που χρειαζεσαι.
    Η break σε βγαζει εξω απο 1 μονο loop οπως ειπες κ εσυ.
    Η goto γενικα χρησιμοποιειται μονο σε πολυ ειδικες περιπτωσεις, αποφευγεται η χρηση της.

    0 Not allowed! Not allowed!

  3. #3
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή

    Για να καταλάβεις οτι αυτή η συνθήκη πρέπει να εκτελεστεί αμέσως μετα απο μια δειγματοληψία που βρίσκεται σε σιγκεκριμένο σημείο του κώδικα και δεν μπορώ να της αλλάξω θέση.ΣΕ καμία περίπτωση δεν πρέπει να εκτλεστούν οι υπόλοιπες προτάσεις και τα πάντα πρεπει να σβήσουν.Είναι εντολή ασφαλείας και θα ενεργοποιηθεί μόνο οταν κατι πάει στραβά.ΔΕν μπορώ να περιμένω να εκτελεστεί η συνθήκη.Αν δεν υπάρχει κάποια τέτοια εντολή θα φτιάξω flag.

    Επ'ισεις μπορώ να βάλω μια συνθήκη στην πάνω While που θα ισχύει πάντα και όταν τα πράγματα δεν πανε καλά και ενερφοποιηθεί η if να χρησιμοποιήσω την continue να με παει στην αρχη του βρόνχου και μετα απο κει να σηκωθώ να φύγω και να τερματίσω και να τα μηδενίσω όλα

    Βασικά σε ΄θεματα software τίθονται τεχνικές αξιοποιστίας?Για παραδειγμα ποια τεχνική είναι πιο αξιόπιστη?Μια άμεση με ένα goto μια με σημαιες? μια με δείκτες μια με συνθήκες θέλω να είναι όσο πιο αξιόπιστη γίνεται!!

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

  4. #4
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή

    αλλα αθτο που μου κάνει εντύπωση είναι οτι και να κάνω εκτος απο μια goto κάνει τον κώδικα πολύ πιο πολύπλοκο και δυσανάγνωστο.Με μια Goto όλα απλουστεύουν!!Γιατι λοιπόν οι σοφτγουεραδες έχουν φάει κόλλημα με την απαγόρευση τέτοιων εντολών άμμεσης μετάβασης!!

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

  5. #5
    Μέλος Το avatar του χρήστη kopla
    Όνομα
    Κλεομένης
    Εγγραφή
    Jul 2006
    Περιοχή
    Ελλάδα, Αθήνα
    Μηνύματα
    1.064

    Προεπιλογή

    Καταρχήν δεν εχω καταλαβει τι είναι εμφωλευμένο που! Αλλά δεν πειράζει.
    Απ'ότι γνωριζω η "C" γενικά μιλάω, εχει τις εντολές break και continue. Αυτες ομως μπορούν να συνδυαστούν και με ετικέτα, δλδ να πεις οτι θελεις να κανεις break και που να παει. Αυτό υποκαθιστά τη χρήση του goto.
    Το ερώτημα ειναι, εχει τετοια δυνατότητα ο compiler σου? Ναι μεν "C" αλλά όχι C για υπολογιστές.

    Το μαυρο πρόβατο εν'ονόματι GOTO αποφεύγεται γιατί δεν προάγει το δομημένο προγραμματισμό.

    0 Not allowed! Not allowed!

  6. #6
    Μέλος Το avatar του χρήστη CITRO
    Όνομα
    Ν/Α
    Εγγραφή
    Nov 2008
    Περιοχή
    Γαλλια
    Μηνύματα
    108

    Προεπιλογή

    1)Προγραμματιζω έναν dspic 30f4011 me με το mplab v7.5 με εναν compiler c30.Πως μπορω να καταλάβω αν δέχεται και τι εντολές δέχεται ο επεξεργαστής?

    2)Στον software σχεδιασμο υπάρχει θέμα αξιπιστίας λειτουργίας η όλα γίνονται για να είναι δομημένος ο κώδικας και ευανάγνωστος?Και υπάρχει κόστος στη διαχείριση μνήμης και στην ταχύτητα?δηλαδή κερδίζω σε αξιοπιστία χάνω σε μνήμη και ταχύτητα εκτέλεσης.Σιγουρα αυτα κάπος συνδέονταιΓενικός εκεί τι πρέπει να μπαλαντζάρεις?(Αυτη είναι γενική δεν με απασχολεί τόσο στην εφαρμογή που φτίαχνω αλλα είναι ερ'ωτηση για σοφτγουεραδες)

    0 Not allowed! Not allowed!
    Keep the noise down - POWERED BY RENAULT

  7. #7
    Μέλος Το avatar του χρήστη kopla
    Όνομα
    Κλεομένης
    Εγγραφή
    Jul 2006
    Περιοχή
    Ελλάδα, Αθήνα
    Μηνύματα
    1.064

    Προεπιλογή

    Πως θα το καταλαβεις... δύο τροποι, θα δεις καποιο manual του compiler ή trial and error τεχνική. Καντο δλδ και αν πετύχει, πέτυχε. C30 δεν εχω χρησιμοποιήσει (μονο C18 αλλά δεν χρειάστηκα goto).
    Όταν κατι ειναι δομημενο τοτε γινεται πιο εύκολο στο debugging. Όλα συνδέονται. Τα goto αλλαζουν τον program counter επομένως ειναι μια μικρή καθυστέρηση και χαμένη θεση στη flash. Αλλά είναι περιττά αυτά. Πιο πολύ μας απασχολεί ο compiler για τον κώδικα που παράγει και τι "optimizations" μπορεί να κανει στο σύνολο του κωδικα.
    Συνηθως πρωτα σκεφτόμαστε το τι δυσκολια εχει το project μας. Σίγουρα μια γλώσσα υψηλού επιπέδου ειναι πιο φιλική προς τον προγραμματιστή. Επειδή η assembly παράγει συνήθως λιγότερο κώδικα (εκτός αν ο προγραμματιστής δεν εχει εμπειρία), αυτό μας βολέυει αν εχουμε πρόβλημα με τη διαθέσιμη μνήμη flash. Αλλα οι μΕ της microchip εχουν αρκετή. Εαν θέλουμε και μεγαλη ακρίβεια όσον αφορα το χρόνο (πχ χρόνος εκτελεσης, καθυστερήσεις, κτλ) η assembly ειναι καλύτερη.


    PS: Το MPLAB 7.50 ειναι πολύ παλιό. Στο 8.46 είναι αυτή τη στιγμή ...

    0 Not allowed! Not allowed!

Παρόμοια Θέματα

  1. Αντιστάσεις Τερματισμού, απορία
    By sm2013 in forum Συστήματα Ασφαλείας
    Απαντήσεις: 3
    Τελευταίο Μήνυμα: 05-07-14, 23:28
  2. Ασύρματη εντολή αντλίας.
    By jami in forum Γενικά
    Απαντήσεις: 63
    Τελευταίο Μήνυμα: 31-08-13, 12:21
  3. Beamer που να δίνει εντολή να ανάψουν φωτα
    By haf in forum Συστήματα Ασφαλείας
    Απαντήσεις: 22
    Τελευταίο Μήνυμα: 11-09-12, 01:33
  4. πρόβλημα με την εντολή millis()
    By enterpc in forum Μικροελεγκτές
    Απαντήσεις: 1
    Τελευταίο Μήνυμα: 14-11-11, 08:35
  5. Απαντήσεις: 2
    Τελευταίο Μήνυμα: 01-01-09, 20:56

Tags for this Thread

Δικαιώματα - Επιλογές

  • Δημιουργία θεμάτων: Όχι
  • Υποβολή μηνυμάτων: Όχι
  • Σύναψη αρχείων: Όχι
  • Επεξεργασία μηνυμάτων: Όχι
  •  
  • BB code: σε λειτουργία
  • Smilies: σε λειτουργία
  • [IMG]: σε λειτουργία
  • [VIDEO] code is σε λειτουργία
  • HTML: εκτός λειτουργίας