voici mon premier code.... - ASM - Programmation
Marsh Posté le 11-01-2004 à 07:25:52
Concernant le Master Clear :
- L'entrée /MCLR (broche 4) est, comme son nom l'indique, active à l'état logique bas; tant que cette broche est à zéro, le PIC est à l'état reset, il ne redémarre que quand cette broche repasse à l'état logique 1. L'entrée /MCLR est filtrée pour éviter que des parasites ne réinitialisent le PIC. Par conséquent, l'impulsion doit avoir une certaine durée (quelques centaines de ms). Je t'invite à consulter le chapitre 8.3 de la datasheet, où tu trouvera de plus amples informations.
Marsh Posté le 11-01-2004 à 06:41:21
suite au dernier poste voici mon code
il compile parfaitement mais quelques questions me turlupine...
le voici donc :
;****************************************************************
; *
; PROGRAMME DE BLOQUAGE DE LA PIN RA2 SI LE TIMER EST ENTRE 64 *
; EVENEMENTS SURVENUE SUR LA PIN RA4/TOCK
; by MEUMOU *
;
;****************************************************************
LIST p=16F84 ; Définition de processeur
#include <p16F84.inc> ; Définitions de variables
ErrorLevel -302
__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _HS_OSC
;****************************************************************; ASSIGNATIONS
;****************************************************************
OPTIONVAL EQU H'0028' ; Valeur registre option
; b5=b3=1
; tout le reste a 0
; timer en mode compteur sur
; front montant
;****************************************************************
; DEFINE *
;****************************************************************
#DEFINE sortie PORTA,2 ; Sortie de la pin RA2
;****************************************************************
; DECLARATIONS DES VARIABLES *
;****************************************************************
CBLOCK 0x00C ; début de la zone variables
tmr0 : 1 ; compteur de front montant sur la pin
; RA4/TOKI
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
bsf STATUS,RP0 ; sélectionner banque 1
clrf EEADR ; permet de diminuer la
; consommation
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 sortie ; sortie (banque1)
bcf STATUS,RP0 ; repasser banque 0
goto start ; sauter au programme principal
;****************************************************************
; SOUS-ROUTINE 64 EVENEMENTS SUR RA4/TOCK
; *
;****************************************************************
incremen64
movlw 0xC0 ; charge la valeur 192
movwf tmr0 ; initialise le timer0
bcf INTCON,T0IF ; effacement du flag
loop
btfss INTCON,T0IF ; teste si compteur a debordé
goto loop ; non attendre débordement
return
;****************************************************************
; SOUS-ROUTINE 31 EVENEMENTS
; *
;****************************************************************
incremen31
clrf tmr0 ; effacement du timer0
movlw 0xE1 ; charge la valeur 225
movwf tmr0 ; initialise le timer0
bcf INTCON,T0IF ; effacement du flag
looop
btfss INTCON,T0IF ; teste so compteur a debordé
goto looop
return
;****************************************************************
; PROGRAMME PRINCIPAL *
;****************************************************************
start
bsf sortie ; sortie RA2 à 1
call incremen64 ; appeler le compteur de 64
; evenements (front montant) sur
; RA4/TOCK
bcf sortie ; sortie RA2 à 0
call incremen31 ; appeler le compteur de 31
; evenements (front montant) sur
; RA4/TOCK
goto start ; boucler
END
Qu en pensé vous pour un prempier jet ??
Y a t il un couille dans le potage ou ca vous parait bon ????
mes questions consernent l'electronique si RA2 est a 1,
je souhaiterai qu il alimente la base un transistor (en commutation)
afin de relié le potentiel de l'emetteur et du collecteur
quel type de transistor me conseillez vous ??
et si vous metteriez un resistance sur la base ??
derniere question pour le reset :
mon reset est un signal (exterieur au montage) qui passe de 0 à 5 V ET QUI RESTE a 5v jusqu au prochain reset
autrement dit le reset est fait sur le front montant
donc je pensais utiliser la encore un transistor en commutation
qui fait que si mon signal (exterieur au montage) alimente la
base du transistor, dont la pin 4 (MCLR est relie au collecteur) et l'emetteur a la masse
donc si reset passe de 0 a 5v, la pin 4 MCLR passe a 0v donc reset du pic
Ma logique est elle correcte?
c est bien sur le front descendant de la pin 4 qu il y a reset??
autrement dit si la broche 4 est a la masse pendant 5 s (exemple)
la pic demarre au front descendant de la pin 4 ??
ou il demarre apres les 5 secondes de mise a 0 de la pin 4 ??
voila voila
Au vu de mes dernieres reponses (QUE DALE!!!)
j espere avoir progresser suffisament pour po etre traitre par l indifference et le mepris
MERCI de vos reponses et de votre aide
MEUMOU