slt j'ai besoin de votre aide,c 'est trés urgent, la question est:
On vous demande de compléter ce qui manque dans le fichier program1.asm afin d’avoir un clignotement d’une diode, connecté à la broche RA2, approximativement tout les demi seconde sachant que la fréquence du quartz est de 4 Mhz.
le fichier program1 est :
;**********************************************************************
; PROGRAMME N°1. PROGRAMME D'ENTRAINEMENT AU FONCTIONNEMENT *
; DES PICS. *
; *
;**********************************************************************
; *
; NOM: P1 *
; Date: XX/YY/ZZZZ *
; Version: 1.0 *
; *
; Auteur: XYZ *
; *
;**********************************************************************
; *
; Fichier requis: P16F84.inc *
; *
;**********************************************************************
; *
; Notes: *
; *
; *
; *
;**********************************************************************
LIST p=16F84 ; Définition de processeur
#include <p16F84.inc> ; Définitions de variables
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
; '__CONFIG' précise les paramètres encodés dans le processeur au moment de
; la programmation. Les définitions sont dans le fichier include.
; Voici les valeurs et leurs définitions :
; _CP_ON Code protection ON : impossible de relire
; _CP_OFF Code protection OFF
; _PWRTE_ON Timer reset sur power on en service
; _PWRTE_OFF Timer reset hors-service
; _WDT_ON Watch-dog en service
; _WDT_OFF Watch-dog hors service
; _LP_OSC Oscillateur quartz basse vitesse
; _XT_OSC Oscillateur quartz moyenne vitesse
; _HS_OSC Oscillateur quartz grande vitesse
; _RC_OSC Oscillateur à réseau RC
;*********************************************************************
; ASSIGNATIONS *
;*********************************************************************
OPTIONVAL EQU H' à compléter' ; Valeur registre option
; Résistance pull-up ON
; Pas de préscaler
;*********************************************************************
; DEFINE *
;*********************************************************************
#DEFINE LED PORTA,2 ; Led rouge
;*********************************************************************
; MACRO *
;*********************************************************************
LEDON macro
bsf LED
endm
LEDOFF macro
bcf LED
endm
;*********************************************************************
; DECLARATIONS DE VARIABLES *
;*********************************************************************
CBLOCK 0x00C ; début de la zone variables
cmpt1 : 1 ; compteur de boucles 1
cmpt2 : 1 ; compteur de boucles 2
cmpt3 : 1 ; compteur de boucles 3
ENDC ; Fin de la zone
;**********************************************************************
; DEMARRAGE SUR RESET *
;**********************************************************************
org 0x000 ; Adresse de départ après reset
goto init ; Adresse 0: initialiser
;*********************************************************************
; INITIALISATIONS *
;*********************************************************************
init
clrf PORTA ; Sorties portA à 0
clrf PORTB ; sorties portB à 0
clrf EEADR ; permet de diminuer la consommation
bsf STATUS,RP0 ; sélectionner banque 1
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
; Effacer RAM
; ------------
movlw 0x0c ; initialisation pointeur
movwf FSR ; pointeur d'adressage indirec
init1
clrf INDF ; effacer ram
incf FSR,f ; pointer sur suivant
btfss FSR,6 ; tester si fin zone atteinte (>=40)
goto init1 ; non, boucler
btfss FSR,4 ; tester si fin zone atteinte (>=50)
goto init1 ; non, boucler
; initialisations spécifiques
; ---------------------------
bcf LED ; LED en sortie (banque1)
bcf STATUS,RP0 ; repasser banque 0
goto start ; sauter au programme principal
;*********************************************************************
; SOUS-ROUTINE DE TEMPORISATION *
;*********************************************************************
;---------------------------------------------------------------------
; Cette sous-routine introduit un retard approximative de 500.000 µs.
; Elle ne reçoit aucun paramètre et n'en retourne aucun
;---------------------------------------------------------------------
tempo
movlw 1 ;à compléter ; pour Y boucles
movwf cmpt3 ; initialiser compteur3
boucle3
clrf cmpt2 ; effacer compteur2
boucle2
clrf cmpt1 ; effacer compteur1
boucle1
nop ; perdre 1 cycle
decfsz cmpt1,f ; décrémenter compteur1
goto boucle1 ; si pas 0, boucler
decfsz cmpt2,f ; si 0, décrémenter compteur 2
goto boucle2 ; si cmpt2 pas 0, recommencer boucle1
decfsz cmpt3,f ; si 0, décrémenter compteur 3
goto boucle3 ; si cmpt3 pas 0, recommencer boucle2
return ; retour de la sous-routine
;*********************************************************************
; PROGRAMME PRINCIPAL *
;*********************************************************************
start
bsf LED ; allumer la LED : on aurait pu écrire
; LEDON (voir les macros)
call tempo ; appeler la tempo de 0.5s
bcf LED ; éteindre LED (LEDOFF)
call tempo ; appeler la tempor de 0.5s
goto start ; boucler
END ; directive fin de programme
clignoter diode avec microcontroleur 16f84
-
- Nouveau membre !!!
- Messages : 1
- Enregistré le : 04 mars 2012, 23:40
-
- Rang "6 LEDs"
- Messages : 3298
- Enregistré le : 15 oct. 2006, 20:05
- Localisation : planète terre
- Contact :
Re: clignoter diode avec microcontroleur 16f84
Bonjour,
j'ai jamais compris pourquoi on s'évertuais a utiliser un µC pour des fonctions si élémentaire , comme un clignoteur pour LED (un multivibrateur à 2 transistors suffit ) , ou une régulation de radiateur électrique (un thermostat a bilame suffit) ou d'autre fonctions du même tonneau (on fout des µC même dans un grille pain, un frigo, une guirlande de noël )
faut vraiment être atteint de compliquite chronique ou avoir l'esprit assez tordu et vicieux pour transformer un appareil simple en un truc indépannable juste pour "faire iech" et obliger l'usager a racheter un autre bronzingue quand ça ne marche plus
P/S/Z
j'ai jamais compris pourquoi on s'évertuais a utiliser un µC pour des fonctions si élémentaire , comme un clignoteur pour LED (un multivibrateur à 2 transistors suffit ) , ou une régulation de radiateur électrique (un thermostat a bilame suffit) ou d'autre fonctions du même tonneau (on fout des µC même dans un grille pain, un frigo, une guirlande de noël )
faut vraiment être atteint de compliquite chronique ou avoir l'esprit assez tordu et vicieux pour transformer un appareil simple en un truc indépannable juste pour "faire iech" et obliger l'usager a racheter un autre bronzingue quand ça ne marche plus
P/S/Z
-
- Rang "6 LEDs"
- Messages : 1522
- Enregistré le : 12 avr. 2012, 21:58
Re: clignoter diode avec microcontroleur 16f84
Et pourquoi roules-tu en voiture ?zeltron a écrit :Bonjour,
j'ai jamais compris pourquoi on s'évertuais a utiliser un µC pour des fonctions si élémentaire , comme un clignoteur pour LED (un multivibrateur à 2 transistors suffit ) , ou une régulation de radiateur électrique (un thermostat a bilame suffit) ou d'autre fonctions du même tonneau (on fout des µC même dans un grille pain, un frigo, une guirlande de noël )
faut vraiment être atteint de compliquite chronique ou avoir l'esprit assez tordu et vicieux pour transformer un appareil simple en un truc indépannable juste pour "faire iech" et obliger l'usager a racheter un autre bronzingue quand ça ne marche plus
P/S/Z
Une charrette à boeufs avance aussi.
Ce genre d'exercice permet de se familiariser avec les micros et c'est çà l'objectif.
Il faut commencer par des choses simples.
Bon WE.
-
- Administrateur
- Messages : 3630
- Enregistré le : 09 juil. 2006, 21:20
- Localisation : Limousin
Re: clignoter diode avec microcontroleur 16f84
Salut, et désolé de voir le sujet aussi longtemps après ! :/
Si je ne suis pas capable de te compléter ton fichier programme assemblage, je devrais cependant être capable de te fournir un code en C, qui doit tenir sur 5 lignes (:)), et qui permet simplement de faire clignoter une led ou plusieurs.
Cela t’intéresse ?
Je pourrais te le fournir que une fois revenu chez moi, si ça t’intéresse, merci de laisser un petit message ici pour que ça me le rappel en mail .
Bonne journée.
Edit : je déplace aussi le sujet, dans question technique ...
Si je ne suis pas capable de te compléter ton fichier programme assemblage, je devrais cependant être capable de te fournir un code en C, qui doit tenir sur 5 lignes (:)), et qui permet simplement de faire clignoter une led ou plusieurs.
Cela t’intéresse ?
Je pourrais te le fournir que une fois revenu chez moi, si ça t’intéresse, merci de laisser un petit message ici pour que ça me le rappel en mail .
Bonne journée.
Edit : je déplace aussi le sujet, dans question technique ...