' découverte bascom 1---------------------------------------------- ' Jean-Pierre Duval le 14-11-2002 'modifié le 08-09-2004 'directive de compilation------------------------------------------- $regfile = "M8def.dat" ' on retrouve ces directives dans options/compiler/ chip $crystal = 8000000 'donc ces déclarations ne sont pas obligatoire '---------Déclaration des variables-------------------------------- Dim Phrase(8) As String * 10 'déclare un tableau de 8 phrases de 10 caractères 'declare les variables génériques Dim J As Byte Dim Y As Byte Dim A As Byte 'déclare les variables string Dim Result As String * 8 Dim Endroit As String * 1 '--------Déclaration des sub et fonctions-------------------------- 'la déclaration des sub et fonction se fait en début de programme 'la rédaction des sub et fonction se fait après le END Declare Sub Clignote(byval Diode As Byte) ' --------configuration des ports---------------------------------- Config Portd = Input 'le port des boutons sur la carte STK200 Config Portc = Output 'le port que nous utiliserons dans ce programme pour l'afficheur LCD Config Portb = Output 'le port des LED sur la carte STK200 '' configuration du LCD-------------------------- Config Lcdmode = Port ' config 4 bit Config Lcdpin = Pin , Db4 = Portc.3 , Db5 = Portc.2 , Db6 = Portc.1 , Db7 = Portc.0 , E = Portc.4 , Rs = Portc.5 'par defaut c'est un afficheur 16 X 2 qui est utilisé dans Bascom 'donc cette ligne est inutile Config Lcd = 16 * 2 '---------Chargement du tableau de mots avec les data-------------- Restore Donnees J = 1 Do Read Phrase(j) J = J + 1 Loop Until J = 9 'netoyage écran Cls '--------Boucle d'attente d'un bouton------------------------------ Do J = Pind 'Permet de trouver la position de la diode à allumer 'initialisation des variables Result = "" 'transformation Decimal/string Result = Bin(j) ' allumage de la diode : copie du port D--------------------------- Portb = Binval(result) 'transformation string/binaire '---envoi des données au LCD--------------------------------------- 'remise à "nul" de la variable result Result = "" 'initialisation des variables Y = 9 : A = 8 'lecture du Port B J = Portb 'transformation décimal/string Result = Bin(j) 'inversion de la lecture à la recherche du seul bit "0" qui a allumé la diode Do Endroit = Mid(result , A , 1) If Endroit = "0" Then Exit Do 'En simulation on recherche un bit 1 A = A - 1 Loop Until A = 0 ' petite attente pour visualiser la diode Waitms 300 Y = Y - A If Y <> 9 Then ' affichage des data Cls Locate 2 , 1 : Lcd Phrase(y) 'lancement de la sub CLIGNOTE Call Clignote(y) End If Loop 'boucle sans fin End 'end program '-------sub de clignotement------------------------------------------- 'fait clignoter toutes les diodes autant de fois que la variable "diode" Sub Clignote(diode As Byte) Local Led As Byte Led = Diode + 1 'minimum 1 Do Portb = 85 Waitms 200 Portb = 170 Waitms 200 Led = Led - 1 Loop Until Led = 0 Portb = 255 End Sub Donnees: Data "Bouton 0" , "Bouton 1" , "Bouton 2" , "Bouton 3" , "Bouton 4" , "Bouton 5" , "Bouton 6" , "Bouton 7"