lemarsu54
Messages postés7Date d'inscriptionmardi 16 mars 2010StatutMembreDernière intervention16 mars 2010
-
28 févr. 2009 à 19:35
lemarsu54
Messages postés7Date d'inscriptionmardi 16 mars 2010StatutMembreDernière intervention16 mars 2010
-
28 févr. 2009 à 22:49
Bonsoir tout le monde,
Je suis en train de créer un programme dans le cadre d'un projet contant pour le bac. Il faut que je crée une serrure à code.
J'ai mon système électronique et maintenant je dois le coder en Basic. Pour ce faire il faut que je programme un micro-processeur 16C62. Vu que ceci est une application directe je trouve aucun tuto ni cours.
Nous n'avons eu très peu de cours où on y apprend 2-3 trucks très peu utile.
J'ai donc des problèmes sur différents point les voici:
-Comment traiter des donnés d'un clavier et les exploités?
-Comment faisons nous des fonctions ET et OU?
- Je n'ai pas su dire aussi comment vérifier le code avec les touches dans l'ordre.
Voici mon programme, je sais qu'il est bourré d'erreur mais j'ai fait ça avec 2-3 bases en C donc voilà.... et un exemple d'un programme qui affichait un nombre de places sur un LCD...
program Serrure_electrique
'************************************************
'******** déclaration des variables ********
'************************************************
symbol Col_1 = PortA.2 'lignes et colonnes du clavier.
symbol Col_2 = PortA.1
symbol Col_3 = PortA.0
symbol Ligne_1 = PortC.0
symbol Ligne_2 = PortA.5
symbol Ligne_3 = PortA.4
symbol Ligne_4 = PortA.3
'combiner les lignes/colonnes pour faire les touches.
symbol T_1 = Col_1 && Ligne_1
symbol T_2 = Col_2 && Ligne_1
symbol T_3 = Col_3 && Ligne_1
symbol T_4 = Col_1 && Ligne_2
symbol T_5 = Col_2 && Ligne_2
symbol T_6 = Col_3 && Ligne_2
symbol T_7 = Col_1 && Ligne_3
symbol T_8 = Col_2 && Ligne_3
symbol T_9 = Col_3 && Ligne_3
symbol T_A = Col_1 && Ligne_4
symbol T_B = Col_2 && Ligne_4
symbol T_C = Col_3 && Ligne_4
symbol Code = T_1 && T_2 && T_3 && T_4
symbol Relais = PortC.1
symbol Led_v = PortC.7
symbol Led_r = PortC.6
'variable pour ecran LCD
symbol Select_Registre = PortB.1
symbol Lect_ecri = PortB.2
symbol Entre_validation = PortB.3
symbol Bus_1 = PortB.4
symbol Bus_2 = PortB.5
symbol Bus_3 = PortB.6
symbol Bus_4 = PortB.7
'gérer le code
symbol Erreur = 0
symbol Touche_e1 = 0
symbol Touche_e2 = 0
symbol Touche_e3 = 0
symbol Touche_e4 = 0
'*************************************************************
'********* Début du programme : initialisation *********
'*************************************************************
'initialisation écran
Lcd_Init(PORTB)
Lcd_Cmd(LCD_CLEAR)
Lcd_Cmd(LCD_CURSOR_OFF)
Lcd_Cmd(LCD_RETURN_HOME)
symbol Led_v = 0
symbol Led_r = 0
symbol Relais = 0
Lcd_Out(1,1,"Entrer le code")
'**************************************************************
'******************* Début du programme *******************
'**************************************************************
main:
'recuperer les données du clavier. L'utiliateur entre son premier chiffre
if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,1,"*")
else Delay_ms(5000) 'L'utilisateur a 5s pour taper le code
end if
if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,2,"*")
else Delay_ms(5000)
end if
if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,3,"*")
else Delay_ms(5000)
end if
if T_1 || T_2 || T_3 || T_4 || T_5 || T_6 || T_7 || T_8 || T_9 || T_A || T_B || T_C = 1
then Lcd_Out(2,4,"*").
Delay_ms(2000)
end if
'maintenant que les 4 chiffres sont enregistrés il faut valider
'il faut rajouter une condition, il faut que les 4 chiffres
'soient enregistrés sinon le programme se poursuivra.
Lcd_Out(1,1,"Touche C pour")
Lcd_Out(2,1,"valider")
Delay_ms(5000)
'****************************
'*Attente de 5s pour valider*
'****************************
if T_C = 1 'Touche C validée
then if Erreur < 3 'Vérifier que le code a pas été forcé then if touche_e1 1 && Touche_e2 1 && touche_e3 = 1 && touche_e4 = 1 'Code bon
then Lcd_Out(1,1,"Code accepte")
Lcd_Out(1,2,"Ouverture...")
Delay_ms(1000)
Relais = 1 'ouverture porte
Led_v = 1 'Led verte allumée
Led_r = 0 'Led rouge éteinte
Delay_ms(3000)
Relais = 0 'fermeture porte
Led_v = 0 'Led verte éteinte
Led_r = 0 'Led rouge allumée
Erreur = 0 'Reset du nombre d'erreures
end if else if touche_e1 1 && Touche_e2 1 && touche_e3 = 1 && touche_e4 = 0 'Code mauvais
then Lcd_Out(1,1,"ERREUR")
Lcd_Out(1,2,"")
Led_v = 0
Led_r = 1
Delay_ms(5000)
Led_v = 0
Led_r = 0
Erreur = Erreur + 1
end if
end if
else if Erreur = 3
then Lcd_Out(1,1,"MODE")
Lcd_Out(2,1,"VERROUILLE")
Delay_ms(1000000)
end if
end if
else Lcd_Out(1,1,"Temps d'attente")
Lcd_Out(2,1,"depasse")
Delay_ms(5000)
end if
end.program Serrure_electrique
Voila j'espère que vous pourrez m'aider et que je vous ennuis pas trop.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 28 févr. 2009 à 20:24
C'est quoi ce language : croisement entre pascal et basic ?
L'opération OU se fait via l'opérateur OR : 1 or 2 = 3
L'opération ET se fait via l'opérateur AND : 3 And 2 = 2
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 févr. 2009 à 20:53
"...C'est quoi ce language : croisement entre pascal et basic ?..."
Dans la mesure ou il est fait mention du BAsic, et qu'il s'agit d'un uC PIC6C62, je dirais qu'il doit s'agir d'un des basic spécifiques à cette famille de processeurs, Basic Stamp peut-etre.
Pour ce qui est des fonctions Et et Ou, elles sont déjà utilisées dans le code donné :
Et --> &&
Ou --> ||
Pour ce qui est des erreurs, du peu que j'en comprend, je pense que ton code ne va pas marcher. Il n'attend nulle part l'appui d'une touche. Si tu le lance tel quel, je dirais qu'au bout de 15sec, il va t'afficher "Touche C ...", puis 5sec plus tard "Temps d'attente dépassé".
Pour le code du clavier, je ne saurait te le donner, je n'ai jamais programmer sur PIC
lemarsu54
Messages postés7Date d'inscriptionmardi 16 mars 2010StatutMembreDernière intervention16 mars 2010 28 févr. 2009 à 21:25
Merci de vos réponses aussi rapides !
[../auteur/GHUYSMANS99/549970.aspx ghuysmans99] tu me dis donc que les balises pour ET et OU sont AND et OR et casy me dis que c'est celle que j'ai déjà mis. Qui est sur de lui? C'est bel est bien du Basic mais pas spécialement adapté pour 16c62 c'est juste que j'ai fait sa avec ce que je pensais être bon :)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 févr. 2009 à 22:16
Basic, oui, Visual Basic non.
(sous le nom de Basic on trouve plusieurs dizaines de langages différents, et même déjà sous Visual Basic, on en est déjà au 4ème langage différent)
Visual Basic ne permet de programmez que des logiciels Windows, pas des codes pour PIC.
D'ailleurs je pense que tu ne programme pas sous Visual Studio mais sous un environnement spécifique.
cs_ghuysmans99
Messages postés3982Date d'inscriptionjeudi 14 juillet 2005StatutMembreDernière intervention30 juin 201316 28 févr. 2009 à 22:47
<cite>www.mikroe.com/pdf/mikrobasic/basic_syntax_v101.pdf
</cite>Selon lui j'ai raison ...
C'est bien : AND et, OR ou, XOR ou exclusif, NOT non, << décalage vers la gauche, >> décalage vers la droite
<cite></cite>