Vous êtes sur la page 1sur 13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

Rechercher
FO R UM Jack y-PC - Syndrom e -O C Program m ation Microcontrolle ur &co Ex e rcice de program m ation Mik roC sur PIC s

Annonces Google Pic Programmer Kit Edit Pic Pic 16F877A Pic Programmer
1 utilisate ur anonym e e t 28 utilisate urs inconnus S'ide ntifie r | S'inscrire | Aide Mot : Pseudo : Filtrer

Rechercher
Bas de page

A uteur

Sujet : Exercice de programmation MikroC sur PICs Post le 27-01-2010 22:22:29

Hearty

Bonsoir, Voil un mois maintenant que je tente de dmystifier la programmation de controleur. Beaucoups de lecture, de recherche... Comme tout le monde je prsume, en premier lieu en tentant de dcrypter des codes existants, puis quelques modifications, et enfin tenter de partir de zro sur un code fait maison. J'ai comme outils de travail, MikroC, Proteus VMS quelques Labdec, des PIC divers. Je suis actuellement sur un exercice bas sur les reflexions de Vede, utilisateur de ce prsent forum. affichage sur matrice de LED. j'utilise pour cet exercice un PIC 16F876A. Voici le code transcrit du sien en MikroC:
Code :

1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 1 0 . 1 1 . 1 2 . 1 3 . 1 4 . 1 5 . 1 6 . 1 7 . 1 8 . 1 9 . 2 0 . 2 1 . 2 2 . 2 3 .

/ ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * E x e r c i c ed ' a f f i c h a g em u l t i p l e x s u ru n em a t r i c e d e8 x 8L E D s . P I C 1 6 F 8 7 6 A -A n o d e sc o m m u n e ss u rl ep o r t Be tC a t h o d e ss u rP o r t C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / i n tc o l o n n e s [ 8 ] ; / /T a b l e a ud eh u i t se n t i e r s( 8 x 8 ) i n ti ; / /v a r i a b l ed ec o m p t a g e i n tv ; / /v a r i a b l ed ef r q u e n c ed es c r o l l i n g u n s i g n e ds h o r tI n c C o l ; / /V a r i a b l ed ' i n c r m e n t a t i o nd ec o l o n n e v o i dm a i n ( ) / /P r o g r a m m ep r i n c i p a l { d e b u t : / /P r p a r a t i o nd uc a r a c t r ea f f i c h a b l e c o l o n n e s [ 0 ] = 0 b 1 1 1 1 1 1 1 1 ; / / 0 0 0 0 0 0 0 0 c o l o n n e s [ 1 ] = 0 b 1 0 0 0 0 0 0 1 ; / / 0 0 c o l o n n e s [ 2 ] = 0 b 1 0 1 1 1 1 0 1 ; / / 0 0 0 0 0 0 c o l o n n e s [ 3 ] = 0 b 1 0 1 0 0 1 0 1 ; / / 0 0 0 0 c o l o n n e s [ 4 ] = 0 b 1 0 1 0 0 1 0 1 ; / / 0 0 0 0 c o l o n n e s [ 5 ] = 0 b 1 0 1 1 1 1 0 1 ; / / 0 0 0 0 0 0 c o l o n n e s [ 6 ] = 0 b 1 0 0 0 0 0 0 1 ; / / 0 0

M o t i fc o d s u r8b i t s , 8c o l o n n e s ,i c i u nc a r r d a n s u nc a r r .
1/13

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

2 4 . 2 5 . 2 6 . 2 7 . 2 8 . 2 9 . 3 0 . 3 1 . 3 2 . 3 3 . 3 4 . 3 5 . 3 6 . 3 7 . 3 8 . 3 9 . 4 0 .

c o l o n n e s [ 7 ] = 0 b 1 1 1 1 1 1 1 1 ; / / 0 0 0 0 0 0 0 0 A D C O N 0 = 0 ; T R I S A = 0 ; T R I S B = 0 ; T R I S C = 0 ; P O R T A = 0 ; P O R T B = 0 ; P O R T C = 0 ; v = 0 ; / /A D Cd s a c t i v / /P O R T Ac o n f i g u r e ns o r t i e / /P O R T Bc o n f i g u r e ns o r t i e / /P O R T Cc o n f i g u r e ns o r t i e / /m i s ez r od e sp o r t sA / /m i s ez r od e sp o r t sB / /m i s ez r od e sp o r t sC

w h i l e ( 1 ) / /B o u c l ei n f i n i e { / /a f f i c h a g ed uc a r a c t r e I n c C o l = 0 x 0 0 0 0 0 0 0 1 ; / / i n i t i a l i s a t i o nv a l e u rd ed p a r tb i t0 a l l u m 4 1 . i = 0 ; / /i n i t i a l i s a t i o nv a r i a b l ed ec o m p t a g e 4 2 . 4 3 . f o r( i = 0 ; i < 8 ; i + + ) { / /P o u rie n t r e0e t7 4 4 . P o r t B=c o l o n n e s [ i ] ; / /A f f i c h e rl ac o l o n n ei 4 5 . P o r t C=I n c C o l ; / /a c t i v e rl ep o r t Ca ub i td el av a r i a b l e I n c C o l 4 6 . D e l a y _ m s ( 1 ) ; / /l et o u tp e n d a n t1 m s 4 7 . I n c C o l = I n c C o l< <1 ;/ /d e c a l a g ed ' u nb i tg a u c h e 4 8 . i f ( v = = 3 1 ) { 4 9 . c o l o n n e s [ i ] = c o l o n n e s [ i ]< < 1 ; / / s c r o l l i n gg a u c h e 5 0 . v = 0 ; 5 1 . 5 2 . } 5 3 . v + + ; 5 4 . 5 5 . } 5 6 . 5 7 . } 5 8 . }

J'affiche donc un caractre par cette mthode, seulement je constate une disparit dans la luminosit des LEDs, et lors du scrolling, le balayage est lent, et le scrolling erratique.

J'en conclu que mon code est fauss quelque part, aprs une nuit tester diffrentes combinaisons je pche.
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 2/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

Un conseil serait le bienvenue.

Message dit par Hearty le 28-01-2010 17:52:05

Google
#F0F0F0-#F7F7F7

Post le 27-01-2010 22:22:29

Reseau Moyenne Tension www.cvci.fr/Reseau-MT-BT Matriel rseau mt/bt,poste transfo Electrification rurale, poteau, mt Chargeur batterie plomb www.alphabatteries.com Recharge, test, maintien en charge Rcupre les batteries sulfates S5/S7 PLC Programming www.ibhsoftec-sps.de/english with integrated Oscilloscope and Step5/Step7 PLC simulation ! Affichage Dynamique Led www.affichled.fr Ecrans Leds Haut de gamme Programmable, haute luminosit
ced-2k
Hom m e de s tave rne s Post le 28-01-2010 18:09:53

Salut Hearty, Est-ce que ton code fonctionne dans scrolling? Je ne comprends pas bien ton utilisation de IncCol... Voici ce que je ferais pour un affichage sans scrolling :
Code :

1 . w h i l e ( 1 ) / /B o u c l ei n f i n i e 2 . { 3 . f o r( i = 0 ; i < 8 ; i + + ) / /i t r a t i o ns u rl e s8l i g n e s 4 . { 5 . P o r t C=0 ; / /d s l e c t i o nl i g n ec o u r a n t e( p o u rn e p a sa f f i c h e rl av a l e u rc o l o n n e sp r c d e n ts u rl al i g n ec o u r a n t e ) 6 . P o r t B=c o l o n n e s [ i ] ; / /o u t p u tv a l e u rc o l o n n e sd el al i g n e c o u r a n t e 7 . P o r t C=1< <i ; / /s l e c t i o nl i g n ec o u r a n t e 8 . D e l a y _ m s ( 1 ) ; 9 . } 1 0 . }

Et avec scrolling :
Code :

1 . w h i l e ( 1 ) / /B o u c l ei n f i n i e 2 . { 3 . f o r( i = 0 ; i < 8 ; i + + ) / /i t r a t i o ns u rl e s8l i g n e s 4 . { 5 . P o r t C=0 ; / /d s l e c t i o nl i g n ec o u r a n t e ( p o u rn ep a sa f f i c h e rl av a l e u rc o l o n n e sp r c d e n ts u rl al i g n e c o u r a n t e ) 6 . P o r t B=c o l o n n e s [ i ]< <o f f s e t ; / /o u t p u tv a l e u rc o l o n n e sd el a l i g n ec o u r a n t e 7 . P o r t C=1< <i ; / /s l e c t i o nl i g n ec o u r a n t e 8 . D e l a y _ m s ( 1 ) ; 9 . } 1 0 . 1 1 . / /a p r s3 2a f f i c h a g e s( 3 2 m s ) ,s c r o l ld el ' a f f i c h a g e 1 2 . i f ( v = = 3 1 ) 1 3 . { 1 4 . o f f s e t=( o f f s e t+1 )%8 ; 1 5 . v = 0 ; 1 6 . }
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 3/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

1 7 . 1 8 . v + + ; 1 9 . }

Attention c'est non test donc vrifier ! PS: as-tu bien dsactiv le watchdog sur ton PIC car l'affichage me semble vraiment alatoire? [EDIT] Correction bug dans slection ligne courante
Message dit par ced-2k le 29-01-2010 09:53:15

Hearty

Post le 28-01-2010 20:33:51

Bonsoir Ced, Merci de rpondre. Le scroll se fait bien, sauf quelques sauts erratiques, Et l'affichage du caractre se fait correctement, mais lent, tel point que l'on voit le balayage. La variable IncCol permet d'incrmenter la colonne d'affichage. De ce que je sais en MikroC, on ne peut adresser un port individuel que de la manire suivante : portC=0b00000001; ou portC.F0=1; donc en initialisant 00000001 puis en le shiftant a donne 00000010 etc.. Ne connaissant pas bien l'oprateur modulo, je vais tudier a de prs avec la mthode que tu emplois. Le Wd est bien dsactiv. J'ai test tel que le code que tu proposes avec le scrolling, l'affichage ne se fait que sur trois colonnes (les bits faibles) mais le scrolling se fait de manire fluide.

Edit: En modifiant mon code initial, intgrant le modulo cela donne ceci:
Code :

1 . 2 . 3 . 4 . 5 . 6 . 7 . 8 . 9 . 1 0 . 1 1 . 1 2 . 1 3 . 1 4 . 1 5 . 1 6 . 1 7 . 1 8 . 1 9 . 2 0 . 2 1 . 2 2 . 2 3 .

/ ** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * E x e r c i c ed ' a f f i c h a g em u l t i p l e x s u ru n em a t r i c e d e8 x 8L E D s . P I C 1 6 F 8 7 6 A -A n o d e sc o m m u n e ss u rl ep o r t Be tC a t h o d e ss u rP o r t C * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / i n tc o l o n n e s [ 8 ] ; / /T a b l e a ud eh u i t se n t i e r s( 8 x 8 ) i n ti ; / /v a r i a b l ed ec o m p t a g e i n tv ; / /v a r i a b l ed ef r q u e n c ed es c r o l l i n g u n s i g n e ds h o r tI n c C o l ; / /V a r i a b l ed ' i n c r m e n t a t i o nd ec o l o n n e u n s i g n e ds h o r to f f s e t ; v o i dm a i n ( ) / /P r o g r a m m ep r i n c i p a l { d e b u t : / /P r p a r a t i o nd uc a r a c t r ea f f i c h a b l e c o l o n n e s [ 0 ] = 0 b 1 1 1 1 1 1 1 1 ; / / 0 0 0 0 0 0 0 0 c o l o n n e s [ 1 ] = 0 b 1 0 0 0 0 0 0 1 ; / / 0 0 M o t i fc o d c o l o n n e s [ 2 ] = 0 b 1 0 1 1 1 1 0 1 ; / / 0 0 0 0 0 0 s u r8b i t s , c o l o n n e s [ 3 ] = 0 b 1 0 1 0 0 1 0 1 ; / / 0 0 0 0 8c o l o n n e s ,i c i c o l o n n e s [ 4 ] = 0 b 1 0 1 0 0 1 0 1 ; / / 0 0 0 0 u nc a r r d a n s c o l o n n e s [ 5 ] = 0 b 1 0 1 1 1 1 0 1 ; / / 0 0 0 0 0 0 u nc a r r . c o l o n n e s [ 6 ] = 0 b 1 0 0 0 0 0 0 1 ; / / 0 0


4/13

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

2 4 . 2 5 . 2 6 . 2 7 . 2 8 . 2 9 . 3 0 . 3 1 . 3 2 . 3 3 . 3 4 . 3 5 . 3 6 . 3 7 . 3 8 . 3 9 . 4 0 .

c o l o n n e s [ 7 ] = 0 b 1 1 1 1 1 1 1 1 ; / / 0 0 0 0 0 0 0 0 A D C O N 0 = 0 ; T R I S A = 0 ; T R I S B = 0 ; T R I S C = 0 ; P O R T A = 0 ; P O R T B = 0 ; P O R T C = 0 ; v = 0 ; / /A D Cd s a c t i v / /P O R T Ac o n f i g u r e ns o r t i e / /P O R T Bc o n f i g u r e ns o r t i e / /P O R T Cc o n f i g u r e ns o r t i e / /m i s ez r od e sp o r t sA / /m i s ez r od e sp o r t sB / /m i s ez r od e sp o r t sC

w h i l e ( 1 ) / /B o u c l ei n f i n i e { / /a f f i c h a g ed uc a r a c t r e I n c C o l = 0 x 0 0 0 0 0 0 0 1 ; / / i n i t i a l i s a t i o nv a l e u rd ed p a r tb i t0 a l l u m 4 1 . i = 0 ; / /i n i t i a l i s a t i o nv a r i a b l ed ec o m p t a g e 4 2 . 4 3 . f o r( i = 0 ; i < 8 ; i + + ) 4 4 . { / /P o u rie n t r e0e t7 4 5 . P o r t B=c o l o n n e s [ i ] < <o f f s e t ; / /A f f i c h e rl ac o l o n n ei 4 6 . P o r t C=I n c C o l ; / /a c t i v e rl ep o r t Ca ub i td el av a r i a b l e I n c C o l 4 7 . D e l a y _ m s ( 1 ) ; / /l et o u tp e n d a n t1 m s 4 8 . I n c C o l = I n c C o l< <1 ;/ /d e c a l a g ed ' u nb i tg a u c h e 4 9 . i f ( v = = 1 0 0 ) 5 0 . { 5 1 . o f f s e t=( o f f s e t+1 )%8 ; / / s c r o l l i n gg a u c h e 5 2 . v = 0 ; 5 3 . 5 4 . } 5 5 . v + + ; 5 6 . 5 7 . } 5 8 . 5 9 . } 6 0 . } Cette fois-ci le rsultat est celui escompt. Mais je ne comprend pas cette diffrence de luminosit de la matrice. Merci pour ton apport Ced, je vais tacher de comprendre le principe de fonctionnement de cette ligne ajoute.

Message cit 1 fois Message dit par Hearty le 28-01-2010 21:31:33

ced-2k
Hom m e de s tave rne s

Post le 28-01-2010 22:32:19 Hearty a crit :

Bonsoir Ced, Merci de rpondre. Le scroll se fait bien, sauf quelques sauts erratiques, Et l'affichage du caractre se fait correctement, mais lent, tel point que l'on voit le balayage. La variable IncCol permet d'incrmenter la colonne d'affichage. De ce que je sais en MikroC, on ne peut adresser un port individuel que de la manire suivante : portC=0b00000001; ou portC.F0=1;
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 5/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

Je ne connais pas MikroC mais si c'est un compilateur ANSI il doit accepter PortC = i ou PortC = 1 par exemple. 0b00000001 n'est jamais qu'une autre manire d'crire "1", la valeur est la mme !

Hearty a crit :

donc en initialisant 00000001 puis en le shiftant a donne 00000010 etc.. Ne connaissant pas bien l'oprateur modulo, je vais tudier a de prs avec la mthode que tu emplois. Le Wd est bien dsactiv. J'ai test tel que le code que tu proposes avec le scrolling, l'affichage ne se fait que sur trois colonnes (les bits faibles) mais le scrolling se fait de manire fluide.

En effet j'ai t trop vite ! il faut remplacer :


Code :

1 . P o r t C=i ;

/ /s l e c t i o nl i g n ec o u r a n t e

par :
Code :

1 . P o r t C=1< <i ;

/ /s l e c t i o nl i g n ec o u r a n t e

Mais en effet, aprs rflexion, c'est la mme chose que ta variable IncCol, c'est juste une manire plus courte et conomisant une variable
Hearty a crit :

Edit: En modifiant mon code initial, intgrant le modulo cela donne ceci:
Code :

1 . . . .

Cette fois-ci le rsultat est celui escompt. Mais je ne comprend pas cette diffrence de luminosit de la matrice. Merci pour ton apport Ced, je vais tacher de comprendre le principe de fonctionnement de cette ligne ajoute.

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

6/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

La luminosit varie-t-elle suivant le nombre de leds allumes da une ligne (ou colonne)? Tu as utilis le schma de vede? Si oui je pense que cela vient du fait que tu pilotes les leds directement avec les ports du PIC, et il ne sait pas fournir assez de courant quand il y en a trop d'allumes... surtout pour des bleues haute luminosit ! Tu devrais intercaller un transistor PNP entre le port B et les leds ! J'ai un peu jou aussi avec des matrices led (http://blog.crichard.be/), mais malheureusement le projet (ainsi que le blog...) est +- tomb l'eau faute de temps
Message dit par ced-2k le 28-01-2010 22:33:48

Hearty

Post le 28-01-2010 23:28:11

Pour la matrice de LED, j'avais effectivement grav un circuit similaire au schma de Vede, avec des LED 5mm, en guise de matrice d'essais, en ayant en tte de faire une table style Daft Punk. Je vais interfacer, sur les bus, des drivers type ULN20xx. Tu as certainement raison pour ce qui est de la consommation, vu que lors du scroll quand il ne reste qu'une colonne elle est mieux claire. Le code que tu fournis finalement fonctionne trs bien avec la modif. Je suis pass sur ton blog, je vois que tu joues avec des bestioles plus grosses

Message cit 1 fois

ced-2k
Hom m e de s tave rne s

Post le 29-01-2010 09:50:06 Hearty a crit :

Pour la matrice de LED, j'avais effectivement grav un circuit similaire au schma de Vede, avec des LED 5mm, en guise de matrice d'essais, en ayant en tte de faire une table style Daft Punk. Je vais interfacer, sur les bus, des drivers type . Tu as certainement raison pour ce qui est de la consommation, vu que lors du scroll quand il ne reste qu'une colonne elle est mieux claire. Le code que tu fournis finalement fonctionne trs bien avec la modif. Je suis pass sur ton blog, je vois que tu joues avec des bestioles plus grosses

Content que cela marche aprs modif Les ULN20xx sont trs bien en collecteur mais il te faudra tout de mme des PNP en metteur. Je suis au boulot en ce moment, mais quand je rentre chez moi je peux te retrouver quelques liens de montages de matrices led, j'en avais trouv quelques un l'poque
Post le 13-05-2010 11:21:58

Hearty Bonjour, Pour ceux qui avaient suivi l'insoleuse LED UV, Je mettais promis d'apprendre la programmation des controleurs.
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 7/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

J'ai l'intention de refaire une version d'insoleuse double face, utilisants des LED UV plus puissantes. Pour cette version je me suis donn comme challenge de crer ma propre minuterie, sur afficheur LCD. C'est chose faite, ou presque. Il me reste quelques bugs corriger ou amliorer. J'ai pas mal pein, et pass des nuits blanches dessus. mais je vois le bout du tunnel enfin. J'aurais besoin d'aide sur certains points. Le schma:

Le code en MikroC:
Code :

1 . / * 2 . M i n u t e r i eu t i l i s a n tl eT i m e r 0p o u rl ' i n t e r r u p t i o n 3 . A f f i c h a g es u rL C D4b i t s 4 . F BA k aH e a r t y2 0 1 0 5 . C o n t r o l e u r P I C 1 6 F 8 4 A 6 . Q u a r t z :H S ,0 4 . 0 0 0 0M H z 7 . F o r m u l ep o u rl et e m p s: 8 . T e m p s = ( 2 5 6 v a l e u rD c i m a l ec h a r g eT M R 0 )*4*( p r e s c a l e rO P T I O N _ R E G )* 1 / O s c i l l a t e u re nH z 9 . C eq u id o n n e : 1 0 . T = ( 2 5 6 0 ) * 4 * 6 4 * ( 1 / 4 0 0 0 0 0 0 ) = 0 , 9 9 9 4 2 4s e c 1 1 . * / 1 2 . 1 3 . # d e f i n ei n t e r 1P O R T A . F 0 1 4 . # d e f i n ei n t e r 2P O R T A . F 1


soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 8/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

1 5 . 1 6 . 1 7 . 1 8 . 1 9 . 2 0 . 2 1 . 2 2 . 2 3 . 2 4 . 2 5 . 2 6 . 2 7 . 2 8 . 2 9 .

# d e f i n ei n t e r 3P O R T A . F 2 # d e f i n el e d 1P O R T A . F 3 # d e f i n er e l a i sP O R T B . F 0 / / * * * * * * * * * * * * * * * * * * / / D c l a r a t i o nd e sv a r i a b l e s s i g n e ds h o r ti n ts e c o n d e ; / /s e c o n d en o na f f i c h a b l ee nl ' e t a t s i g n e ds h o r ti n tm i n u t e ; s i g n e ds h o r ti n th e u r e ; u n s i g n e ds h o r ti n t B P 1 ; u n s i g n e ds h o r ti n t B P 2 ; u n s i g n e ds h o r ti n t B P 3 ; u n s i g n e dc n t ; u n s i g n e dc n t M n ; c h a r* t e x t ; i n tb u f f e r [ 2 ] ; / / v a r i a b l et a m p o nq u iv ar e c e v o i rl ac o n v e r s i o nV a r i a b l ei n te n s t r i n ga f f i c h a b l e

3 0 . 3 1 . / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 3 2 . / /F o n c t i o nR o m 3 3 . v o i dL C D _ c o n s t O u t ( u n s i g n e dc h a rr o w ,u n s i g n e dc h a rc o l ,c o n s tc h a r* s t r ) / / f o n c t i o np e r m e t t a n t 3 4 . { / / d ' u t i l i s e ru nt e x t e 3 5 . w h i l e ( * s t r ) / /e nR O M s a n sp a s s e r 3 6 . { / /p a rl a R A M 3 7 . L C D _ c h r ( r o w ,c o l + + ,* s t r + + ); 3 8 . } 3 9 . } 4 0 . 4 1 . 4 2 . / / * * * * * * * * * * * * * * * * * * 4 3 . / / I n t e r r u p t i o n 4 4 . v o i di n t e r r u p t ( ){ 4 5 . c n t + + ; / /I n c r e m e n t e rl av a l e u rd ec n tc h a q u ei n t e r r u p t i o n 4 6 . T M R 0 =0 ; / /V a l e u rd c i m a l ep r c h a r g es o u s t r a i r e2 5 6 ( 9 9 ) p o u rd o n n e r1 , 0 0 4 8s e cp o u r8 M h z 4 7 . I N T C O N=0 x 2 0 ; / /S e tT 0 I E ,c l e a rT 0 I F( M e t1l eb i tT M R O I E, E f f a c e ( 0 )l eF l a gT M R O I Fd ed b o r d e m e n td ' i n t e r r u p t i o n ) 4 8 . } 4 9 . 5 0 . / / * * * * * * * * * * * * * * * * * * 5 1 . / / P r o g r a m m ep r i n c i p a l 5 2 . v o i dm a i n ( ){ 5 3 . 5 4 . / / * * * * * * * * * * * * * * * * * * 5 5 . / /I n i t i a l i s a t i o nd e sv a r i a b l e s 5 6 . O P T I O N _ R E G=0 x 8 5 ; / /A s s i g n e rp r e s c a l e rs u rT M R 0 v a l e u r6 4 =1 0 1 ( p o u rq u a r t z4 M z ) 5 7 . T R I S B=0 ; / /P O R T Be ns o r t i e 5 8 . P O R T B=0 x F F ; / /I n i t i a l i s e rl eP O R T B 5 9 . T M R 0 =0 ; / /T i m e r 0V a l e u ri n i t i a l e 6 0 . s e c o n d e = 0 ; 6 1 . m i n u t e = 0 ; 6 2 . c n t=0 ; / /I n i t i a l i s e rc n t 6 3 . c n t M n=0 ; / / C o m p t e u rd e sm i n u t e s 6 4 . l e d 1 = 0 ; / /E t a tL E D 1 6 5 . B P 1 = 0 ; / /E t a tB o u t o n1( S e c o n d e ) 6 6 . B P 2 = 0 ; / /E t a tB o u t o n2( M i n u t e ) 6 7 . B P 3 = 0 ; / /E t a tB o u t o n3( S t a r t ) 6 8 . r e l a i s = 0 ; / /E t a tR e l a i s 6 9 . T R I S A=0 b 0 0 0 0 0 1 1 1 ; / /R A 0 , R A 1e tR A 2e ne n t r e s 7 0 . 7 1 . / / * * * * * * * * * * * * * * * * * * * * * * * * * * 7 2 . / / A f f i c h a g ep r s e n t a t i o n 7 3 . 7 4 . L c d _ C o n f i g ( & P O R T B , 2 , 3 , 0 , 7 , 6 , 5 , 4 ) ; / /I n i t i a l i s e rl eL C Dc o n n e c t a u P O R T B 7 5 . L c d _ C m d ( L c d _ C L E A R ) ; / /N e t t o y e rl ' a f f i c h e u r 7 6 . L c d _ C m d ( L c d _ C U R S O R _ O F F ) ; / /C u r s e u rn o na f f i c h 7 7 . L c d _ c o n s t O u t ( 1 ,4 ," H E A R T Y M E R "); 7 8 . D e l a y _ m s ( 1 0 0 0 ) ;
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 9/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

7 9 . 8 0 . 8 1 . 8 2 . 8 3 . 8 4 . 8 5 . 8 6 . 8 7 . 8 8 . 8 9 . 9 0 . 9 1 . 9 2 . 9 3 . 9 4 . 9 5 . 9 6 . 9 7 . 9 8 . 9 9 . 1 0 0 . 1 0 1 . 1 0 2 . 1 0 3 . 1 0 4 . 1 0 5 . 1 0 6 . 1 0 7 . 1 0 8 . 1 0 9 . 1 1 0 . 1 1 1 . 1 1 2 . 1 1 3 . 1 1 4 . 1 1 5 . 1 1 6 . 1 1 7 . 1 1 8 . 1 1 9 . 1 2 0 . 1 2 1 . 1 2 2 . 1 2 3 . 1 2 4 . 1 2 5 . 1 2 6 . 1 2 7 . 1 2 8 . 1 2 9 . 1 3 0 . 1 3 1 . 1 3 2 . 1 3 3 . 1 3 4 . 1 3 5 . 1 3 6 . 1 3 7 . 1 3 8 . 1 3 9 . 1 4 0 . 1 4 1 . 1 4 2 . 1 4 3 . 1 4 4 . 1 4 5 . 1 4 6 . 1 4 7 . 1 4 8 . 1 4 9 . 1 5 0 .

L c d _ C m d ( L c d _ C L E A R ) ; / /L c d _ c o n s t O u t ( 2 ,1 ," T e m p s"); w h i l e ( 1 ) { / / * * * * * * * * * * * * * * * * * * * * * * * * / / R i n i t i a l i s a t i o n i f ( ( m i n u t e = = 0 ) & & ( s e c o n d e = = 0 ) ) { a r r t I N T C O N=0 x 2 0 ; B P 1 = 0 ; B P 2 = 0 ; B P 3 = 0 ; l e d 1 = 0 ; r e l a i s = 0 ; / / L c d _ C m d ( L c d _ C L E A R ) ; L c d _ C o n s t O u t ( 1 , 2 , " I N D I Q U E RT E M P S ") ; } / / * * * * * * * * * * * * * * * * * * * * * * * * * * / /G e s t i o nB o u t o nd e ss e c o n d e s i f ( i n t e r 1 = = 1 ) { d e l a y _ m s ( 2 0 0 ) ; B P 1 = 1 ; B P 3 = 0 ; s e c o n d e + = 5 ; L c d _ C m d ( L c d _ C L E A R ) ; L c d _ C o n s t O u t ( 1 , 4 , " T E M P SS A I S I ") ; } i f ( ( ( s e c o n d e< 0 ) | |( s e c o n d e> 5 9 ) ) ){ s e c o n d e = 5 9 ; i f ( ( B P 2 = = 0 ) & & ( B P 3 = = 0 ) ){ m i n u t e = 0 ; } m i n u t e ; } / / * * * * * * * * * * * * * * * * * * * * * * * * * * / / G e s t i o nB o u t o nd e sm i n u t e s i f ( i n t e r 2 = = 1 ) { d e l a y _ m s ( 2 0 0 ) ; B P 2 = 1 ; B P 3 = 0 ; m i n u t e + + ; L c d _ C m d ( L c d _ C L E A R ) ; L c d _ C o n s t O u t ( 1 , 4 , " T E M P SS A I S I ") ; } i f ( ( m i n u t e < 0 ) | | ( m i n u t e > 5 9 ) ) { m i n u t e = 0 0 ; } / / * * * * * * * * * * * * * * * * * * * * * * * * * * / /G e s t i o nB o u t o ns t a r t i f( i n t e r 3 = = 1 ) { d e l a y _ m s ( 5 0 ) ; i f ( B P 3 = = 1 ) { B P 3 = 0 ; I N T C O N=0 x 2 0 ; } B P 3 = 1 ; I N T C O N=0 x A 0 ; L c d _ C o n s t O u t ( 1 , 2 , " I N S O L .C I R C U I T ") ; r e l a i s = 1 ; } i f( c n t= = 6 1 ) { l e d 1=~ l e d 1 ; s e c o n d e ; c n t=0 ; } / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * / /A f f i c h a g ed uc o m p t e u r

/ /N e t t o y e rl ' a f f i c h e u r

/ / B o u c l ei n f i n i e

/ / S i0m i n u t e0s e c o n d et o u te s t / / d s a c t i v el eT M R 0

/ / B o u t o nS t a r tr i n i t i a l i s / / L e d 1r i n i t i a l i s e / / R e l a i sr i n i t i a l i s / /N e t t o y e rl ' a f f i c h e u r

/ /N e t t o y e rl ' a f f i c h e u r

/ /M a i n t e n i re n t r e0e t5 9 / /r e t o u r5 9

/ /N e t t o y e rl ' a f f i c h e u r

/ /M a i n t e n i re n t r e0e t5 9 / /r e t o u r5 9

/ / d s a c t i v el eT M R 0

/ /a c t i v el ' i n t e r r u p t i o nT M R O

/ /I n v e r s ee t a tP O R T BL E D s / /d c r m e n t e rl e ss e c o n d e s / /R e s e tc n t

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

10/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

1 5 1 . 1 5 2 . 1 5 3 . 1 5 4 . 1 5 5 . 1 5 6 .

/ / L C D _ C h r ( 2 ,3 ,' > ' ) ; B y t e T o S t r ( m i n u t e , b u f f e r ) ; p o u rp o u v o i rl ' a f f i c h e r L c d _ O u t ( 2 , 5 , b u f f e r ) ; L C D _ C h r _ C P ( ' : ' ); B y t e T o S t r ( s e c o n d e , b u f f e r ) ; p o u rp o u v o i rl ' a f f i c h e r L c d _ O u t _ C P ( b u f f e r ) ; / /c o n v e r t i rl av a r i a b l ee ns t r i n gd a n sb u f f e r

/ / A f f i c h e rl es p a r a t e u r / /c o n v e r t i rl av a r i a b l ee ns t r i n gd a n sb u f f e r

1 5 7 . 1 5 8 . 1 5 9 . } 1 6 0 . } 1 6 1 . 1 6 2 . / / * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * J'ai un petit problme de dclaration de variable, qui n'empche pas le programme de tourner, mais me chiffonne quelque peu. sur cette ligne: ByteToStr(minute,buffer); le compilateur m'indique ceci: Souspicious pointer conversion Je ne vois pas comment rgler ce message. L'autre problme, peut-tre li, est que sur l'afficheur LCD mon caractre en question m'impose deux espaces la gauche du caractre affich, ce qui fait que je ne peux accoler mes chiffres ou les ":" du sparateur. Aussi, comment puis-je lorsque l'affichage se fait en unit afficher "00" ou "01" au lieu de "0" ou "1". Et si quelqu'un voit des redondances ou simplifications possible du code, je reste ouvert a toute proposition. Je peux fournir le fichier ISIS de simulation si besoin est.

Edit: Tous les problmes sont rsolus


Message dit par Hearty le 15-05-2010 06:24:59

Hearty

Post le 27-05-2010 14:01:35

Bonjour, Ma comprhension des PIC s'amliore grandement, Je suis revenu sur la matrice de LED 8x8, et suis reparti de zero pour le code. Toujours dvelopp en MikroC sur un PIC1F876a, Aprs avoir reus mes matrices de LED, je me suis attel la tache. Il me reste apprendre et comprendre comment mettre en relation une chaine de caractre et le tableau des caractres ASCII, afin de saisir de manire plus ergonomique le texte afficher.

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

11/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

Message dit par Hearty le 27-05-2010 18:20:26

chaalali

Post le 02-07-2010 00:55:05

salut les amis je fait un circuit de deux matrice led avec pic 16f877a et deux dcodeurs 47hc164 j'cris sur mikroc un programme qui permet de fixe une phrase dans le deux matrice puis il sera mobile cette action Restaur dans un boucle infini le premiere boucle marche correctement mais la deuxime les caractre sont dcale aide svp chaalali
Post le 02-07-2010 01:00:35

il ya un petite question jais n pas compars le mot ADCON0=0; // ADC dsactiv Qu'est-ce que cela signifie // ADC dsactiv Hearty
Post le 10-07-2010 21:06:46

Bonsoir, Cela signifie que le port n'utilise pas le mode analogique. Je met donc le registre ADCon0 zro, voir le Datasheet du PIC en question. Cela dit depuis, j'ai compltement refait mon code en repartant de zro et la matrice est parfaitement fonctionnelle, le scrolling se fait de manire beaucoup plus fluide, comme le montre la vido poste plus haut.
soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm 12/13

01/04/12

Exercice de programmation MikroC sur PICs - Microcontrolleur &co - Programmation - FORUM Jacky-PC

Message dit par Hearty le 10-07-2010 21:07:29

Google
#F0F0F0-#F7F7F7

Post le

A ller : FO R UM Jack y-PC - Syndrom e -O C Program m ation Microcontrolle ur &co Ex e rcice de program m ation Mik roC sur PIC s

Programmation

Go

Forum Me sDiscussions.Ne t, Ve rsion 2010.1 (c) 2000-2011 Doctissim o Software Page g n r e e n 0.166 se conde s

soj.mesdiscussions.net/soj/Programmation//exercice-programmation-mikroc-sujet_636_1.htm

13/13