16f84 ; "Question pour un champion" ; Fabrice Sincère (C) novembre 2006 ; versi

16f84 ; "Question pour un champion" ; Fabrice Sincère (C) novembre 2006 ; version 1.01 ; microcontrôleur PIC 16F84A List p=16F84A ; processeur utilisé #include <p16F84A.inc> __config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC ;bits de configuration : ;code protect OFF ;watchdog timer OFF ;power up timer ON ;oscillateur HS (quartz à grande fréquence) ;xxxxxx ; macro ;xxxxxx bank1 macro ; passage en banque 1 bsf STATUS,RP0 endm bank0 macro ; passage en banque 0 bcf STATUS,RP0 endm ;xxxxxxxxxxxxxxxxxxxxxxxxx ; déclaration de variables ;xxxxxxxxxxxxxxxxxxxxxxxxx CBLOCK H'00C' mem : 1 ; registre de stockage de l'état du port B ;(ce qui évite tout problème en cas d'évolution ; du port B pendant les phases de test) ENDC ;xxxxxxxxxxxxxxxxxxxx ; demarrage sur reset ;xxxxxxxxxxxxxxxxxxxx org H'0000' goto initialisation ;xxxxxxxxxxxxxxx ; initialisation ;xxxxxxxxxxxxxxx initialisation bank0 clrf PORTA ; mise à 0 des sorties du port A clrf PORTB ; mise à 0 des sorties du port B bank1 movlw B'00000000' movwf OPTION_REG ; bit 7 = 0 : activation des résistances de pull-up du port B ; (cela permet de faire l'économie de 5 résistances externes) ; bits 0 à 6 : ici, options non utilisées (on les met à 0, par exemple) movlw B'00010000' movwf TRISA ; bit 0 du port A (RA0) = 0 : configuration en sortie (commande de la LED1) ; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de la LED2) ; bit 2 du port A (RA2) = 0 : configuration en sortie (commande de la LED3) ; bit 3 du port A (RA3) = 0 : configuration en sortie (commande de la LED4) ; bit 4 du port A (RA4) = 1 : non utilisée (configuration en entrée, par exemple) movlw B'11111111' movwf TRISB ; bit 0 du port B (RB0) = 1 : configuration en entrée (bouton poussoir du joueur 1) ; bit 1 du port B (RB1) = 1 : configuration en entrée (bouton poussoir du joueur 2) ; bit 2 du port B (RB2) = 1 : configuration en entrée (bouton poussoir du joueur 3) ; bit 3 du port B (RB3) = 1 : configuration en entrée (bouton poussoir du joueur 4) ; bit 4 du port B (RB4) = 1 : configuration en entrée (bouton poussoir reset) ; bits 5 à 7 du port B : non utilisés (configuration en entrée, par exemple) bank0 movlw B'11111111' movwf PORTA ; on éteint toutes les leds ;xxxxxxxxxxxxxxxxxxxxx ; programme principal ;xxxxxxxxxxxxxxxxxxxxx debut_programme movf PORTB, W ; lecture du port B movwf mem ; mise en mémoire tampon ; test bouton(s) poussoir(s) appuyé(s) ; on teste si l'état logique du port B est différent de 'xxx11111': movlw B'00011111' andwf mem, f ; met à 0 les bits 5 à 7 de mem subwf mem, W ; comparaison avec 00011111 btfsc STATUS,Z ; test du bit Z goto debut_programme; boutons poussoirs au repos (Z=1) ; autrement, au moins un bouton poussoir est appuyé (Z=0) : btfss mem, 4 ; test du bit 4 (RB4 : bouton poussoir reset) goto debut_programme ; bouton appuyé (RB4 = 0) ; bouton poussoir au repos (RB4 = 1): ; test bouton joueur 1 btfsc mem, 0 ; test du bit 0 (RB0 : bouton joueur 1) goto label_j2 ; bouton au repos (RB0 = 1) ; bouton appuyé : movlw B'11111110' movwf PORTA ; on allume la led1 goto label_reset ; label_j2 ; test bouton joueur 2 btfsc mem, 1 ; test du bit 1 (RB1 : bouton joueur 2) goto label_j3 ; bouton au repos ; bouton appuyé : movlw B'11111101' movwf PORTA ; on allume la led2 goto label_reset label_j3 ; test bouton joueur 3 btfsc mem, 2 ; test du bit 2 (RB2 : bouton joueur 3) goto label_j4 ; bouton au repos ; bouton appuyé movlw B'11111011' movwf PORTA ; on allume la led3 goto label_reset ; label_j4 ; le bouton du joueur 4 est donc forcement appuyé movlw B'11110111' movwf PORTA ; on allume la led4 label_reset ; test bouton reset btfsc PORTB,4 ; lecture du port B, test du bit RB4 goto label_reset ; bouton au repos ; bouton appuyé : movlw B'11111111' movwf PORTA ; on éteint toutes les leds goto debut_programme ; END 16f628 ; "Question pour un champion" ; Fabrice Sincère (C) novembre 2006 ; version 1.05 ; microcontrôleur PIC 16F628A ; développé avec Microchip MPLAB IDE List p=16F628A ; processeur utilisé #include <p16F628A.inc> __config _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC & _LVP_OFF & _DATA_CP_OFF & _BOREN_OFF & _MCLRE_ON ;bits de configuration : ;code protect OFF ;watchdog timer OFF ;power up timer ON ;oscillateur HS (quartz à grande fréquence) ;low voltage program OFF ;data EE read protect OFF ;brown out detect OFF ;master clear enable ON ;xxxxxx ; macro ;xxxxxx bank1 macro ; passage en banque 1 bsf STATUS,RP0 bcf STATUS,RP1 endm bank0 macro ; passage en banque 0 bcf STATUS,RP0 bcf STATUS,RP1 endm ;xxxxxxxxxxxxxxxxxxxxxxxxx ; déclaration de variables ;xxxxxxxxxxxxxxxxxxxxxxxxx CBLOCK H'020' mem : 1 ; registre de stockage de l'état du port B ;(ce qui évite tout problème en cas d'évolution ; du port B pendant les phases de test) ENDC ;xxxxxxxxxxxxxxxxxxxx ; démarrage sur reset ;xxxxxxxxxxxxxxxxxxxx org H'0000' goto initialisation ;xxxxxxxxxxxxxxx ; initialisation ;xxxxxxxxxxxxxxx initialisation bank0 clrf PORTA ; mise à 0 des sorties du port A clrf PORTB ; mise à 0 des sorties du port B movlw B'00000111' movwf CMCON ; inactivation des comparateurs analogiques bank1 movlw B'00000000' movwf OPTION_REG ; bit 7 = 0 : activation des résistances de pull-up du port B ; (cela permet de faire l'économie de 5 résistances externes) ; bits 0 à 6 : ici, options non utilisées (on les met à 0, par exemple) movlw B'00110000' movwf TRISA ; bit 0 du port A (RA0) = 0 : configuration en sortie (commande de la LED1) ; bit 1 du port A (RA1) = 0 : configuration en sortie (commande de la LED2) ; bit 2 du port A (RA2) = 0 : configuration en sortie (commande de la LED3) ; bit 3 du port A (RA3) = 0 : configuration en sortie (commande de la LED4) ; bit 4 du port A (RA4) = 1 : non utilisée (configuration en entrée, par exemple) movlw B'11111111' movwf TRISB ; bit 0 du port B (RB0) = 1 : configuration en entrée (bouton poussoir du joueur 1) ; bit 1 du port B (RB1) = 1 : configuration en entrée (bouton poussoir du joueur 2) ; bit 2 du port B (RB2) = 1 : configuration en entrée (bouton poussoir du joueur 3) ; bit 3 du port B (RB3) = 1 : configuration en entrée (bouton poussoir du joueur 4) ; bit 4 du port B (RB4) = 1 : configuration en entrée (bouton poussoir reset) ; bits 5 à 7 du port B : non utilisés (configuration en entrée, par exemple) bank0 movlw B'11111111' movwf PORTA ; on éteint toutes les leds ;xxxxxxxxxxxxxxxxxxxxx ; programme principal ;xxxxxxxxxxxxxxxxxxxxx debut_programme movf PORTB, W ; lecture du port B movwf mem ; mise en mémoire tampon ; test bouton(s) poussoir(s) appuyé(s) ; on teste si l'état logique du port B est différent de 'xxx11111': movlw B'00011111' andwf mem, f ; met à 0 les bits 5 à 7 de mem subwf mem, W ; comparaison avec 00011111 btfsc STATUS,Z ; test du bit Z goto debut_programme; boutons poussoirs au repos (Z=1) ; autrement, au moins un bouton poussoir est appuyé (Z=0) : btfss mem, 4 ; test du bit 4 (RB4 : bouton poussoir reset) goto debut_programme ; bouton appuyé (RB4 = 0) ; bouton poussoir au repos (RB4 = 1): ; test bouton joueur 1 btfsc mem, 0 ; test du bit 0 (RB0 : bouton joueur 1) goto label_j2 ; bouton au repos (RB0 = 1) ; bouton appuyé : movlw B'11111110' movwf PORTA ; on allume la led1 goto label_reset label_j2 ; test bouton joueur 2 btfsc mem, 1 ; test du bit 1 (RB1 : bouton joueur 2) goto label_j3 ; bouton au repos ; bouton appuyé : movlw B'11111101' movwf PORTA ; on allume la led2 goto label_reset label_j3 ; test bouton joueur 3 btfsc mem, 2 ; test du bit 2 (RB2 : bouton joueur 3) goto label_j4 ; bouton au repos ; bouton appuyé movlw B'11111011' movwf PORTA ; on allume la led3 goto label_reset ; label_j4 ; le bouton du joueur 4 est donc forcement appuyé movlw B'11110111' movwf PORTA ; on allume la led4 label_reset ; test bouton reset btfsc PORTB,4 ; lecture du port B, test du bit RB4 goto label_reset ; bouton au repos ; bouton appuyé : movlw B'11111111' movwf PORTA ; on éteint toutes les leds goto debut_programme ; END uploads/Sports/ code-source 3 .pdf

  • 23
  • 0
  • 0
Afficher les détails des licences
Licence et utilisation
Gratuit pour un usage personnel Attribution requise
Partager
  • Détails
  • Publié le Nov 28, 2021
  • Catégorie Sports
  • Langue French
  • Taille du fichier 0.0456MB