un BP deux sorties en asm ?

< Sujet précédent  Sujet suivant >
Index du Forum -> Forum des Projets fin d'études, mini-projets et des réalisations electroniques -> Mini-projets
AuteurMessage
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 22/09/2009 15:42  
un BP deux sorties en asm ?
salut a tous

je n'arrive pas a ecrire en asm , la chose suivante
j'ais un BPoussoir et je voudrais qu' a la premiere pression sur ce BP
on va dire qu'il est sur RA0 , la sortie du pic (on va dire 16f84)
la sortie donc du pic RB0 passe a "1" , deuxieme solicitation du BP
c'est la sortie RB1 qui passe a "1"
peux importe si les sorties restent ou pas a "1"
si quelqun pouvait m'ecrire ces lignes et faire quelques commentaire dessus ce serait sympas.
merci

Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 22/09/2009 19:30  
RE : un BP deux sorties en asm ?
Bonjour,
Ce que tu demande est très simple comme programme mais l'important ici c'est l'Algorithme c.à.d comment on va faire pour obtenir le résultat, voici tout d'abord l'algorithme que tu peux le transformer en n'importe quel langage, puis je te donnerais le programme en asm :

Code :


algorithme bouton;
variable i,j : octet;
Debut
porb <-- 0; // sortie
porta <--- $FF; // entrée
portb <--- 0 ; // initialisation des sorties
i <--- 0 ;
j <--- 0 ;
tant que (vrais) faire
Début
si ((porta.0 = 1) et (i= 0)) alors
debut
portb.0 <--- 1 ;
i <--- 1;
finsi;
si ((porta.0 = 0) et (i = 1)) alors
debut
j <--- 1;
finsi;
si ((porta.0 = 1) et (j = 1)) alors
debut
portb.1 <--- 1;
finsi

finfaire;
fin.


j'espère que c'est clair et maintenant voila ton programme en asm :


Code :


; ADDRESS OPCODE ASM
; ----------------------------------------------
$0000 $2804 GOTO _main
$0004 $ _main:
;Début
;trisb <--- 0;

$0004 $1303 BCF STATUS, RP1
$0005 $1683 BSF STATUS, RP0
$0006 $0186 CLRF TRISB, 1
;trisa <--- $FF;
$0007 $30FF MOVLW 255
$0008 $0085 MOVWF TRISA
;portb <--- 0;
$0009 $1283 BCF STATUS, RP0
$000A $0186 CLRF PORTB, 1
;i<--- 0; j<---0;
$000B $018C CLRF _i, 1
$000C $018D CLRF _j, 1
;Tantque (vrais) faire
$000D $ bouton_L_2:
;Si ((porta.0 = 1) et (i= 0)) alors
$000D $0805 MOVF PORTA, 0
$000E $00C2 MOVWF STACK_2
$000F $3001 MOVLW 1
$0010 $05C2 ANDWF STACK_2, 1
$0011 $0842 MOVF STACK_2, 0
$0012 $3A01 XORLW 1
$0013 $30FF MOVLW 255
$0014 $1D03 BTFSS STATUS, Z
$0015 $3000 MOVLW 0
$0016 $00C1 MOVWF STACK_1
$0017 $080C MOVF _i, 0
$0018 $3A00 XORLW 0
$0019 $30FF MOVLW 255
$001A $1D03 BTFSS STATUS, Z
$001B $3000 MOVLW 0
$001C $00C0 MOVWF STACK_0
$001D $0841 MOVF STACK_1, 0
$001E $05C0 ANDWF STACK_0, 1
$001F $1903 BTFSC STATUS, Z
$0020 $2824 GOTO bouton_L_7
$0021 $ bouton_L_6:
;portb.0 <--- 1;
$0021 $ bouton_L_9:
$0021 $1406 BSF PORTB, 0
$0022 $ bouton_L_10:
;i<--- 1;
$0022 $3001 MOVLW 1
$0023 $008C MOVWF _i
;Finsi;
$0024 $ bouton_L_7:
$0024 $ bouton_L_8:
;Si ((porta.0 = 0) et (i = 1)) Alors
$0024 $0805 MOVF PORTA, 0
$0025 $00C2 MOVWF STACK_2
$0026 $3001 MOVLW 1
$0027 $05C2 ANDWF STACK_2, 1
$0028 $0842 MOVF STACK_2, 0
$0029 $3A00 XORLW 0
$002A $30FF MOVLW 255
$002B $1D03 BTFSS STATUS, Z
$002C $3000 MOVLW 0
$002D $00C1 MOVWF STACK_1
$002E $080C MOVF _i, 0
$002F $3A01 XORLW 1
$0030 $30FF MOVLW 255
$0031 $1D03 BTFSS STATUS, Z
$0032 $3000 MOVLW 0
$0033 $00C0 MOVWF STACK_0
$0034 $0841 MOVF STACK_1, 0
$0035 $05C0 ANDWF STACK_0, 1
$0036 $1903 BTFSC STATUS, Z
$0037 $283A GOTO bouton_L_12
$0038 $ bouton_L_11:
;j<--- 1;
$0038 $3001 MOVLW 1
$0039 $008D MOVWF _j
;finsi;
$003A $ bouton_L_12:
$003A $ bouton_L_13:
;Si ((porta.0 = 1) et (j = 1)) alors portb.1 <---1;
$003A $0805 MOVF PORTA, 0
$003B $00C2 MOVWF STACK_2
$003C $3001 MOVLW 1
$003D $05C2 ANDWF STACK_2, 1
$003E $0842 MOVF STACK_2, 0
$003F $3A01 XORLW 1
$0040 $30FF MOVLW 255
$0041 $1D03 BTFSS STATUS, Z
$0042 $3000 MOVLW 0
$0043 $00C1 MOVWF STACK_1
$0044 $080D MOVF _j, 0
$0045 $3A01 XORLW 1
$0046 $30FF MOVLW 255
$0047 $1D03 BTFSS STATUS, Z
$0048 $3000 MOVLW 0
$0049 $00C0 MOVWF STACK_0
$004A $0841 MOVF STACK_1, 0
$004B $05C0 ANDWF STACK_0, 1
$004C $1903 BTFSC STATUS, Z
$004D $284F GOTO bouton_L_15
$004E $ bouton_L_14:
$004E $ bouton_L_17:
$004E $1486 BSF PORTB, 1
$004F $ bouton_L_18:
$004F $ bouton_L_15:
$004F $ bouton_L_16:
;Finsi;
$004F $280D GOTO bouton_L_2
;FIN.
$0050 $2850 GOTO $





Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 22/09/2009 20:00  
1253642423.zip (2 Ko)
RE : un BP deux sorties en asm ?
voici aussi les fichier bouton.asm et bouton.hex j'ai oublié de les joindre dans mon message

Bonne chance

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 23/09/2009 12:05  
RE : un BP deux sorties en asm ?
franchement , je suis pantois ! rapidité de la réponse , compétence
avec explication a l'appuie ....que dire simplement merci me semble bien
peux de chose.
mais merci encore , voila un forum ou le "blabla" histoire d'allonger le post , n'as pas court.
j'éssaye et te tiens au courant .
mais une question ? avec quoi tu l'as compiler ? Mplab ne reconnait pas la touche dollar non ?

bon je reviens apres quelques galéres...
(pardonnez moi je débute vraiment)
j'utilise logipic , mais je ne décole pas de cet "algo" , je n'arrive pas a allez plus loin.
lien

Edité par max le 23/09/2009 19:26
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 23/09/2009 22:57  
1253739440.zip (8 Ko)
RE : un BP deux sorties en asm ?
si joint le programme avec logipic tu trouveras les fichiers nécessaires .prj et .asm et .hex
j'ai testé ce programme avec une simulation sous ISIS et normalement tout va bien.
pour le code assembleur de mon premier message j'utilise Mikropascal comme compilateur mikropascal compile et génère de l'assembleur aussi ! on peut même ouvrir des fenêtres .asm à l'intérieur d'un code Pascal

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 24/09/2009 13:37  
RE : un BP deux sorties en asm ?
je n'arrive pas a ouvrir le fichier logipic (j'ais pourtant la version 2.11)
érreure a l'ouverture , chez moi logipic fonctionne bien.
mais pas avec ce fichier ?.
en simulation ss isis la led sur RB0 s'allume , deuxieme action sur le BP --> rien. ?
lien

j'ais réussis le montage avec des bascules 4013 ça fonctionne tres bien
mais je voulais faire la même chose avec un pic (gain de place)
ce sera un ajout a une platine plus importante
mon montage avec des bascules -->lien

le projet sera donc --> 4 BP (RA0....RA3)
chacun active a la premiere impulsion 1 sortie , a la deuxieme l'autre --->
RA0 --> RB1/RB2 .....RA1--> RB3/RB4 exct.....4 entrées 8 sorties.
merci
une "ébauche" qui reste a compléter de mon programme
mais j'aimerais comprendre , je l'ais dejas dit , je débute vraiment
et malgré toutes les lecture (achat de livre..pascal mayeux..bigonof.exct.)
je "rame"
assez causer voila ce que j'ais fait ---->

;++++++++++++ GESTION 4 CAPTEURS / 8 SORTIES +++++++++++++++

; Date :24-09-2009
; Heure :13:47:17


;************* commentaires *************

; 4 capteurs , en entrée , chaque capteur doit , a la premiere
;sollicitation activer une sortie , a la deuxieme une autre sortie
;et immediatement lancer une temporisation de 30 minutes.
;ensuite aucune action sur ce capteur n'aura d'effet.
;exemple, RA0 a "1" une premiere fois ,montera la sortie RB1 , s'il y'a
;une deuxieme action sur RA0 , ce sera RB2 qui sera a "1"
;idem pour RA1-->RB3/RB4...RA2-->RB5/RB6...RA3-->RB7/RB8.
; l'interuption sur RB0 sera une fonction de "neutralisation"
; de toutes les entrées ,des qu'une entrée est activer , la sortie
;correspondante sera a "1" (la premiere ou la deuxieme..)
;des cet instant une temporisation de 30 minutes sera lancée afin de neutraliser
;tout les capteurs en entrée , aucun capteur n'aura d'effet sur les sorties du PIC
;pendant la temporisation.
;apres ces 30 minutes ,le PIC est de nouveau pret a recevoir un ordre.


;............................................................

;************ Directive d' assemblage pour MPLAB ***********

list p=16f84A
#include p16f84A.inc
__Config _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
;.............................................................




;******************** Variables utilisées ****************

CAPT1 equ C
CAPT2 equ D
CAPT3 equ E
CAPT4 equ F
tempo
;............................................................


;********** Numero de version / données EEPROM ***********

ORG h'2100'
de "Version 1.0"

;............................................................


;***************** Programme principal *******************

ORG 0
GOTO init

;............................................................

;*********** Sous Programme d 'interruption **********

ORG 4

;-------- IT sur RB0 --------




bcf,INTCON,INTF ;on raz le flag INTF

retfie ; retour d 'interruption

;............................................................

; ------------------ Programme d' INIT ---------------------------

init
bsf INTCON,GIE ; autorise les Interruptions
bsf OPTION_REG, INTEDG ; Le passage de 0 à 1 sur RB0 provoque une IT
; sur un front montant ( choix du front sur RB0 )
bsf INTCON,INTE ; autorise l ' IT sur RB0
bsf STATUS,5 ; on met à 1 le 5eme bit du registre status pour accéder
; à la 2eme page mémoire ( pour trisa et trisb )
MOVLW B'00000001' ; programmation de rb0-rb7
MOVWF TRISB ; on met 00000001 dans le registre de direction du port B
MOVLW B'01111' ; programmation de ra0-ra4
MOVWF TRISA ; on met 01111 dans le registre de direction du port A
bcf STATUS,5 ; on remet à 0 le 5eme bit du registre status pour accéder
; à la 1eme page mémoire
clrf PORTA ; raz du port A
clrf PORTB ; raz du port B
;..................................................................


; -------------------- Programme -------------------

DEBUT
btss capt1 ;si le capteur 1 est activer
goto debut ; non , on va a debut

btss capt2 ;si le capteur 2 est activer
goto debut ; non , on va a debut

btss capt3 ;si le capteur 3 est activer
goto debut ; non , on va a debut

btss capt4 ;si le capteur 4 est activer
goto debut ; non , on va a debut





end ; fin du programme



Edité par max le 24/09/2009 14:38
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 25/09/2009 00:41  
RE : un BP deux sorties en asm ?
Bonjour,
pour les fichiers j'ai utilisé Logipic 1.54g.
mais si tu veux voici ci joint le programme en Mikropascal, la version demo permet de compiler jusqu'à 2ko de .hex donc largement suffisante pour un PIC16F84 et pour ton application de plus je te conseille d'utiliser un PIC16F628 pour économiser l'horloge puisqu'il dispose d'une horloge interne et moins cher en plus, regarde http://www.technologuepro.com/microcontroleur/programmation_mikropascal.htm pour apprendre la programmation.

pour voir et recompiler le programme tu dois ouvrire le fichier bouton.ppp avec mikropsacl et passer par le menu Projet/open project ok plus d'info ici http://www.technologuepro.com/microcontroleur/Tutorial_mikropascal.htm

je reviendrais ici demain soir @+


Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 25/09/2009 00:45  
1253832355.zip (6 Ko)
RE : un BP deux sorties en asm ?
j'oublie toujours de joindre le fichier le voici maintenant

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 25/09/2009 02:18  
RE : un BP deux sorties en asm ?
j'ais un 16f84 que je voulais utiliser (un 16c71 de fond de tiroir aussi)

j'ais telecharger logipic 1.54g , je vois bien "l'algo" que tu as fait
mais en simulation je ne fais qu'allumer une seule led.

mon projet est détaillé plus haut ,le programme que tu me propose c'est bien les 4 boutons en entrée sur 8 sorties (2x4) ?
quelques chose m'échappe désolé..tu pense qu'il est possible de réaliser le même fonctionnement que le montage que j'ais réaliser a l'aide de bascules 4013 ? ..la temporisation en plus...(video plus haut)

voila ou j'en suis

l'algorithme
lien
la video
lien

4 BP (contacts) allument 4 leds , avec une temporisation ,ça fonctionne
mais je ne vois toujours pas comment un BP peut,un coup allumer une led
et le deuxieme "coup" en allumer une autre ..!

l'erreure que j'ais faite des le debut c'est de m'etre orienté vers l'ASM.!
je n'y connais rien en microcontroleurs , mais ça "me parlais" l'asm...
je suis electricien et il m'arrive d'intervenir dans mon job sur des API (automates programmable industriels) donc le language a contact et mémo de bit interne je connais...mais la ???
Je vais voir du coté de MICROPASCAL...,
merci pour ton aide

Edité par max le 25/09/2009 23:08
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 25/09/2009 23:28  
RE : un BP deux sorties en asm ?
Bonjour,
le programme en mikropascal c'est pour un seul bouton je vais t'envoyer d'ici 30 mn un programme complet en se basant sur cette description :

Citation :
le projet sera donc --> 4 BP (RA0....RA3) chacun active a la premiere impulsion 1 sortie , a la deuxieme l'autre ---> RA0 --> RB1/RB2 .....RA1--> RB3/RB4 exct.....4 entrées 8 sorties.



Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 26/09/2009 00:11  
1253916688.zip (34 Ko)
RE : un BP deux sorties en asm ?
Voici le programme avec un fichier de simulation sous isis exactement comme suit :
4 BP (RA0....RA3) chacun active a la premiere impulsion 1 sortie , a la deuxieme l'autre ---> RA0 --> RB1/RB2 .....RA1--> RB3/RB4 exct.....4 entrées 8 sorties.

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 26/09/2009 01:26  
RE : un BP deux sorties en asm ?
trés franchement, je suis bluffer !! mais il y'a une chose que je n'est pas
dite !
ce "mini" projet est une idée a moi ( grace a ton aide cela a été plus vite)
allez je t'explique tout !

au depart je cherchais une alarme habitation qui "sort" de l'ordinaire..
je suis abonné a electronique pratique , des alarmes j'en ais vu et fait des tas ! mais
toutes avaient au moin un coté qui ne me plaisait pas !
jusqu'a ce que je tombe sur une revue anglaise "EPEE MAG"
l'auteur (disparu en juillet dernier) a dévelopé une alarme a base de pic
et LCD vraiment pas mal ! mais.... je lui est trouver quelques lacunes ,
j'ais modifier tres légerement le programme pour avoir le texte de l'afficheur en français , et supprimer quelques lignes de prog.
et... la modif qui nous occupe , c'est a dire....
cette alarme a l'origine 8 zones donc 8 capteurs , que l'ont peut ou pas sélectionner via un clavier de commande (doc ci dessous)
des qu'une zone a donne l'alarme c'est fini , cette zone est HS , c'est a dire qu'elle ne fonctionnera plus , le concepteur l'a voulu ainsi!
imaginons, un "intrus" (l'alarme se nomme justement intruder)
un intrus déclenche une zone (faisceau ou...pour moi je les mets a l'exterieure ,--> alarme, il se sauve et passe par une autre zone,qu'il risque de déclencher aussi !! voir même plusieurs zones , on se retrouve avec plusieurs zones hors service !!
en faisant cette modif et en la rajoutant a mon circuit principale
je ferais un seul circuit avec les deux PIC. j'aurais 4 capteurs qui pouront
actionnés 8 zones , chaque capteur pourra fonctionner deux fois
(un fusil a deux coups..

la dérniere modif a rajouter a cet impressionnante alarme c'est la temporisation , je prévois la chose suivante , une alarme se produit ,
on peut etre sur que personne ne s'approchera de la maison dans les 30 minutes , d'ou..des qu'un capteur alerte l'alarme , une tempo de "standby"
de 30 minutes va inihber le 16f84 qui ne verra plus ses entrées pendant 30 minutes , apres ces 30 minutes le systeme est de nouveau operationnel
autre avantage de ce systeme , un orage de grêle ou autre chose...
déclenche un capteur....on a 30 mn , pour que le systeme retombe sur ses "pieds" , comme tu le vois j'ais pensé a tous ,sauf.......l'heure a laquelle
"l'intrus" risque de passé a la maison !
le site ne propose plus le lien , je post la doc sur free
alarm intruder
apres modif , la simulation de l'alarme avec des bascules (seront remplacées par le pic 16f84)
simul.alarme
des que j'ais finis le crcuit sous ares et les essaies je la proposerait a ceux que ça intérrésse.

le test de l'alarme (encore avec les bascules 4013)
lien

me reste cette histoire des 30 minutes de "standby" , je vais voir comment m'y prendre pour cela ,a moin que toi tu as dejas "pércuter" , j'ais plein de "ressources" mais je réfléchi tellement lentement !..

dis moi tu fait quel metier si ce n'est pas trop indiscret ?
si tu me réponds " prof " je quitte le forum a jamais !...ils m'ont tellement torturer !

Edité par max le 26/09/2009 14:47
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 27/09/2009 01:29  
RE : un BP deux sorties en asm ?
ail !! j'ais peur que tu n'est pas apprécié ma plaisanterie sur les prof , je plaisantais bien sur ,
merci milles fois pour ton aide l'ami.
voila un forum a conseillé , ce que je ne vais pas manqué de faire , je m'étonne qu'il n'y est pas plus de monde que ça , c'est une mine d'or de connaissance et de ....compétence içi !

Edité par max le 27/09/2009 01:30
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 27/09/2009 15:54  
RE : un BP deux sorties en asm ?
Bonjour,
j'étais tout simplement indisponible hier c'est pour ça que je t'ai pas répondu, je sais bien que c'est une plaisanterie ne te préoccupe pas de ça et Merci pour les compliments ça me fait un grand plaisir.
je dois quitter maintenant, je continuerais ma réponse ce soir

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 27/09/2009 19:36  
RE : un BP deux sorties en asm ?
ouf ! tu me rassure .
dit moi , comme expliqué plus haut ,je voulais faire une temporisation
de 30 minutes -->une entrée du 16f84 est activée , cette temporisation va mettre en "standby" le 16f84 de façon a ce qu'il ne prenne plus en compte aucune entrée pendant 30 minutes (expliqué plus haut)
mais la j'aimerais que ce soit moi qui "travaille" un peux , et en....
Mikropascal , j'ais tres envie de me mettre a ce language qui sera peut etre plus compréhensible pour moi.
mais pour cela je te demanderais simplement des exemple simple a partir desquels j'essaierais de faire ce que je veux.
a savoir , un exemple d'ecriture ---> un BP "monte" une sortie.
il est relaché la sortie est a zero.
-->un BP monte une sortie mais temporairement (monostable)
des que j'aurais "cogité" cela,j'essaierais de faire le travail cité plus haut.
tu corrigera s'il le faut
qu'en pense tu ?
merci..........heuuu tu n'est pas "prof" quand même ?.. ok, je sort !

Edité par max le 27/09/2009 19:38
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 28/09/2009 01:54  
RE : un BP deux sorties en asm ?
salut,

Citation :
une entrée du 16f84 est activée , cette temporisation va mettre en "standby" le 16f84 de façon a ce qu'il ne prenne plus en compte aucune entrée pendant...


c'est simple il suffit d'ajouter une attente juste après la dernière instruction correspondant au traitement de l' évènement d'intrusion.
temporisation c'est : delay_ms(temps en milliseconde);
par exemple :

Code :


if ((porta.0 = 1) and (i0= 0)) then
begin
portb.0 := 1;
i0:=1;
delay_ms(1000);
end;

ici on a une attente "standby" d'une seconde juste après avoir activer RB0
Attention la procédure delay_ms( ) n'accepte pas des valeurs très grandes pour arriver à tes 30 mn il te faut un astuce qui est :
utiliser une hrologe < ou = 1MHz et ensuite programmer l'attente comme suit:

Code :


for k:= 0 to 29 do delay_ms(60000);

ce qui correspond bien à une attente de 30 mn
pour le programme que je t'ai déjà donné il faut que tu change la valeur de l'horloge de 4MHz à 1MHz : Projet --> Edit project --> Clock

Bon travail

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 28/09/2009 13:15  
RE : un BP deux sorties en asm ?
merci l'ami .
c'est fait , test terminé ça fonctionne assez bien, "assez" parce que (voir la vidéo)
si un contact de zone est activé , il y'a bien temporisation entre la première et deuxième action
sur le contact de la zone dite.
mais....si on change de zone (autre contact) alors que l'on vient juste d'activer le deuxième
contact de la zone précédente , il n'y aura pas de temporisation.
je me posais la question suivante ,on voit que le port RA4 , est libre , réaliser une interruption
sur RA4 ne serait t'il pas une façon plus "élégante" d'obtenir la fonction désirée ?
lien

Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 29/09/2009 11:49  
RE : un BP deux sorties en asm ?
Bonjour,
l'entrée RA4 pourrait être utiliser comme entrée du timer TMR0 donc la seule façon d'exploiter cette entrée comme interruption c'est d'utiliser l'interruption interne du TMR0 ( débordement du timer) je ne vois pas comment tu veux l'utiliser pour l'alarme.
tu parle peut être de l'interruption externe RB0 ou celle du changement d'état du portB ?

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 29/09/2009 18:19  
RE : un BP deux sorties en asm ?
ok , reprenons si tu le veux bien ,
je vais commenté le programme que tu m'as proposé et tu me corrige s'il le faut (pas trop fort s.t.p.
var i0,j0,i1,j1,i2,j2,i3,j3: byte;
tu declare les variables , bits utilisés pour mémoriser qu'un état a été ou non valider.
trisb:=0;
trisa:=$FF;
portb:=0;
i0:=0;j0:=0;i1:=0;j1:=0;i2:=0;j2:=0; i3:=0;j3:=0;

tout le portB est en sortie , tout le portA est en entrée
et on mets tout le portB a zero.(bits concernés i0......j3)

ensuite la construction du programme , est la suivante ,si une entrée est active ,on passe une sortie a 1 et un bit a 1 (mémorisation)
ensuite si une deuxieme fois la meme entrée est active ,on vérifie si
l'entrée est active de nouveau et que l'on a le bit mémorisé auparavent a 1
on monte la sortie suivante a 1.

pour la temporisation , si une sortie est a 1 et que le bit qui lui est associé est aussi a 1 on lance une tempo.

je pense avoir bien résumer le programme non ?
et cela fonctionne tres bien en simulation.

mais la temporisation ne fonctionne plus si , par exemple , une entrée vient activer pour la deuxieme fois la sortie qui lui est consacrée , on peut activer la sortie suivante sans tempo si le deuxieme BP entre en action.

plus clairement ---> action RA0--> RB0 a 1..tempo ds tous les cas.
---> action RA1--> RB1 a 1..si action RA2..ou.....
pas de tempo . mais ensuite...
--> action RA2 66> RB2 a 1..tempo ds tous les cas exct....

comme sur la video.lien

je me suis dit c'est simple il n'y'a qu'a faire une tempo avec la condition suivante , si PORTB0 a 1 et PORTB1 a 1 je lance une tempo .
idem pour les autres sorties , ( 4 x )
mais mikropascal me retourne une erreure de syntaxe ?
ce que j'ais tenté de faire

if ((portb.0=1) and ((portb.1=1) then
begin
delay_ms (3000)
end;

qu'en pense tu ?


Edité par max le 29/09/2009 18:25
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 07/10/2009 14:03  
RE : un BP deux sorties en asm ?
Bonjour,
j'étais pas disponible tout cette période mais voila je suis de retour, pour être bref je vais dire pour le moment que l'erreur de syntaxe que mikropascal te retourne est due point virgule manquant dans :

Code :


if ((portb.0=1) and ((portb.1=1) then
begin delay_ms (3000) ; // ici
end;

je serais là pour t'aider à partir de maintenant alors @+

Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 09/10/2009 00:54  
RE : un BP deux sorties en asm ?
salut a toi , j'ais tellement voulu avoir le dernier "mot " , par moi même
que j'ais tardé a revenir aux "explications".
mais entre la logique de Micropascal et moi ça ne "passe" pas !

mon raisonnement etait le suivant, pourquoi faire compliqué quand on peut faire simple , si un port d'entrée etait activé , (porta.0.1..2..3)
je lance une tempo pour séparer deux activations qui se suivent sur un port d'entrée et cela dans n'importe quel ordre, exemple -->
contact ra0--> tempo...ra3--> tempo de façon a avoir toujours un temps entre une sortie portb et une autre sortie portb.
donc a la fin d'un programme bouton j'ais fait ça -->
lien

mais ça ne fonctionne pas !

Edité par max le 09/10/2009 00:58
Revenir en haut | Permalien
Tunisia.png Technologuepro
Administrator



Messages : 447
Inscrit(e) le: 15/11/2007
Posté le 10/10/2009 13:06  
RE : un BP deux sorties en asm ?
Bonjour,
voila le code pour un seul bouton si j'ai bien compris le fonctionnement

Code :


// bouton 1
if ((porta.0 = 1) and (i0= 0)) then
begin
portb.0 := 1;
delay_ms(5000);
i0:=1;
end;
if ((porta.0 = 0) and (i0 = 1)) then
begin
j0:=1;
end;
if ((porta.0 = 1) and (j0 = 1)) then
begin
portb.1 := 1;
delay_ms(5000);
end;



Le savoir est une chose qu'on peut pas cacher, la connaissance existe pour être transmise aux autres...
Revenir en haut | Permalien
 max
Junior Member



Messages : 27
Inscrit(e) le: 24/04/2008
Posté le 10/10/2009 14:55  
RE : un BP deux sorties en asm ?
impec , j'ais trouvé ou etait mon probléme , merci beaucoup
a bientot.

Revenir en haut | Permalien

Haut de page

© 2024 Technologue pro, cours électricité électronique informatique · © 2007 - 2024 Technologue pro - Ressources pédagogiques pour l'enseignement technologique en Tunisie
Usage dans un cadre strictement académique

Technologue: cours en ligne gratuit en électricité, électronique, informatique industrielle et mécanique pour l'enseignement technologique en Tunisie et offre des cours en ligne en génie électrique, informatique, mécanique, une base de données de TP, projets fin d'études et un annuaire de ressources pédagogiques
Licence - Sitemap - Qui somme nous ? - confidentialité- Tunisie Index
J'accepte
Ce site web utilise des cookies. Nous utilisons des cookies pour vous offrir la meilleure expérience sur notre site Web. Plus d'infos