ABCelectronique : portail d'information dans le domaine de l'électronique
Home » Diverses rubriques » Archive forum sujets+corp
 
     
   PIC16F877-Sous routine  
J'ai encore un pb, je ne comprend pas pourquoi l'instruction "return" de la sous routine ne fais pas revenir au programme principal!!!

Programme principal:
******************************
start
call C028
******************************
C028
movf 30,0
movwf 37
pu call C024
po clrf PORTB
call t1s
decf 37,1
movlw 0
subwf 37,w
btfsc STATUS,Z
goto re
goto pu
re return ===> il retourne a "pu", donc il tourne en boucle

Merci

Numéro de l'article: 39915   |  De: Bret   |  Date: 2003-07-02 14:11:05
   RE: PIC16F877-Sous routine

btfsc STATUS,Z bit test flag skip if clear
goto re
goto pu

si STATUS,Z is set le µC va à l'instruction qui suit ( en l'occurence goto re)
si STATUS,Z is clear le µC saute (skip) l'instruction qui suit pour exécuter la suivante ( en l'occurence goto pu)

Il ne peut donc exécuter return
Dans quelles conditions veux tu exécuter goto pu, ET exécuter return (ou quitter la routine) ?


Numéro de l'article: 39920   |  De: lem pat   |  Date: 2003-07-02 14:16:38
   RE: PIC16F877-Sous routine
Hello,

tu remplace le btfsc STATUS,Z par un btfsS et tu remplace ensuite le goto re par le RETURN

ça devrait foncitonner comme ça je pense.

Numéro de l'article: 39923   |  De: Marmotte   |  Date: 2003-07-02 14:46:45
   RE: PIC16F877-Sous routine
ok mais je veux tester si le resultat est 0 et non FF.

Si je met "return" a la place de "goto er" cela tourne toujours en boucle

Numéro de l'article: 39924   |  De: Bret   |  Date: 2003-07-02 14:51:39
   RE: PIC16F877-Sous routine
Ah

j'ai mal interp
re return
je fais tjs les étiquettes ainsi
re: return
ou
re:
return

Dans ton cas si STATUS,Z is set il devrait aller à re: et éxecuter return (bref quitter la routine)

Le Z est activé si W=37 (à la suite de subwf)
movlw 0 ; 0 --> W
subwf 37,w ; W-37 -> W

(sauf erreur de ma part pour subwf )


Numéro de l'article: 39927   |  De: lem pat   |  Date: 2003-07-02 15:05:04
   RE: PIC16F877-Sous routine
si 37-w=0 return
si 37-w different de 0 ==>call C024

Numéro de l'article: 39936   |  De: Bret   |  Date: 2003-07-02 15:51:04
   RE: PIC16F877-Sous routine
Vu
et cela fonctionne comme c'est dit?


Numéro de l'article: 39937   |  De: lem pat   |  Date: 2003-07-02 15:56:10
   RE: PIC16F877-Sous routine
he ben non c'est le probleme
il ne retourne pas au prog principal
il retourne a call C024

Numéro de l'article: 39939   |  De: Bret   |  Date: 2003-07-02 16:12:10
   RE: PIC16F877-Sous routine
Et si tu essayais ces trois exemp pour voir

...
movlw 0
movwf 37
movlw 0
subwf 37,w
btfsc STATUS,Z
...

...
movlw 255
movwf 37
movlw 0
subwf 37,w
btfsc STATUS,Z
...

...
movlw 1
movwf 37
movlw 0
subwf 37,w
btfsc STATUS,Z
...



Numéro de l'article: 39958   |  De: lem pat   |  Date: 2003-07-02 17:47:17

   photodiode+PIC  
salut je veux mettre en entrée d'un PIC (entree du CAN) la sortie d'une photodiode préamplifiée (ref. TSL 250). je voulais savoir si je pouvais la brancher telle quelle ou alors si je devais intercaler une resistance...
merci

Numéro de l'article: 39926   |  De: jp   |  Date: 2003-07-02 14:56:19
   RE: photodiode+PIC
JE pense qu'il vaut mieu que tu mette une résistance mais je ne connais pas ton montage donc il est difficile de répondre precisément a ta question!
a+

Numéro de l'article: 39944   |  De: fredo   |  Date: 2003-07-02 16:39:51
   RE: photodiode+PIC
voila
gr_39945

Numéro de l'article: 39945   |  De: huhu   |  Date: 2003-07-02 16:40:28
   RE: photodiode+PIC
tu as egalement besoin d'un niveau 0-5V en entrée de ton PIC!!!!!
a toi de voir maintenent

Numéro de l'article: 39946   |  De: fredo   |  Date: 2003-07-02 16:42:11
   RE: photodiode+PIC
jp = huhu je precise :)

Numéro de l'article: 39947   |  De: huhu   |  Date: 2003-07-02 16:44:55
   RE: photodiode+PIC
à mon avis, il faut mettre une résistance de 10K entre la sortie du TLS et la masse ...A+

Numéro de l'article: 39948   |  De: pym   |  Date: 2003-07-02 16:47:22
   RE: photodiode+PIC
merci
j'en etais pas certain.

Numéro de l'article: 39950   |  De: huhu   |  Date: 2003-07-02 16:53:26

   Cherche Elektor Jan/Fev et Juil/Aout 2002  
Bonjour,
je cherche les numeros de Janvier, Fevrier et Juillet/Aout 2002 de la revue Elektor...
Quelqu'un peut il faire quelque chose pour moi
merci - bon bricolage a tous
Cedric

Numéro de l'article: 39933   |  De: Cedric   |  Date: 2003-07-02 15:31:52
   RE: Cherche Elektor Jan/Fev et Juil/Aout 2002
toujours dispo chez Elektor adresse toi à eux

Numéro de l'article: 40170   |  De: Piraylleur   |  Date: 2003-07-03 16:22:02

   PIC 16F84  
je désirerais savoir si il est possible de faire une platine avec un PIC16F84 qui permet de le programmer tout en l'utilisant tel quel sur la platine ( comme le YBD02 pour le 68HC11). Car c'est plutot ennuieux d'avoir un programmateur et la platine séparés...pour éviter de d'abimer le composant et pour la perte de temps....

Merci

Numéro de l'article: 39934   |  De: seb   |  Date: 2003-07-02 15:35:02
   RE: PIC 16F84
programmation In Circuit ICSP

Numéro de l'article: 39935   |  De: huhu   |  Date: 2003-07-02 15:50:11

   Emeteur et recepteur voiture teleguidée  
je cherche un lien pour un shema d'un emeteur et dun recepteur de voiture teleguidée

Numéro de l'article: 39940   |  De: Bandit972   |  Date: 2003-07-02 16:27:48

   triangulation  
je cherche des conseils pour la triangulation...


komment faire un montage ki fonctionne a moindre cout
j aimerais ossi des exemple de shemas

Numéro de l'article: 39942   |  De: Bandit972   |  Date: 2003-07-02 16:32:39

   datasheet BF256  
je cherche la data COMPLETE du ttor FET bf256!
merci d'avance

Numéro de l'article: 39943   |  De: fredo   |  Date: 2003-07-02 16:37:59
   RE: datasheet
Salut;

moi je n'ai rien trouver...



Numéro de l'article: 39956   |  De: Tronic-man   |  Date: 2003-07-02 17:42:09
   RE: datasheet
donne moi ton adresse mail et je te l'envoie.
version complète avec courbes.

Steph.

Numéro de l'article: 39971   |  De: Steph   |  Date: 2003-07-02 18:32:12
   RE: datasheet
Salut

http://www.elparadise.com/pdfs/bf256.pdf

Numéro de l'article: 39987   |  De: Claude   |  Date: 2003-07-02 19:59:45
   RE: datasheet
mon adresse c'est Fredbre@caramail.com

Numéro de l'article: 40032   |  De: fredo   |  Date: 2003-07-03 08:23:36
   RE: datasheet
merci pr les data!


Numéro de l'article: 40315   |  De: fredo   |  Date: 2003-07-04 11:54:08

   Picbasic + ds1621 + rs232 = gros pb !!  
Bonsoir,

J'utilise un picbasic de chez comfile (lextronic en france, modèle 1S)et je veux lire la température du ds1621 avec une précision de 0.5°C. J'ai donc fais un programme mais celui-ci me sort des trucs du genre "1CFF" sur ma liaison RS232 (PC <=> PIC). Je suis d'accord pour le &H1C qui correspond à la valeur entière de la température, mais pas pour le &HFF qui ne devrait prendre que les valeurs &H00 ou &H80 (,0°C ou ,5°C). Cf. Doc page 4 :
http://pdfserv.maxim-ic.com/arpdf/DS1621.pdf

Je ne sais plus trop quoi faire, ça fait 3 jours que je suis dessus sans résultats
Merci d'avance.


Dim TH As Integer
Dim BF(2) As Byte
Const SCL = 12
Const SDA = 13

GoSub START
SHIFTOUT SCL, SDA, 2, &H90
SHIFTOUT SCL, SDA, 2, &H22
GOSUB STOP
DELAY 30

GoSub START
SHIFTOUT SCL, SDA, 2, &H90
SHIFTOUT SCL, SDA, 2, &HAC
SHIFTOUT SCL, SDA, 2, &H2
GOSUB STOP
DELAY 30

10 GoSub START
SHIFTOUT SCL, SDA, 2, &H90
SHIFTOUT SCL, SDA, 2, &HEE
GOSUB STOP
DELAY 30

GoSub START
SHIFTOUT SCL, SDA, 2, &H90
SHIFTOUT SCL, SDA, 2, &HAA
GoSub START
SHIFTOUT SCL, SDA, 2, &H91
TH.H = SHIFTIN(SCL, SDA, 1, 8)
TH.L = SHIFTIN(SCL, SDA, 1, 8)
'J'ai essayé aussi TH = SHIFTIN(SCL,SDA,1,16)
'Même résultat.

GOSUB STOP
BF(0) = TH.H
BF(1) = TH.L

SEROUT 3, 11, 0, 0, ["||",HEX(BF(0),2,0)]
SEROUT 3, 11, 0, 0, [HEX(BF(1),2,0)]
TH = 0

DELAY 254
GoTo 10

START:
OUT SCL, 1
OUT SDA, 1
OUT SDA, 0
Return

Stop:
OUT SDA, 0
OUT SCL, 1
OUT SDA, 1
Return


Numéro de l'article: 39953   |  De: Franck   |  Date: 2003-07-02 17:25:38
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Personne n'aurait une idée ??

Numéro de l'article: 40004   |  De: Franck   |  Date: 2003-07-02 22:55:09
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Bonjour,

Un petit conseil : il est beaucoup plus facile de "relire" un programme quand celui-ci est commenté : quelques lignes pour indiquer qu'est-ce qui est branché et sur quel port ainsi qu'une ligne indiquant ce que tu fais à chaque groupe de Shiftout serait sympa...
J'ai pas détaillé de près mais, à la lecture du datasheet du DS1621 (avec mon anglais de cuisine ;-), il semblerai que celui-ci envoi un bit d'AKNOW après la transmission de TH puis il faut un nouveau START pour envoyer TL. Dans ton programme, tu lis les deux infos dans la foulée sans le START. Le DS1621 laisse donc son fil de données au niveau haut (il n'envoie pas TL) d'où la lecture de &HFF.
C'est mon idée et elle n'engage que moi...
Tiens-moi au courant...
A+




Numéro de l'article: 40026   |  De: Patche   |  Date: 2003-07-03 00:38:56
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Salut ,

Dim THH As Integer, THL As Integer, BF(2) As Byte
Const SCL = 12
Const SDA = 13

< ESSAIE DE D2CLARER THH et THL, TH.L et TH.H ne signifie rien a première vue, le pic ne les reconnaient peux etre pas.>
>>>GOSUB STOP
BF(0) = TH.H
BF(1) = TH.L

As tu une liaison correcte avec DATA et CLOCK? ( temps et délais de transmission ).

Fabrice.




Numéro de l'article: 40030   |  De: Fabrice   |  Date: 2003-07-03 01:34:36
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Pour Fabrice :
Ce n'est pas la peine, le ".H" et le ".L" indiquent respectivement au Picbasic de prendre en compte l'octet de poids fort et l'octet de poids faible (H=High, L=Low).

Exemple d'utilisation :
(si I est INTEGER)
I.H =12 -->l’octet de poids fort est forcé à 12.
I.L = &H5 -->l’octet de poids faible est forcé à &H5.

A+

Numéro de l'article: 40230   |  De: Patche   |  Date: 2003-07-03 20:15:42
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Sorry, j'avais pas fait le rapprochement.

A+

Fabrice.

Numéro de l'article: 40273   |  De: Fabrice   |  Date: 2003-07-04 02:39:10
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Bonjour et merci pour vos conseils. Comme demandé j'envoi un programme un peu plus détaillé. Celui-ci fonctionne et mesure la température avec une précision de 1°C. J'ai encapsulé la partie qui fait celà entre 2 lignes pointillés.

Matériel utilisé :
- Picbasic 1S de chez comfile / lextronic (www.lextronic.fr)
- DS1302 pour l'horloge en temps réel (fonctionne sans pb).
- DS1621 de chez Dallas pour la mesure de la température :
bus I2C (Clock sur broche 12 / Donnée sur broche 13).
- 256 Ko de mémoire externe utilisable via liaison RS232.
- Liaison RS232 entre le PIC et le PC (fonctionne sans pb).

Je vous rappelle le problème : Mesure la température avec une précision de 0.5°C. Le DS1621 envoi cette donnée sur 2 octets. L'octet de poids fort concernant la valeur entière de la température, le bit de poids fort de l'octet de poids faible la valeur de la décimale (donc soit xx,0°C soit xx,5°C). Quand j'essaye de lire, je me retrouve dans tous les cas de figure avec qquechose du genre : &H1AFF. Je suis d'accord pour le 1A (26°C en décimal) mais le FF ne devrait pas exister !! Juste la valeur &H00 ou &H80.
Cf. Doc page 4 :
http://pdfserv.maxim-ic.com/arpdf/DS1621.pdf

Pour info, c'est le picbasic grâce aux instructions SHIFTIN et SHIFTOUT qui gère les ACK pour pouvoir être compatible avec le bus I2C.

Voilà, veuillez trouver le programme commenté :
Merci d'avance.

'-------------------------------------------------------------
'Dernière modification : 04 Juillet 2003
'Lecture température en HEXA sur 2 capteurs avec précision 1°C
'Lecture toutes les minutes
'-------------------------------------------------------------

DIM TXPC AS BYTE 'Données PC => PIC
DIM H1_BYTE AS INTEGER 'Adresse de poids fort EE
DIM H2_BYTE AS INTEGER 'Adresse de poids moyen EE
DIM L_BYTE AS INTEGER 'Adresse de poids faible EE
DIM H1_BYTE2 AS INTEGER 'Sauvegarde adresse EE
DIM H2_BYTE2 AS INTEGER 'Sauvegarde adresse EE
DIM L_BYTE2 AS INTEGER 'Sauvegarde adresse EE
DIM DATA AS BYTE 'Lecture de la donnée EE
DIM JOUR AS BYTE
DIM MOIS AS BYTE
DIM ANNEE AS BYTE
DIM SEC AS BYTE
DIM MIN AS BYTE
DIM HEU AS BYTE
DIM ADRESSE AS BYTE 'Adresse du pointeur
DIM TH AS BYTE 'Température capteur 1
DIM TH2 AS BYTE 'Température capteur 2
DIM MINPAST AS BYTE 'Valeur précédentes de MIN

CONST SCL = 12 'Broche Clock I2C (DS1621)
CONST SDA = 13 'Broche SDA I2C (DS1621)

H1_BYTE = &H00 'Initialisation adresse EE
H2_BYTE = &H00 'Initialisation adresse EE
L_BYTE = &H00 'Initialisation adresse EE
MINPAST = 61 'Valeur > 60 pour première mesure MIN

GOSUB INITINOUT
GOSUB INITTEMP


DEBUT:
GOSUB ATTENTE
GOTO WRITEE

ATTENTE:' Si incrémentation de MIN alors mesure.
' Sinon attente donnée "L" sur RS232 PC => PIC.
GOSUB RTC
if MIN <> MINPAST THEN RETURN
SERIN 2,11,0,1000,ATTENTE,[WAIT("L"),TXPC]
H1_BYTE2 = H1_BYTE 'Sauvegarde adresse EE
H2_BYTE2 = H2_BYTE 'Sauvegarde adresse EE
L_BYTE2 = L_BYTE 'Sauvegarde adresse EE
GOSUB READEE
H1_BYTE = H1_BYTE2 'Récupération adresse EE
H2_BYTE = H2_BYTE2 'Récupération adresse EE
L_BYTE = L_BYTE2 'Récupération adresse EE
GOTO ATTENTE

INITTEMP:' Initialisation capteurs 1 & 2

GOSUB START
SHIFTOUT SCL,SDA,2,&H90
SHIFTOUT SCL,SDA,2,&HAC
SHIFTOUT SCL,SDA,2,&H03 'Une seule mesure
GOSUB STOP
DELAY 30

GOSUB START
SHIFTOUT SCL,SDA,2,&H92
SHIFTOUT SCL,SDA,2,&HAC
SHIFTOUT SCL,SDA,2,&H03 'Une seule mesure
GOSUB STOP
DELAY 30
RETURN

WRITEE:' Ecriture dans les EEPROM externes
GOSUB RTC
GOSUB READTEMP
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,JOUR]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,MOIS]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,ANNEE]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,HEU]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,MIN]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,TH]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,TH2]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,&HFC]
DELAY 30
L_BYTE = L_BYTE+&H01
IF L_BYTE = &HFF THEN GOSUB INCR1
DELAY 30
SEROUT 5,30,0,0,[&HE0,"W",H1_BYTE,H2_BYTE,L_BYTE,&HFE]
DELAY 30
IF L_BYTE = &HFF THEN GOSUB INCR1
DELAY 30
MINPAST = MIN
GOTO DEBUT

READEE:' Lecture des EEPROM externes
H1_BYTE = &H00
H2_BYTE = &H00
L_BYTE = &H00

FOR L_BYTE = &H00 TO &HFF
SEROUT 5,30,0,0,[&HE0,"R",H1_BYTE,H2_BYTE,L_BYTE]
R1: SERIN 4,30,0,5000,R1,[DATA]
SEROUT 3,11,0,0,[HEX(DATA,2,0)]
' SEROUT 3,11,0,0,[HEX(H2_BYTE,2,0),HEX(L_BYTE,2,0)]
IF DATA=&HFE THEN RETURN
IF L_BYTE = &HFF THEN GOSUB INCR1
SERIN 2,11,0,20,R2,[TXPC]
SEROUT 3,11,0,0,["$$"]
RETURN
R2: NEXT L_BYTE
RETURN

INCR1:
L_BYTE=&H00
H2_BYTE = H2_BYTE+1
RETURN

RTC :' Lecture JOUR/MOIS/ANNEE/HEURE/MIN
OUT 10,1
SHIFTOUT 8,9,0,&H87,8
JOUR = SHIFTIN(8,9,2,8)
JOUR = (JOUR<<1) or JOUR.7
OUT 10,0

OUT 10,1
SHIFTOUT 8,9,0,&H89,8
MOIS = SHIFTIN(8,9,2,8)
MOIS = (MOIS<<1) or MOIS.7
OUT 10,0

OUT 10,1
SHIFTOUT 8,9,0,&H8D,8
ANNEE = SHIFTIN(8,9,2,8)
ANNEE = (ANNEE<<1) or ANNEE.7
OUT 10,0

OUT 10,1
SHIFTOUT 8,9,0,&H85,8
HEU = SHIFTIN(8,9,2,8)
HEU = (HEU<<1) or HEU.7
OUT 10,0

OUT 10,1
SHIFTOUT 8,9,0,&H83,8
MIN = SHIFTIN(8,9,2,8)
MIN = (MIN<<1) or MIN.7
OUT 10,0
RETURN

'----------------------------------------------------
READTEMP:
'Début de la conversion capteur1
GOSUB START
SHIFTOUT SCL,SDA,2,&H91
SHIFTOUT SCL,SDA,2,&HEE
DELAY 1000
GOSUB STOP
DELAY 30

'Valeur de la température capteur1
GOSUB START
SHIFTOUT SCL,SDA,2,&H90
SHIFTOUT SCL,SDA,2,&HAA
GOSUB START
SHIFTOUT SCL,SDA,2,&H91
TH = SHIFTIN (SCL,SDA,1,8)
GOSUB STOP
DELAY 30

'Début de la conversion capteur2
GOSUB START
SHIFTOUT SCL,SDA,2,&H92
SHIFTOUT SCL,SDA,2,&HEE
DELAY 1000
GOSUB STOP
DELAY 30

'Valeur de la température capteur2
GOSUB START
SHIFTOUT SCL,SDA,2,&H92
SHIFTOUT SCL,SDA,2,&HAA
GOSUB START
SHIFTOUT SCL,SDA,2,&H93
TH2 = SHIFTIN (SCL,SDA,1,8)
GOSUB STOP
DELAY 30
RETURN
'----------------------------------------------------


START:' Condition START bus I2C
OUT SCL , 1
OUT SDA , 1
OUT SDA , 0
RETURN

STOP:' Condition STOP bus I2C
OUT SDA , 0
OUT SCL , 1
OUT SDA , 1
RETURN

INITINOUT:' Initialisation sorties

OUT 0,0
OUT 1,0
OUT 2,0
OUT 3,0
OUT 4,0
OUT 5,0
OUT 6,0
OUT 7,0
OUT 8,0
OUT 9,0
OUT 10,0
OUT 11,0
OUT 12,0
OUT 13,0
OUT 14,0
OUT 15,0
OUT 16,0
OUT 17,0
OUT 18,0
OUT 19,0
RETURN



Numéro de l'article: 40306   |  De: Franck   |  Date: 2003-07-04 10:58:47
   RE: Picbasic + ds1621 + rs232 = gros pb !!
MàJ : Après étude attentive de la doc. du DS1621 page 9 sur 17 (http://pdfserv.maxim-ic.com/arpdf/DS1621.pdf) à la ligne "READ FROM A TWO-BYTE REGISTER" je me suis aperçu qu'il fallait un "MASTER ACK" pour que le DS1621 envoi la suite ... Du coup, question du jour : comment réaliser un MASTER ACK ? C'est un renvoi d'infos ou juste un changement d'état ?

Numéro de l'article: 40311   |  De: Franck   |  Date: 2003-07-04 11:44:53
   RE: Picbasic + ds1621 + rs232 = gros pb !!
Ok solution trouvé.
rajouté sous programme "ACK" permettant de générer l'acknoledge. doc. vraiment très mal foutue à ce sujet chez lextronic :-(

Merci de votre aide.

Numéro de l'article: 40357   |  De: Franck   |  Date: 2003-07-04 15:51:43

   PIC16f876 encore ^^  
salut tous !

voila j'ai un pic16f876, j'essai de mettre les pins RA0 et RA1 alternativement a un etat opposée ( cad RA0 = 1 RA1= 0 puis RA0=0 RA= 1), le tout separer par une tempo, bon en programmant le pic avant le prog la (ca va arriver en dessous) ca ne marche pas, enfin je suis une byte en assembleur (mais bon tout s'ameliore, enfin j'espere), enfin si vous pouviez me dire d'ou le soucis viens ? plutot une erreur avec le portA? une erreur d'init? erreur dans la tempo?

vla le prog:

;definition d'une variable de comptage

cblock 0x20
cmpt1 : 1
cmpt2 : 1
cmpt3 : 1
endc

;definition d'une tempo

tempo
movlw d'2' ; pour 2 boucles
movwf cmpt3 ; initialiser compteur3
boucle3
clrf cmpt2 ; effacer compteur2
boucle2
clrf cmpt1 ; effacer compteur1
boucle1
decfsz cmpt1 , 1 ; décrémenter compteur1
goto boucle1 ; si pas 0, boucler
decfsz cmpt2 , 1 ; si 0, décrémenter compteur 2
goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
decfsz cmpt3 , 1 ; si 0, décrémenter compteur 3
goto boucle3 ; si cmpt3 pas 0, recommencer boucle2
return


;initialisation du port A
init
bcf STATUS, RP0
bcf STATUS, RP1
bcf INTCON, 0
bsf STATUS, RP0
bcf OPTION_REG, 5
movlw 0x06
movwf ADCON1
movlw 0x00
movwf TRISA
bcf STATUS, RP0
goto debut
;debut du prog test

start
bsf PCON, 1
goto init
debut bsf PORTA, 0
call tempo
clrf PORTA
bsf PORTA, 1
call tempo
clrf PORTA
goto start
end

le tous a ete fait sous mplab et transmit au pic par ICprog!
enfin pour info l'oscillateur a du mal a demarrer ( fo que je coupe et remet l'alim du pic plusieur fois avant de faire fonctionner un prog bete qui met a 1 une sortie du pic), j'utilise un quartz 4MHz avec 2 condo de 33pF! comment je peut verifier que l'oscillateur oscille bien ( j'ai un oscillo sous la main)?

merci merci si qqun a des reponses!
Babye

Numéro de l'article: 39961   |  De: john   |  Date: 2003-07-02 18:07:27
   RE: PIC16f876 encore ^^
Oops y manque le debut lol!
le vla

;test de prog avec 16f876

LIST P=PIC16F876
include <P16f876.inc>
__config 0x3db1
org 0x0000
goto start

Numéro de l'article: 39964   |  De: john   |  Date: 2003-07-02 18:18:29
   RE: PIC16f876 encore ^^
list p=16F876

include "P16F876.INC"

portb equ 06h ;06 bank0
trisb equ 06h ;86 bank1 1 input 0 output
portc equ 07h ;07 bank0
trisc equ 07h ;87 bank1 1 input 0 output
pclath equ 0ah
pcl equ 02h
status equ 03h ;
rp0 equ 5
rp1 equ 6
adresh equ 1eh ;1e bank 0
adresl equ 1eh ;9e bank 1
adcon0 equ 1fh ;1f bank 0
adcs1 equ 7
adcs0 equ 6
chs2 equ 5
chs1 equ 4
chs0 equ 3

godone equ 2 ;0 si A/D fini
adon equ 0 ;1/0 pour on/off
adcon1 equ 1fh ;9f bank 1
adfm equ 7 ;1 pour right justified
pcfg3 equ 3
pcfg2 equ 2
pcfg1 equ 1
pcfg0 equ 0

spbrg equ 19h ;99 bank 1
txsta equ 18h ;98 bank 1
csrc equ 7 ;clk avec BRG si 1
tx9 equ 6 ;1/0 pour 9/8 bits
txen equ 5 ;enable tx
sync equ 4 ;1/0 pour syn/asyn
brgh equ 2 ;high/low

trmt equ 1 ;1 si registre décalage TX empty
rcsta equ 18h ;18 bank 0
spen equ 7 ;enable RX
rx9 equ 6 ;1/0 pour 9/8 bits
spbrg equ 19h ;99h bank 1
pir1 equ 0ch ;0c bank 0
adif equ 6 ;1 si A/D fini
txif equ 4 ;1 si registre stockage TX empty
pcon equ 0eh ;8e bank 1
txreg equ 19h ;19h bank 0

memo0 equ 20h
memo1 equ 21h
memo2 equ 22h
memo3 equ 23h

memol equ 28h
memoh equ 29h

;code

org 0
goto debut

org 4
goto intrrp

;*******************************************************************

intrrp:
retfie

;*******************************************************************

debut:
nop
bcf status,rp1
bsf status,rp0 ;bank1
movlw 0x3F ;
movwf trisb ;portB output bits 7,6 input bits 5....0
movlw 0x00
movwf trisc ;portC outputs
bcf status,rp0 ;bank0
movlw 0x00
movwf portc ;portC raz
movlw 0xC0
movwf portb ;portB à un

bsf status,rp0 ;bank1
bsf adcon1,adfm ;right justified
bcf adcon1,pcfg3
bcf adcon1,pcfg2
bcf adcon1,pcfg1 ;ref Vdd Vss
bcf adcon1,pcfg0

;***************************************

bcf status,rp0 ;bank0
bcf adcon0,adcs1
bsf adcon0,adcs0 ;Fosc/8 4Mhz
bcf adcon0,chs2
bcf adcon0,chs1
bcf adcon0,chs0 ;channel 0
bsf adcon0,adon ;On

;***************************************

looping:


scru1:
call mgaulgau ;moteur gauche
call mgauldro
btfsc memoh,1
goto scru2 ;cas droite noir
goto scru1 ;reboucler
scru2:
call mgaulgau ;moteur gauche
btfsc memoh,1
goto scru3 ;cas gauche noir
call mgauldro
goto scru2 ;reboucler
scru3:
call mgaulgau ;moteur gauche
call mgauldro
btfss memoh,1
goto scru4 ;cas droite blanc
goto scru3
scru4:
call mdrolgau ;moteur droite
btfsc memoh,1
goto scru5 ;cas gauche noir
call mdroldro
goto scru4
scru5:
call mdrolgau ;moteur droite
call mdroldro
btfsc memoh,1
goto scru6 ;cas droite noir
goto scru5
scru6:
call mdrolgau ;moteur droite
btfss memoh,1
goto scru1 ;cas gauche blanc
call mdroldro
goto looping

;***************************************

mgaulgau:

bsf portc,3 ;PNP moteur gauche on
bsf portc,0 ;NPN
bcf portb,7 ;led gauche on
call tempo
bcf portc,0 ;NPN moteur gauche off
bcf portc,3 ;PNP
call lance0 ;lance gauche
call tempo
bsf portb,7 ;led gauche off
call lire0 ;lecture gauche
return

mgauldro:
bsf portc,3 ;PNP moteur gauche on
bsf portc,0 ;NPN
bcf portb,6 ;led droite on
call tempo
bcf portc,0 ;NPN moteur gauche off
bcf portc,3 ;PNP
call lance1 ;lance droite
call tempo
bsf portb,6 ;led droite off
call lire1 ;lecture droite
return

mdrolgau:
bsf portc,7 ;PNP moteur droite on
bsf portc,4 ;NPN
bcf portb,7 ;led gauche on
call tempo
bcf portc,4 ;NPN moteur droite off
bcf portc,7 ;PNP
call lance0 ;lance gauche
call tempo
bsf portb,7 ;led gauche off
call lire0 ;lecture gauche
return

mdroldro:
bsf portc,7 ;PNP moteur droite on
bsf portc,4 ;NPN
bcf portb,6 ;led droite on
call tempo
bcf portc,4 ;NPN moteur droite off
bcf portc,7 ;PNP
call lance1 ;lance droite
call tempo
bsf portb,6 ;led droite off
call lire1 ;lecture droite
return

;**************************************

;lance channel0

lance0:
bcf status,rp0 ;bank0
bcf adcon0,adcs1
bsf adcon0,adcs0 ;Fosc/8 4Mhz
bcf adcon0,chs2
bcf adcon0,chs1
bcf adcon0,chs0 ;channel 0
bsf adcon0,adon ;On
nop
bsf adcon0,godone ;lance A/D
return

;lecture channel0

lire0:
bcf status,rp0 ;bank0
movlw 0
iorwf adresh,0 ;W<--M channel 0
movwf memoh ;memorisation M
bsf status,rp0 ;bank1
movlw 0
iorwf adresl,0 ;W<--L channel 0
bcf status,rp0 ;bank0
movwf memol ;memorisation L
return

;lance channel1

lance1:
bcf status,rp0 ;bank0
bcf adcon0,adcs1
bsf adcon0,adcs0 ;Fosc/8 4Mhz
bcf adcon0,chs2
bcf adcon0,chs1
bsf adcon0,chs0 ;channel 1
bsf adcon0,adon ;On
nop
bsf adcon0,godone ;lance A/D
return

;lecture channel1
lire1:
bcf status,rp0 ;bank0
movlw 0
iorwf adresh,0 ;W<--M channel 0
movwf memoh ;memorisation M
bsf status,rp0 ;bank1
movlw 0
iorwf adresl,0 ;W<--L channel 0
bcf status,rp0 ;bank0
movwf memol ;memorisation L
return

;temporisation mesurée 3.2ms

tempo:
movlw 20 ;1
movwf memo0 ;1 1->compteur0
temp1:
movlw 5 ;1
movwf memo1 ;1 1->compteur1
temp2:
movlw 5 ;1
movwf memo2 ;1 1->compteur2
temp3:
decfsz memo2,1 ;1(2)
goto temp3 ;2 3µs
decfsz memo1,1 ;1(2)
goto temp2 ;2 3µs
decfsz memo0,1 ;1(2)
goto temp1 ;2 3µs
return ;2

;*****************************************

end



Numéro de l'article: 39969   |  De: lem pat   |  Date: 2003-07-02 18:31:07
   RE: PIC16f876 encore ^^
Merci de la reponse mais ca apporte koi ? desolé de pas voir
a+
si qqun a une idée ,.... euh simple sur mon soucit!
babye


Numéro de l'article: 39974   |  De: john   |  Date: 2003-07-02 18:38:53
   RE: PIC16f876 encore ^^
Salut
------

Pour vérifier l'oscillateur, tu places ton scope sur OSCOUT

A+
Bigonoff


Numéro de l'article: 40023   |  De: Bigonoff   |  Date: 2003-07-03 00:10:07

   Deux diodes têtes bêches. Ben pourquoi????  
Bonjour a tous

J'aimerais savoir à quoi servent deux diodes têtes bêches sur un circuit qui à la base a deux masses différents et qui s'unissent après ces diodes. Ca va être plus clair avec le dessin.
gr_39966

Numéro de l'article: 39966   |  De: axl639   |  Date: 2003-07-02 18:22:51
   RE: Deux diodes têtes bêches. Ben pourquoi????
Comprends pas ta question. Le schéma n'est pas là !!!

Numéro de l'article: 39979   |  De: Alaingénieux   |  Date: 2003-07-02 19:14:58
   RE: Deux diodes têtes bêches. Ben pourquoi????
Je suis pas sur du coup, mais à prioris c pour assurer une ddp constante entre les deux masses.

Numéro de l'article: 39992   |  De: julien   |  Date: 2003-07-02 20:57:53
   RE: Deux diodes têtes bêches. Ben pourquoi????
Bonjour

c'est quoi ces deux circuits ??

à bientôt

Numéro de l'article: 40009   |  De: EPERVIER   |  Date: 2003-07-02 23:13:42
   RE: Deux diodes têtes bêches. Ben pourquoi????
ca va faire un ecretage de ton signal entrre - 0,6V et + 0,6V!!

Numéro de l'article: 40014   |  De: jul   |  Date: 2003-07-02 23:29:26
   RE: Deux diodes têtes bêches. Ben pourquoi????
Etrange

Comme demande epervier, quelles sont les fonctions de circuit1 & 2
Dans quel appareil ?


Numéro de l'article: 40039   |  De: lem pat   |  Date: 2003-07-03 10:06:22
   RE: Deux diodes têtes bêches. Ben pourquoi????
je saurai pas t'expliquer le principe electrique mais je sait que ds les amplis de fortes puissances on fait souvent ca entre la masse et la terre ca retire facile 30% de bruis...

Numéro de l'article: 40276   |  De: minman   |  Date: 2003-07-04 03:22:43
   RE: Deux diodes têtes bêches. Ben pourquoi????
simple: ca evite des grandes tensions entre les masses sans pour autant qu il y ait des courants de boucles de masse importants

Numéro de l'article: 41896   |  De: guerrier   |  Date: 2003-07-16 16:44:57

   famille des 40xx  
je vien de comprendra le fonctionnement du 4051 alors j ai alors decider kun 4053 serai plu approprié a mon mon montage

on dit ke se sont 3 multiplexeurs or ils sont kommandé par les meme entrees ABC .

et pui a koi sert l etrée INH

je cherche le document technique du 4053

merci

Numéro de l'article: 39968   |  De: Bandit972   |  Date: 2003-07-02 18:29:06
   RE: famille des 40xx


salut;

http://datasheets1.free.fr/CD4000/4053.pdf

vala..

@+

Numéro de l'article: 39978   |  De: paul   |  Date: 2003-07-02 19:14:46

   68HC11  
je cherche la doc technique du 68HC11...


merci

Numéro de l'article: 39970   |  De: Bandit972   |  Date: 2003-07-02 18:31:08
   RE: 68HC11
salut !

Tu tape 68HC11 sur google, et tu prends le premier site !

Amitiés

NB: CE premier site est ttrés complet, avec plein de liens

Numéro de l'article: 39985   |  De: 14bds75   |  Date: 2003-07-02 19:47:02

   Afficheur Graphique  
Salut,

Je desirerais realiser un jeu avec un PIC 16F876, pour cela je souhaiterais comme interface avec le joueur un ecran graphique couleur de taille d' environ 10cm X 5cm tactile ou pas je ne sais pas encore. Cela dependra du prix de cet ecran et de sa complexite a mettre en oeuvre.

Je recherche donc toutes infos concernant:

- ou trouver ce genre d'ecran
- exemple de montages similaires
- exemples de gestion de ce genre d'ecrans

merci d'avance,
Gilles



Numéro de l'article: 39973   |  De: Gilles   |  Date: 2003-07-02 18:36:16
   RE: Afficheur Graphique

Salut;

...je crois qu'il y a eu un truc dans l'electronique pratique n°2xx

je me souvien plus du nom, j'avais vu ça a la librairie...


Rearde sur leur site dans les numero entre 260 et 270...



CiAo

Numéro de l'article: 39976   |  De: Tronic-man   |  Date: 2003-07-02 18:46:58
   RE: Afficheur Graphique
..j'ai trouver le lien...


http://www.electroniquepratique.com/article.asp?mag=EP&num=274&article=8



CiAo

Numéro de l'article: 39977   |  De: Tronic-man   |  Date: 2003-07-02 18:54:40
   RE: Afficheur Graphique
Il ya aussi l'ecran de la gameboy

Olivier

Numéro de l'article: 39993   |  De: gemiolac   |  Date: 2003-07-02 21:49:07

   COMMENT FAIRE POUR BOOSTER UN AMPLI ???  
Je voudrai savoir komen on peu fer pour booster un ampli de voiture.kel composants changer ??
le vien est un deux canaux. merci

Numéro de l'article: 39981   |  De: Julien   |  Date: 2003-07-02 19:21:02
   RE: COMMENT FAIRE POUR BOOSTER UN AMPLI ???
Ca dépend de la puissance actuelle.Le + gros problème sur autoradio est la tension d'alim. Pour booster vraiment l'ampli, il faut monter la tension avec une alim à découpage mais c'est pas simple. Attention aussi au radiateur qui risque d'être insuffisant. @+

Numéro de l'article: 39982   |  De: Alaingénieux   |  Date: 2003-07-02 19:25:31
   RE: COMMENT FAIRE POUR BOOSTER UN AMPLI ???
Achetez un plus gros.

Mais ce n'est pas les "watts" qui fond une bonne install...

A+
Ren


Numéro de l'article: 40020   |  De: Ren   |  Date: 2003-07-02 23:44:15
   RE: COMMENT FAIRE POUR BOOSTER UN AMPLI ???
Salut
-------

D'accord avec Ren :)
Booster un ampli = remplacer l'ampli.

A+
Bigonoff


Numéro de l'article: 40250   |  De: Bigonoff   |  Date: 2003-07-03 22:00:43

   ampli pour faire un autoradio  
Salut à tous, encore une fois, j'ai besoin de votre aide éclairée.
Je viens de récuperer un vieil ampli d'une chaine hifi, mon autoradio venant de lacher, je pensais à le metre dans mon coffre et y brancher un lecteur cd portable.
Pensez vous que je pourrais l'allimenter avec les 12v de la batterie?
En vous remerciant par avance.

Numéro de l'article: 39986   |  De: julien   |  Date: 2003-07-02 19:47:31
   RE: ampli pour faire un autoradio
si ton apli est monotension pas de soucis sinon installe un convertisseur 12/200v

Numéro de l'article: 39988   |  De: gregelec   |  Date: 2003-07-02 20:01:38
   RE: ampli pour faire un autoradio
Bonjour


Sinon un oscillateur BF(+/- 20khz), des drivers mos-fet, un transfo ferrite avec point milieu, un redresseur , deux condos ..


ou comme gregelec

ou tu achetes un amplis 2x 20 w = 50 euros

à bientôt

Numéro de l'article: 40008   |  De: EPERVIER   |  Date: 2003-07-02 23:11:31

   PIC: 2ème oscillateur 32KHz  
Bonjour,

J'utilise un PIC (18F452) et je veux deux oscillateur. Le deuxième de 32kHz se branche sur les pins RCO/T1OSO et RC1/T1OSI. d'après les docs, il faux mettre le bit T1OSCEN du registre T1CON à 1.
MAIS cela ne fonctionne pas !!!!!!!!!!
Merci de votre aide.

Olivier

Numéro de l'article: 39997   |  De: gemiolac   |  Date: 2003-07-02 22:01:38