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 ---
- 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 ---
Modérateur : mazertoc
Décompteur 7 segments programmable
voila avec l'utilisation de mes macros qui est bien sur plus souple, et un début, pour l'utilisation du module DÉCOMPTAGE s'il y a des courageux pour finir
sur ce bonne fin d'année a bientôt, le plaisir de vous retrouver en 2017
A+
PS pour la programmation modulaire ici http://www.techno-science.net/?onglet=g ... tion=11420 aussi ou sur votre moteur de recherche favori
Code : Tout sélectionner
;*******************************************************************************
; Descriptif du projet:
;Decompteur programmable, sur 4 digits 7 segemnts,
;2 BP: un,+ variable. Un validation deplacement et demarrage decompteur.
;
; Le projet peut etre vue comme 4 modules independants:
;-Affichage des 4 digits avec selection du digit pour programmation
;-BP pour la programmation,selection digit ,Arrêt/marche decompteur
;-Décompteur, decompte les minutes et secondes preprogrammees
;-Alarme pas traite dans le source
;
;*******************************************************************************
; Note:PIC 16F877
;
;*******************************************************************************
ERRORLEVEL-302
list p=16f877 ;liste directive du 16F877
#include "p16f877.inc"
;********************** chargement des Macros **********************************
#include /home/moi/MPLABXProjects/8bits_MACRO_ASM/Macro_16F_ASM.asm
;***************************** Configuation des fuses **************************
;
; CONFIG
; __config 0x3D3A
__CONFIG _FOSC_HS & _WDTE_OFF & _PWRTE_OFF & _CP_OFF & _BOREN_OFF & _LVP_OFF & _CPD_OFF & _WRT_OFF
;
;
;*********************** déclaration des variables *****************************
;Toutes ces variables sont globales, pour le fichier source.
; MEM MEM_us MEM1 MEM1_us MEM2 sont globales,pour l'ensemble du projet.
;
;
;*******************************************************************************
GLOBAL MEM,MEM1 ;variables utilisables dans tout le projet
GLOBAL MEM_us,MEM1_us ;pour macro delay
GLOBAL MEM2
Group_gobal udata 0x20
MEM res 1 ;MEM :MEM2 sont necessaires
MEM_us res 1
MEM1 res 1 ;pour les macros delay
MEM1_us res 1
MEM2 res 1 ;
;***********************
Group_Local udata 0x30
ComptSu res 1 ;comteur seconde
ComptSd res 1
ComptMu res 1 ;compteur minute
ComptMd res 1
Index res 1 ;lors programmation et digit concerné
Temp res 1 ;compteur temps
Temp_Val res 1 ;compteur temps touche val
Sauv res 2 ;pour sauvegarde (2) registres lors INT
;*********************** Definition des Externes *******************************
;
;*********************** Déclarations des définitions **************************
#DEFINE _XTAL_FREQ .4000000 ;ici FOSC =4MHz
#DEFINE BP_Plus PORTB,0
#DEFINE BP_Val PORTB,1
;*********************** Assignations ou constantes ****************************
DRAM EQU 0x20 ;début Mémoire Ram banque0
;*********************** MACROS ************************************************
; les MACRO sont regroupe dans le fichier Macro_16F_ASM.asm
;
;*********************** TOUT COMMENCE ICI *************************************
ORG 0X00 ;au Rest le pointeur instruction est ICI
GOTO Debut ;saut sur le label debut
ORG 0X04 ;vecteur INT
MOVWF Sauv ;sauve W
SWAPF STATUS,W ;
MOVWF Sauv+1 ;sauve status
BTFSS PIR1,TMR1IF ;test flag si TIMER1
GOTO Int0 ;NON test TMIER0
MOVLW 0x3C ; int toute le 100ms
MOVWF TMR1H
MOVLW 0xB3 ;et on recharge le TIMER1
MOVWF TMR1
BCF PIR1,TMR1IF ;RAZ du drapeau de TMR1
INCF Temp,F ; à 10 cela fera 1s
INCF Temp_Val,F ;tempo pour le BP Val
; BTFSC Index,7 ; en programmation temps
; GOTO IntS ; oui
; MOVLW 0X0A ;on test si 10fois 100mS
; SUBWF Temp,W
; BTFSS STATUS,Z
; GOTO IntS ;NON
; CLRF Temp ;OUI RAZ compteur temps et on decompte
; appel module decomptage
GOTO IntS
Int0 BTFSS INTCON,T0IF ;Test flag si TIMER0
GOTO IntS ;NON on sort
BCF INTCON,T0IE ;arret int TMR0
Aff7S ; appel a la macro Aff7S
MOVLW 0XA
MOVWF TMR0 ;Apres aff7C charge Timer0 pour 1ms
BCF INTCON,T0IF ;RAZ Flag TIMER0
BSF INTCON,T0IE ;mise en service int TMR0
IntS SWAPF Sauv+1,0
MOVWF STATUS ;restaure status
SWAPF Sauv, 1
SWAPF Sauv, 0 ;restaure W
RETFIE
;*********************** Alumage segments afficheur ****************************
LedTable
ADDWF PCL,F ; ajout au PC
RETLW B'00111111' ; LED allum?es pour afficher 0
RETLW B'00000110' ; LED allum?es pour afficher 1
RETLW B'01011011' ; LED allum?es pour afficher 2
RETLW B'01001111' ; LED allum?es pour afficher 3
RETLW B'01100110' ; LED allum?es pour afficher 4
RETLW B'01101101' ; LED allum?es pour afficher 5
RETLW B'01111101' ; LED allum?es pour afficher 6
RETLW B'00000111' ; LED allum?es pour afficher 7
RETLW B'01111111' ; LED allum?es pour afficher 8
RETLW B'01100111' ; LED allum?es pour afficher 9
;**********ici c'est votre programme principale ou main ************************
Debut
;*********************** Mise a zéro de la mémoire RAM banque0 *****************
MOVLW DRAM
MOVWF FSR
Effa CLRF INDF
INCF FSR,F ;RAZ RAM
BTFSS FSR,7
GOTO Effa
;*********************** Initialisation des ports ******************************
CLRF PORTA
CLRF PORTB ;efface les sorties des ports
CLRF PORTC
Banque1 ;accés bank1
CLRF TRISA ;RA:RA5 en sortie
MOVLW B'00000111' ;RB0:RB1 en entrées
MOVWF TRISB
CLRF TRISC ;RC0:RC7 en sortie
MOVLW B'00000110' ;PORTA digitale
MOVWF ADCON1
;*********************** validation des INT ************************************
MOVLW (1<<GIE)|(1<<PEIE)|(1<<T0IE)|(0<<INTE)|(0<<RBIE)|(0<<T0IF)|(0<<INTF)|(0<<RBIF)
MOVWF INTCON ;Initialisation des INT
BSF PIE1,TMR1IE ;valide int TMR1
;******************* Initialisation des timers/compteurs ***********************
; ici on va travailler avec le TIMER1 et TIMER0
;*******************************************************************************
;TIMER0 nous donne 1ms pour le module clavier et decomptage, apres affichage segments
Timer0 .1000 ;int toute les 1ms
;**********************
;TIMER1 dans la programation gere le temps de clignotement sinon tempo du decomptage
;et temps appui sur BP validation
Timer1 .100000 ;int toute les 100ms
BSF T1CON,TMR1ON ; mise en service Timer1
;********************** fixation des variables *********************************
Raz_Var CLRF ComptSu ;
CLRF ComptSd ;
CLRF ComptMu ;raz des variables Temps
CLRF ComptMd ;
Init_Va MOVLW ComptSu ;intialise le pointeur sur 1er variable
MOVWF FSR ;charge le pointeur de adresse unite S
MOVLW B'10000001' ;B0:B3 index sur 1er digit
MOVWF Index ;B7: mode programmation
;********************** Boucle principale **************************************
BouP BTFSC BP_Val ;BP val appuiyé ?
GOTO Plus ;NON voir le BP plus
CALL Temp800µs ;OUI petite tempo anti rebond
CLRF Temp_Val ;declenche la tempo
Val1 BTFSC BP_Val ;malgres la tempo
GOTO Val0 ;le BP a etait relaché donc on sort
BTFSS Temp_Val,2 ;appuie long 400ms?
GOTO Val1 ;NON on reboucle
BTFSS Index,7 ;fin tempo mode programmation?
GOTO Raz_Var ;oui arret decomptage on boucle sur RAZ
BCF Index,7 ;NON on passe en decomptage
GOTO Start_D ;on lancement decomptage
;**********************
Val0 BTFSS Index,7 ;mode Decomptage?
GOTO Decom ;oui
BCF STATUS,C
RLF Index,F ;decalage index digit vers la GAUCHE
BTFSC Index,4 ;Index hors butée?
GOTO Init_Va ;oui on reinitialise les variables
BSF Index,7 ;repositionne le bit programmation
INCF FSR,F ;NON pointeur variable +1
GOTO BouP ;boucle principale
;*********************** Bouton plus *******************************************
Plus BTFSS Index,7 ;mode decomptage ?
GOTO Decom ;oui
BTFSC BP_Plus ;BP_Plus appuyé?
GOTO BouP ;NON on reboucle sur Principale
CALL Temp800µs ;petite tempo antirebond
Plus0 BTFSS BP_Plus ;BP_Plus relaché
GOTO Plus0 ;NON on boucle
INCF INDF,F ;adresse pointé +1
MOVLW 0X0A ;test butée 9
BTFSS Index,0
BTFSC Index,2 ;on test les digits max 9 ou 5
GOTO Plus1
MOVLW 0X6 ;test butée 5
Plus1 SUBWF INDF,W
BTFSC STATUS,C
CLRF INDF ;si butée raz adresse pointé
GOTO BouP ;on Reboucle sur boucle principale
;*******************************************************************************
Start_D BTFSS BP_Val
GOTO Start_D ;attend que BP_Val soit relaché
CLRF Temp ;RAZ du compteur temps, decomptage parti
;*********************** Lance decomptage **************************************
Decom MOVFW ComptSu ;on effectue un OU logique
IORWF ComptSd,W
IORWF ComptMu,W ;avec les variables Temps et on
IORWf ComptMd,W ;test si zero
BTFSC STATUS,Z
GOTO Init_Va ;oui initialise variables
MOVLW 0X0A ;on test si 10fois 100mS
SUBWF Temp,W
BTFSS STATUS,Z
GOTO BouP ;NON
CLRF Temp ;OUI RAZ compteur temps et on decompte
;*********************** *
DECF ComptSu,F ;uS-1
BTFSS ComptSu,7 ;debordement?
GOTO BouP ;NON
MOVLW 0X09
MOVWF ComptSu ;uS= 9
;*********************** *
DECF ComptSd,F ;Sd -1
BTFSS ComptSd,7 ;debordement?
GOTO BouP ;NON
MOVLW 0X5
MOVWF ComptSd ;Sd =9
;*********************** * ici c'est notre macro
DECF ComptMu,F ;Mu-1
BTFSS ComptMu,7 ;debordement?
GOTO BouP ;NON
MOVLW 0X9
MOVWF ComptMu ;Mu =9
;*********************** *
DECF ComptMd ;Md -1
GOTO BouP
;*********************** ici c'est des SPG **************************************
;ici spg car plusieurs fois utilisés dans le source sinon macro
;********************** Tempo de 800µs *****************************************
Temp800µs
delay_us .800
RETURN
;*********************** Tempo de 1ms ******************************************
END ;fin pour le compilateur
sur ce bonne fin d'année a bientôt, le plaisir de vous retrouver en 2017
A+
PS pour la programmation modulaire ici http://www.techno-science.net/?onglet=g ... tion=11420 aussi ou sur votre moteur de recherche favori
Décompteur 7 segments programmable
Bonjour Guest,
Je tombe sur ce vieux post, resté sans réponse, un peu par hasard.
C'est le premier source que je rencontre en code relogeable, il va me falloir creuser un peu. Mais j'y lit :
Ce fichier a-t-il été copié dans un autre post ? où pourrais-je le trouver ?
Merci d'avance
Cordialement
Je tombe sur ce vieux post, resté sans réponse, un peu par hasard.
C'est le premier source que je rencontre en code relogeable, il va me falloir creuser un peu. Mais j'y lit :
; les MACRO sont regroupe dans le fichier Macro_16F_ASM.asm
Ce fichier a-t-il été copié dans un autre post ? où pourrais-je le trouver ?
Merci d'avance
Cordialement
Décompteur 7 segments programmable
Décompteur 7 segments programmable
-
Jérémy
Administrateur du site- Messages : 2722
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bojour à tous,
@JJE : Guest est un ancien membre de FantasPIC, qui n'ai plus le bienvenue ici . Tu n'auras aucune réponse de sa part !
viewtopic.php?f=28&t=447 , regarde j'ai reçu plusieurs plaintes dans ce genre. Et ma réponse fut sans appel ( non publié ) mais je l'ai remis a sa place !
@JJE : Guest est un ancien membre de FantasPIC, qui n'ai plus le bienvenue ici . Tu n'auras aucune réponse de sa part !
viewtopic.php?f=28&t=447 , regarde j'ai reçu plusieurs plaintes dans ce genre. Et ma réponse fut sans appel ( non publié ) mais je l'ai remis a sa place !
Décompteur 7 segments programmable
Décompteur 7 segments programmable
Décompteur 7 segments programmable
Bonjour tout le monde
Non ce fichier n’est pas dans un autre post ni sur un autre forum. D’ailleur Il a demandé de supprimer toute trace de lui sur le forum
Pour ma part, je me suis lancé dans un lourd examen qui ne me laisse pas le temps pour mes montages mais si tu as besoin d’aide cela sera volontier
Jean-Marc
JJE a écrit :Bonjour Guest,
Je tombe sur ce vieux post, resté sans réponse, un peu par hasard.
C'est le premier source que je rencontre en code relogeable, il va me falloir creuser un peu. Mais j'y lit :; les MACRO sont regroupe dans le fichier Macro_16F_ASM.asm
Ce fichier a-t-il été copié dans un autre post ? où pourrais-je le trouver ?
Merci d'avance
Cordialement
Non ce fichier n’est pas dans un autre post ni sur un autre forum. D’ailleur Il a demandé de supprimer toute trace de lui sur le forum
Pour ma part, je me suis lancé dans un lourd examen qui ne me laisse pas le temps pour mes montages mais si tu as besoin d’aide cela sera volontier
Jean-Marc
Décompteur 7 segments programmable
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 61 invités