PDA

Επιστροφή στο Forum : ΠΡΟΒΛΗΜΑ ΜΕ microbasic code



angelkos
20-12-09, 12:51
Παιδιά γειά σας.
Είμαι σχετικά καινούργιος στο forum.
Δουλεύω το αναπτυξιακό της easypic5 με mC τον PIC16f887. Μπορεί να μου πει κάποιος που είναι το λάθος και δεν μου τρέχει το παρακάτω πρόγραμμα;
Έχω ορίσει την PORTA σαν είσοδο και θέλω να την ελέγχει συνέχεια και σε περίπτωση που υπάρξει hi στο πιν 0 της PORTA να μου ανάψει τρία leds στην PORTB.
Ευχαριστώ.



program TEST
dim flag as byte
main:
TRISA = %11111111
TRISB = %00000000
loop1:
PORTB = 0
flag = PORTA
if flag = %00000011
then PORTB = %00000111
else PORTB = %00000000
Delay_ms(1000)
end if
goto loop1

end.

billtech
20-12-09, 12:56
δοκιμασε
if flag.0 =1 then ....

Nemmesis
20-12-09, 13:12
program TEST
dim flag as byte
main:
TRISA = %11111111
TRISB = %00000000
loop1:
PORTB = 0
flag = PORTA
if flag = %00000011
then PORTB = %00000111
else PORTB = %00000000
Delay_ms(1000)
end if
goto loop1

end.

καταρχας δεν βλεπω να εχεις δηλωση τα περι analog ή 0/1channels (δες την μεταβλητη ansel)
και μετα ενα μεγαλο λαθος που κανουν αρκετοι ειναι τι το προγραμμα σου ελενχει ΟΛΑ τα πιν της καθε πορτας... δλδ οταν θες σαν εισοδο ο πικ να διαβασει %00000011 πρεπει να εχεις high τα πιν 0-1 και επισης ομως ολα τα υποληπα γειωμενα με ανστιστασεις... αλλιω θα περνεις τυχαιο διαφορετικο αποτελεσμα παντα μεγαλητερο απο 00000011

angelkos
20-12-09, 14:45
Ναι έχεις δίκιο. Ξέχασα να ορίσω με την ansel για ψηφιακό ή αναλογικό.
Οκ. Δούλεψε.
Thanks.

Nemmesis
20-12-09, 15:14
ξεχασα να πω οτι αυτο που τονισα με κοκκινα γραμματα ειναι παντελος αχριστο

DT200
20-12-09, 17:03
καταρχας δεν βλεπω να εχεις δηλωση τα περι analog ή 0/1channels (δες την μεταβλητη ansel)
και μετα ενα μεγαλο λαθος που κανουν αρκετοι ειναι τι το προγραμμα σου ελενχει ΟΛΑ τα πιν της καθε πορτας... δλδ οταν θες σαν εισοδο ο πικ να διαβασει %00000011 πρεπει να εχεις high τα πιν 0-1 και επισης ομως ολα τα υποληπα γειωμενα με ανστιστασεις... αλλιω θα περνεις τυχαιο διαφορετικο αποτελεσμα παντα μεγαλητερο απο 00000011

όλα πολύ σωστά !!!
έχεις γίνει Γάτος , Μπράβο !!!!=D>

jimnaf
20-12-09, 17:32
program TEST
dim flag as byte
main:
TRISA = %11111111
TRISB = %00000000
loop1:
PORTB = 0
flag = PORTA
if flag = %00000011
then PORTB = %00000111
else PORTB = %00000000
Delay_ms(1000)
end if
goto loop1

end.

καταρχας δεν βλεπω να εχεις δηλωση τα περι analog ή 0/1channels (δες την μεταβλητη ansel)



Που είναι αυτή η μεταβλητή ρε παιδιά και εγώ έχω στραβομάρα :blink:και δεν την βλέπω;
Να μαθαίνουμε σιγά σιγά και εμείς :blush:

dal_kos
20-12-09, 17:38
H ansel είναι εσωτερική μεταβλητή του μικροελεγκτή. Αν δεις το datasheet, θα την βρείς μέσα, όπως επίσης και τι κάνει κάθε bit της :wiink:

Nemmesis
20-12-09, 18:14
όλα πολύ σωστά !!!
έχεις γίνει Γάτος , Μπράβο !!!!=D>

χαθηκες δασκαλε :001_smile: καλα εισαι?
ασε μου εχουν ληψει ολα αυτα ... αλλα τωρα ετοιμαζω 2-3 πραγματακια
θα τα δειτε μετα τις γιορτες