Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Allumer une LED avec boutton poussoir
Jul09
Membre
Membre
Messages : 3
Enregistré en : décembre 2018

#1 Message par Jul09 » ven. 14 déc. 2018 15:37

bonsoir
svp je voudrais le programme le plus simple pour allumer une led commander par un boutton poussoir en langage assembleur pour un PIC16F84A
LE portb en sortie


et merci

Allumer une LED avec boutton poussoir
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#2 Message par Gérard » ven. 14 déc. 2018 16:49

Tu devrais commencer par montrer ce que tu as déjà fait.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Allumer une LED avec boutton poussoir
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#3 Message par pspic » ven. 14 déc. 2018 17:51

Bonjour, tu trouvera ce que tu cherches ici : https://www.abcelectronique.com/bigonof ... ?par=1b4eb
Bonne lecture.

Allumer une LED avec boutton poussoir
pspic
Passioné
Passioné
Messages : 357
Âge : 77
Enregistré en : septembre 2017
Localisation : 68

#4 Message par pspic » ven. 14 déc. 2018 19:29

Une solution toute cuite que tu pourra étudier et tester.
Ceci ne te dispense pas de lire et comprendre le cours 1 de Bigonoff, tu as tout l'hiver devant toi.

Allumer une LED avec boutton poussoir
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#5 Message par Temps-x » ven. 14 déc. 2018 19:32

Bonjour à tous et à toutes,

:sifflotte: Hum...., Je rejoins ce que dit pspic, c'est pourtant simple, comme on n'est pas loin de Noël je te donne la réponse,
fait un effort et essai de lire le chapitre 1 de Bigonoff.

Tu as de la chance d'être sur un forum ou il y a des gens sympa, sur d'autre forum que je ne citerais pas, il t'aurait dit de revoir ta leçon.

Tu aurais pu faire un schéma, si c'est pas trop te demander, le bouton se trouve sur le RA0 et la sortie sur RB0

Bt_led.jpg


Utilisation d'un Quartz de 4Mhz, à revoir la temporisation si autre quartz utilisé


Code : Tout sélectionner



;                                  quartz de 4 méga hertz

;**************************** déclaration du processeur utilisé *******************************

    Errorlevel-302               ; Supprime le message "Ensure that bank bits are correct" 

    LIST      p
=16F84A            
    
#include <p16F84a.inc>        

;***************** selection, code protection, timer reset, watch-dog, oscillateur ************  

    __CONFIG   _CP_OFF 
& _WDT_OFF & _PWRTE_ON & _HS_OSC


;******************************** déclaration des variable ************************************
    CBLOCK 0x0C

      loop1         
:1
      loop2         
:1

    ENDC

;**************************** adresse de depart après reset ***********************************
                      
    ORG H
'00'
      goto debut      

debut
       BANKSEL OPTION_REG                 
; passage en bank1

;******************************  on initialise OPTION_REG ************************************
     
       movlw B
'10000000'                  ; b7 = 1 résistances hors service 
       movwf OPTION_REG                      

         
       movlw B
'11111111'                  ; entrée patte 17(RA0),18(RA1),1(RA2),2(RA3),3(RA4)                        
       movwf TRISA                        
; 
                                          
; 

       movlw B
'00000000'                  ; sortie 6(RB0), 7(RB1), 8(RB2), 9(RB3), 10(RB4), 11(RB5), 12(RB6), 13(RB7)  
       movwf TRISB                        


;****************************** on coupe toutes les interruptions ****************************   
  
       bcf INTCON
,GIE                     ; on interdit toutes les interruptions

;****************************** configure les ports pour les réglages ************************  

       BANKSEL PORTA                      
; passage en bank0

       clrf PORTA  
       clrf PORTB

remonte     
       btfss PORTA
,0                      
       goto traitement


confirmer
       btfsc PORTA
,0                      
       goto confirmer                     
; confirmer que le bouton est bien relâché 

       call _10ms                         
; anti rebond 

       btfsc PORTB
,0
       goto eteint
       goto allumer

eteint
       bcf PORTB
,0                        ; éteindre RB0 
       goto traitement    

allumer
       bsf PORTB
,0                        ; allumer RB0            
       goto traitement

traitement
                                          
; début d'autre routine

       goto remonte

;********************************************************************************************** 
_10ms
      movlw D'
251'
      movwf loop1

      movlw D'
13'
      movwf loop2

      decfsz loop1,F
      goto $-D'
1'
      decfsz loop2,F
      goto $-D'
3'

      return
   
      End



Normalement si j'ai pas fait d'erreur, si tu appuis une fois la LED s'allume, si tu appuis une deuxième fois la led s'éteint.

Utiliser le PORTB comme sortie n'est pas très judicieux, si tu avais fait l'inverse tu aurais économisé une résistance.

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Allumer une LED avec boutton poussoir
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#6 Message par venom » sam. 15 déc. 2018 22:16

Bonsoir,
Je ne suis pas dans ma section favorite, (mais cela ne m’empêche pas de venir voir ce qui s'y passe :langue: )

@Temps-x
Que veut tu dire par :
Temps-x a écrit :Utiliser le PORTB comme sortie n'est pas très judicieux, si tu avais fait l'inverse tu aurais économisé une résistance.

???






@++
Mon site web
Mon discord : venom#4888

Allumer une LED avec boutton poussoir
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#7 Message par Temps-x » sam. 15 déc. 2018 22:47

Bonsoir venom, et tout le forum,

venom a écrit :Source du message Je ne suis pas dans ma section favorite, (mais cela ne m’empêche pas de venir voir ce qui s'y passe :langue: )


Ne t’inquiète pas, je viens aussi dans ta section pour y voir ce qui s'y passe :langue:

venom a écrit :Source du message Que veut tu dire par :


Dans la plupart des Pic (voir avec le datasheet)

Il existe 8 résistances à l'intérieur du pic, quand peut activer, ou désactiver, pour la plupart des pic elle se trouve sur le PORTB

Pour mettre en fonction les résistances on utilisera le registre prévu pour cela, pour activer les résistances pour le Pic16F84A
c'est le registre OPTION_REG du bit 7 qu'il faut mettre à zéro.

Ce qui donne

Code : Tout sélectionner


       movlw B
'00000000'                  ; b7 = 0 résistances en service 
       movwf OPTION_REG                      



C'est pour cela qu'il est préférable de garder tout le PORTB en entrée, quand on a une série de bouton à gérer ça t'économise
8 résistances.

Ce qui donne

Bts_led.jpg


De plus il y aura aucune gêne pour y mettre les pattes de programmation qui se trouve en général sur RB6 et RB7

Mais attention
Car le gros problème de ce Pic et avec d'autre, c'est que tu ne peux pas paramétrer chaque patte indépendamment, donc si tu actives
les résistances tu te retrouves avec des entrées positives sur tout le PORTB

Tu vas me dire, ben c'est pas grave

Pas pour celui là car il ne possède pas de convertisseur analogique, mais pour certain pic qui on un convertisseur analogique sur le
PORTB ça devient gênant, car il se retrouve avec un convertisseur inverser, si ses résistances sont activés.

:roll: Je te laisse imaginé les heures de recherche pour y trouver le bug, qui en réalité n'en ai pas.

Certain Pic comme par exemple le Pic18F26K22, Pic18F46k22 ont des pattes configurables indépendante sur le PORTB

Conclusion, il faut bien choisir son pic avant d'attaquer un projet.

==> A+
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Modifié en dernier par Temps-x le dim. 16 déc. 2018 11:49, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Allumer une LED avec boutton poussoir
Gérard
Avatar de l’utilisateur
Expert
Expert
Messages : 1640
Âge : 65
Enregistré en : septembre 2015
Localisation : Alsace - Haut-Rhin

#8 Message par Gérard » dim. 16 déc. 2018 11:32

Bonjour à tous,
Tu as raison Temps-x, mais une résistance CMS ne prend pas beaucoup de place et son coût est dérisoire.
Bon dimanche.
Le 18/04/19 je suis devenu papy de jumeaux, le 01/09/23 une petite cousine des jumeaux est née.

Allumer une LED avec boutton poussoir
Temps-x
Avatar de l’utilisateur
Expert
Expert
Messages : 2595
Enregistré en : juillet 2016
Localisation : Terre

#9 Message par Temps-x » dim. 16 déc. 2018 11:57

Bonjour Gérard, venom, et tout le forum,

Gérard a écrit :Source du message une résistance CMS ne prend pas beaucoup de place et son coût est dérisoire


D'accord avec toi, mais c'est plus rapide sans, et évite les trous à la perceuse pour résistance classique, sinon coté CMS tu connais
le problème, pas facile à souder, mais en y arrive avec de la patience.

humour!! Tu vois venom il y a pas que toi qui vient en section ASM, même Gérard vient nous voir. exit dehors!!

==> A+
Modifié en dernier par Temps-x le dim. 16 déc. 2018 19:24, modifié 1 fois.
:roll: Les requins, c'est comme le langage ASM, c'est le sommet de la chaîne alimentaire. :wink:

Allumer une LED avec boutton poussoir
venom
Avatar de l’utilisateur
Confirmé
Confirmé
Messages : 953
Âge : 38
Enregistré en : avril 2016
Localisation : Klyntar
Contact :

#10 Message par venom » dim. 16 déc. 2018 12:03

Bonjour Temps-X et bonjour à tous.

Merci pour ces explications, je ne savais pas que certain pic embarquée des résistances. C'est bon a savoir :wink:


En effet, je vois que c'est porte ouverte à tous :langue: il





@++
Mon site web
Mon discord : venom#4888


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 48 invités