Βοήθεια Με Γ Πρόγραμμα

G

GrandAlf

Guest
Έχω ένα μικρό πρόβλημα, το ακόλουθο κώδικα έργα πρόστιμο, αλλά όταν προσπαθώ να κάνω μια λειτουργία από το περιεχόμενο του μπλοκ λειτουργιών, συγκεντρώνει, αλλά δεν θα τρέξει.

Made ένα αρχείο που ονομάζεται CancelCall.C
Προστέθηκε περιεχόμενο του μπλοκ σημειώνονται ΛΕΙΤΟΥΡΓΙΕΣ
Περιλαμβάνονται At898252, Delay και lcd Headers

Made αρχείο CancelCall.H
Προστέθηκε
Extern void CancelCall (void)?

Προστέθηκε CancelCall.h στο κύριο αρχείο.

Καταρτίζει ΟΚ, αλλά δεν θα εκτελεστεί.Ακόμα μάθηση Γ, και έχουν κάνει μάλλον κάτι ηλίθιο.Any help greatly appreciated.

Συγγνώμη για την ανάληψη τόσο το εύρος ζώνης.

=============================================

# include <AT898252.h>
# include <rtx51tny.h>
# include "lcd.h"
# include <stdio.h>
# include "delay.h"

/ / Outputs Bit
sbit οδήγησε = P1 ^ 7?
sbit C1 = P2 ^ 6?
sbit C2 = P2 ^ 5?
sbit C3 = P2 ^ 4?
sbit Sounder = P3 ^ 2?
sbit BusyOp = P3 ^ 3?
Τόνος sbit = P3 ^ 4?
sbit Release = P3 ^ 5?
sbit AudVid = P3 ^ 6?
sbit Strobe = P3 ^ 7?

/ / Είσοδοι Bit Active Low
sbit PTE = P2 ^ 7?
sbit TradeClock = P1 ^ 6?
Privacy sbit = P1 ^ 7?
sbit OpenDoor = P3 ^ 0?
sbit BusyIp = P3 ^ 1?

/ / Variables
unsigned char DialNumber, KeyRead?
unsigned int ActualNumber?
unsigned char Διεύθυνση?
unsigned char Loop?
char buf [8]?

/ ΛΕΙΤΟΥΡΓΙΕΣ
////////////////////////////////////////////////// //////////////////////////////
void CancelCall (void) / / Όλα Επαναφέρει Junction Boxes
(
unsigned char Διεύθυνση?
Strobe = 1?
Διεύθυνση = 0?
Τόνος = 0?
lcd_goto (0)?
lcd_puts ( "ΤΕΛΟΣ-Παρακαλώ Περιμένετε")?
AudVid = 0? BusyOp = 1?
DelayMs (200)?
Strobe = 0? DelayUs (50)? Strobe = 1?
DelayMs (50)?
ενώ (Διεύθυνση <255) (
P0 = Διεύθυνση?
Strobe = 0? DelayUs (50)? Strobe = 1?
DelayMs (20)?
Διεύθυνση ?)
lcd_goto (0)?
lcd_puts ( "Dial Number")?
)
////////////////////////////////////////////////// ////////////////////////////job0 () _task_ 0 (/ / Main εκκίνησης Task
os_create_task (1)? / / Ξεκινά Ticker Συνήθης RTE

lcd_init ()?
DialNumber = 0?
KeyRead = 0?
ActualNumber = 0?
Sounder = 0?
CancelCall ()?

ενώ (1) (
οδήγησε = 0?
DelayMs (200)?
οδήγησε = 1?
DelayMs (200)?
C1 = 0? C2 = 0? C3 = 0?
while ((P2 & 0x0F) == 0x0F) () / / περιμένει Key Τύπου
C1 = 0? C2 = 1? C3 = 1?
KeyRead = (P2 & 0x0F)?
εάν (KeyRead == 14) DialNumber = 1?
εάν (KeyRead == 13) DialNumber = 4?
εάν (KeyRead == 11) DialNumber = 7?
εάν (KeyRead == 7) / / Επαναφορά
(
DialNumber = 0?
KeyRead = 0?
ActualNumber = 0?
C1 = 1? C2 = 1? C3 = 1?
lcd_goto (0)?
lcd_puts ( "Dial Number")?
)

C1 = 1? C2 = 0? C3 = 1?
KeyRead = (P2 & 0x0F)?
εάν (KeyRead == 14) DialNumber = 2?
εάν (KeyRead == 13) DialNumber = 5?
εάν (KeyRead == 11) DialNumber = 8?
εάν (KeyRead == 7) DialNumber = 0?

C1 = 1? C2 = 1? C3 = 0?
KeyRead = (P2 & 0x0F)?
εάν (KeyRead == 14) DialNumber = 3?
εάν (KeyRead == 13) DialNumber = 6?
εάν (KeyRead == 11) DialNumber = 9?
εάν (KeyRead == 7) (/ / πλήκτρο κλήσης για αυτό το κομμάτι είναι λάθος, πρέπει να ακυρώσετε την κλήση δεν
ActualNumber = 0?
DialNumber = 0?
KeyRead = 0?
CancelCall ()?)

ActualNumber = (ActualNumber * 10) DialNumber?
εάν (ActualNumber> 0) (
lcd_clear ()?
lcd_puts ( "Κλήση")?
lcd_goto (0x09)?
sprintf (buf, "% d", ActualNumber)?
lcd_puts (buf)?)

C1 = 0? C2 = 0? C3 = 0?
while ((P2 & 0x0F)! = 0x0F) () / / περιμένει Key Τύπου
os_wait (K_TMO, 5,0)?))

//================================================ =====
/ / Έλεγχοι PTE και ανοίγει την πόρτα Όσπρια Επίσης Ext Watchdog
Εργασία 1 () _task_ 1 (
Loop = 0? Τύπου = 0?

ενώ (1) (

ενώ PTE == (1) (
Sounder = 0? DelayMs (50)? Sounder = 1? DelayMs (50)? Sounder = 0? / / Αλλαγή στο 1 ms
os_wait (K_TMO, 30,0)?)

/ / ανάγκες ήχου δήλωση εδώ, κατά τη γραπτή
ενώ (Loop <20) (
Release = 1?
Sounder = 0? DelayMs (50)? Sounder = 1? DelayMs (50)? Sounder = 0? / / Αλλαγή στο 1 ms
DelayMs (255)?
Loop ?)
Loop = 0? Τύπου = 0?))
//================================================ =====

 
U Εάν δεν έχουν ICE debug για να σας σύστημα
Χρησιμοποιήστε μία από τις οδήγησε ως debug ig inducator

Ορίστε ένα αποτέλεσμα και να σβήνουν.

Όταν εισάγετε μια λειτουργία που την οδήγησαν ON και όταν
u ζωντανά τη λειτουργία, είχε συνυπολογίσει

Αυτό whay U μπορεί να ξέρει εάν έχετε κάνει την καλή λειτουργία ή ζουν σε πλάνη

αν έχετε μια LCD μπορείτε να το χρησιμοποιήσετε καλύτερα από την αποστολή για την παρατήρηση LCD

αντίοBobi

 
Thanks Bobi

Διαθέτει μια LCD, αλλά δεν κάνει τίποτα.Οι συνήθεις εργασίες ok αν στο κύριο πρόγραμμα, αλλά δεν είναι σε συνάρτηση.Νομίζω ότι δεν καταλαβαίνω πώς να κάνουν τα αρχεία κεφαλίδας;.

Mike

 
Γεια σου, GrandElf

Εάν lerning C αποφεύγεται όταν μπορείτε οποιαδήποτε multitasking OS.Είναι ένα άλλο μεγάλο πράγμα για να μάθουν.

Δεν undestand αυτό που προσπαθούμε να κάνουμε.Μπορείτε μεταφέρθηκε CancelCall ()
σε άλλο *. γ ενότητα;Αν ναι κηρύξει CancelCall () στην κύρια μονάδα σας.

void CancelCall (void)? / / δηλώνει λειτουργία, είναι πρωτότυπο αυτής της λειτουργίας
/ / Η γραμμή μπορεί να μετακινηθεί σε κεφαλίδα του αρχείου
extern int externintvar? / / δηλώνει εξωτερική int μεταβλητή

Μπορείτε να πάρετε μεγάλα προβλήματα αν αποφεύγεται η δήλωση του εξωτερικού
λειτουργίες.

Ένας άλλος κίνδυνος μπορεί να προέρχεται από το γεγονός ότι πολλαπλασιάζει τον αριθμό των εργασιών του
στοίβα απαιτήσεις.Εάν ένα πρόγραμμα εργασίας απαιτεί forexample60 bytes της στοίβας - 5 Καθήκοντα prog μπορεί να απαιτήσει από 300 bytes.Tiny έχει αρκετό RAM
να κατέχει αυτό;

Καλή τύχη

 
Thanks Kef,

Όλα Προσπαθούσα να κάνω ήταν να κάνει CancelCall μια λειτουργία.Πραγματικά μόνο να βάλει τάξη σε κύριο πρόγραμμα.Κάνει ωραία δουλειά όπου είναι όμως.

Δεν έχω δηλώσει δεν εσωτ μεταβλητή στην κεφαλίδα, ίσως αυτό είναι το πρόβλημα;.Θα το δοκιμάσω.

Ποτέ μη βρεθεί μια ικανοποιητική C οδηγό που εξηγεί πώς λειτουργεί proerly / κεφαλίδες εργασίας.Δεν είμαι σίγουρος αν θα πρέπει να εισαγάγετε κεφαλίδες στο εσωτερικό λειτουργίες που χρησιμοποιούν τους, ή τον καιρό ο compiler θα χρησιμοποιήσει αυτές στο κύριο σώμα του προγράμματος.

Σε πολλούς τρόπους συναρμολόγησης είναι πιο εύκολη, σε ότι έχετε τον έλεγχο και την κατανόηση του τι κάνετε (ελπίζω).

Thx και πάλι για τις συμβουλές σας, θα κρατήσει σε αυτό.

Mike

 
Νομίζω ότι μπορεί να προκάλεσε μια μικρή σύγχυση εδώ.Είμαι, φυσικά, προσπαθούν να κάνουν τα αρχεία της βιβλιοθήκης.γελάω δυνατά

dont αρκετά κατανοήσουν τη σύνδεση μεταξύ

. h και. γ

Μήπως χρειάζεται να μοιράζονται το ίδιο όνομα αρχείου;.

 
GrandAlf έγραψε:

Νομίζω ότι μπορεί να προκάλεσε μια μικρή σύγχυση εδώ.
Είμαι, φυσικά, προσπαθούν να κάνουν τα αρχεία της βιβλιοθήκης.
γελάω δυνατάdont αρκετά κατανοήσουν τη σύνδεση μεταξύ. h και. γΜήπως χρειάζεται να μοιράζονται το ίδιο όνομα αρχείου;.
 
Ευχαριστώ και πάλι Kef,

Του όλα τα όλο και πιο σαφής.

 

Welcome to EDABoard.com

Sponsor

Back
Top