voici mon premier code....

voici mon premier code.... - ASM - Programmation

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
 
 

Reply

Marsh Posté le 11-01-2004 à 06:41:21   

Reply

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.
 
:hello:


---------------
Un matin je me lèverai et il fera beau.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed