plz, j'ai besoin d'aide
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

plz, j'ai besoin d'aide



  1. #1
    inviteea7cc453

    Smile plz, j'ai besoin d'aide


    ------

    Bsr à tous, svp je travaille sur la realisation d'une carte d’acquisition 2 voies analogiques.
    je travaille avec un microcontroleur de type PIC16f88
    Communication via RS232 Emission seule (liaison unidirectionnelle)
    Utilisation de l'USART avec interruption
    9600 bauds/s 8 bits de données Pas de bit de parité
    1 bit de STOP Pas de contrôle de flux
    Utilisation du module ADC 10 bits

    voici le programme:

    Code:
    Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct" 
    
    	List p=16F88	; processeur utilisé 
    	#include <p16F88.inc>
    
    	;Program Configuration Register 1
    	__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_ON & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _HS_OSC
    		;bits de configuration :
    		; Code protection OFF
    		; CCP1 function on RB0	
    		; In-Circuit Debugger OFF
    		; FLASH Program Memory Write protection OFF
    		; Data EE Memory Code Protection OFF
    		; Low Voltage Programming OFF
    		; Brown-out Reset ON
    		; RA5/MCLR pin function is MCLR
    		; Power-up Timer ON
    		; Watchdog Timer OFF
    		; HS oscillator (quartz 20 MHz)
    
    	;Program Configuration Register 2
    	__CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF
    		;bits de configuration :
    		;Internal External Switch Over mode OFF
    		;Fail-Safe Clock Monitor OFF
    
    ;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
    
    ;xxxxxxxxxxxxxxxxxxxxxxxxxx
    ; Déclaration des variables
    ;xxxxxxxxxxxxxxxxxxxxxxxxxx
    
    	CBLOCK 0x070		; début de la zone des registres d'usage général du 16F88
    						; (banque quelconque : 0,1,2 ou 3)
    						; 0x070 - 0x07F : 16 variables
    
    	STATUS_TEMP : 1 	; sauvegarde du registre STATUS (routine d'interruption)
    	W_TEMP : 1 			; sauvegarde du registre W		(routine d'interruption)
    						
    
    	octet1_tx : 1	; 1er octet à transmettre : 
    	octet2_tx : 1 	; 2ème octet à transmettre : 		
    	nb_octet_transmis : 1	; compteur du nombre d'octets transmis (0, 1, 2 )
    
    	ENDC  
    
    ;xxxxxxxxxxxxxxxxxxxx
    ; Démarrage sur reset
    ;xxxxxxxxxxxxxxxxxxxx
    
    	org 0x0000
    	goto initialisation
    
    
    ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    ; Routine d'interruption 
    ; - interruption émission (UART)
    
    ; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    
    	org 0x0004	 			; vecteur d'interruption
    
    	movwf W_TEMP 
    	swapf STATUS,W
    	movwf STATUS_TEMP		; sauvegarde du registre W puis du registre STATUS
    
      
    int1
    	bank1
        btfss PIE1, TXIE
        goto int2
        bank0
        btfsc PIR1, TXIF
        goto emission
    
    int2
    	goto restauration
    
    
    
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    	; Traitement de l'interruption d'émission de l'USART
    	; xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    emission
    
    	incf nb_octet_transmis , f	; on incrémente (nb_octet_transmis)	
    
    	movlw D'1'
    	subwf nb_octet_transmis , W
    	btfss STATUS , Z
    	goto emm2
    	; émission du 1er octet
    	movf octet1_tx  , W	
    
    	;bank0
    	movwf TXREG ; transmission
    				; N.B. le flag TXIF est remis à 0 par une écriture dans le registre TXREG	
    emm2
    
    	; émission du 2ème octet
    	movf octet2_tx  , W	
    
    	;bank0
    	movwf TXREG ; transmission
    				; N.B. le flag TXIF est remis à 0 par une écriture dans le registre TXREG	
    
    	bank1
    	bcf PIE1 , TXIE ; interdiction de l'interruption d'émission de l'USART	
    	bank0
    	clrf nb_octet_transmis
            clrf octet1_tx
             clrf octet2_tx 
    	goto restauration
    
    
    ;xxxxxxxxxxx
    restauration
    
    	swapf STATUS_TEMP,W		; restauration des registres STATUS puis W
    	movwf STATUS	
    	swapf W_TEMP,f
    	swapf W_TEMP,W
    
    	retfie		
    ;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'11011000'
    	movwf OPTION_REG
    	; bit 7 (/RBPU) = 1 : valeur par défaut (option non utilisée)
    	; bit 6 (INTEDG) = 1 : valeur par défaut (option non utilisée)
    	; bit 5 (T0CS) = 0 : l'horloge interne est l'horloge du timer0
    	; bit 4 (T0SE) = 1 : valeur par défaut (option non utilisée)
    	; bit 3 (PSA) = 1
    	; bit 2 (PS2) = 0
    	; bit 1 (PS1) = 0
    	; bit 0 (PS0) = 0 
    	; Prescaler du Timer0 = 1:1
    	; Watchdog sans prescaler (1:1)
    	; le timer0 déborde toutes les 256*0,2 µs = 51,2 µs 
    
    	movlw B'11111111'
    	movwf TRISA
    	; bit 0 du port A (RA0) = 1 : configuration en entrée (canal 0 du module ADC)
    	; bit 1 du port A (RA1) = 1 : configuration en entrée (canal 1 du module ADC)
    	; bit 2 du port A (RA2) = 1 : configuration en entrée, par exemple
    	; bit 3 du port A (RA3) = 1 : configuration en entrée, par exemple
    	; bit 4 du port A (RA4) = 1 : configuration en entrée, par exemple
    	; bit 5 du port A (RA5) = X : configuration en entrée, par exemple
    	; bit 6 du port A (RA6) = X : configuration en entrée, par exemple
    	; bit 7 du port A (RA7) = X : configuration en entrée, par exemple
    
    	movlw B'11111111'
    	movwf TRISB
    	; bit 0 du port B (RB0) = X : configuration en entrée, par exemple
    	; bit 1 du port B (RB1) = X : configuration en entrée, par exemple
    	; bit 2 du port B (RB2) = 1 : configuration en entrée (RX : USART)
    	; bit 3 du port B (RB3) = X : configuration en entrée, par exemple
    	; bit 4 du port B (RB4) = X : configuration en entrée, par exemple
    	; bit 5 du port B (RB5) = 1 : configuration en entrée (TX : USART)
    	; bit 6 du port B (RB6) = 1 : configuration en entrée 
    	; bit 7 du port B (RB7) = 1 : configuration en entrée 
    
    	movlw B'01111111'
    	movwf ANSEL	
    
    	; bit 1 du registre ANSEL = 1 : configuration de la broche RA1/AN1 comme entrée analogique (canal 1)
    	; bit 0 du registre ANSEL = 1 : configuration de la broche RA0/AN0 comme entrée analogique (canal 0)
    
    	; Configuration du module ADC
    
    	; tension de référence basse : VSS (0 V)
        bcf ADCON1 , VCFG0 	; VCFG0 = 0
    	; tension de référence haute : VDD (5 V)
        bcf ADCON1 , VCFG1 	; VCFG1 = 0
    	; Choix du format du résultat de la conversion
    	bsf ADCON1 , ADFM
    		; ADRESH = (0 0 0 0 0 0 b9 b8)
    		; ADRESL = (b7 b6 b5 b4 b3 b2 b1 b0)
    	; Choix de la fréquence d'horloge du convertisseur ADC
    		; F AD = F OSC / 32 = 625 kHz
    		; T AD = 1,6 µs
    	bcf ADCON1 , ADCS2 ; ADCS2 = 0
    	bank0
    	bsf ADCON0 , ADCS1 ; ADCS1 = 1
    	bcf ADCON0 , ADCS0 ; ADCS0 = 0
    	bank1
    
    	; configuration de la liaison RS232
        movlw D'129'
        movwf SPBRG ; (SPBRG) = D'129'
    
    	movlw B'00100100'	
    	movwf TXSTA
    	; bit 7 (CSRC) = 0 (non utilisé : 0 par exemple)
    	; bit 6 (TX9) = 0 : 8 bits de transmission
    	; bit 5 (TXEN) = 1 : autorise la réception
    	; bit 4 (SYNC) = 0 : mode asynchrone
    	; bit 3 = 0 (non implémenté)
    	; bit 2 (BRGH) = 1 : mode asynchrone haute vitesse
    	; bit 1 (TRMT) = 0 (en lecture seule)
    	; bit 0 (TX9D) = 0 (non utilisé : 0 par exemple)
    
    	bank0		
    	movlw B'10000000'	 
    	movwf RCSTA	
    	; bit 7 (SPEN) = 1 : utilisation du port série	
    	; bit 6 (RX9) = 0 : (non utilisé : 0 par exemple)
    	; bit 5 (SREN) = 0 (non utilisé : 0 par exemple)	
    	; bit 4 (CREN) =0 :(non utilisé : 0 par exemple)
    	; bit 3 (ADDEN) = 0 (non utilisé : 0 par exemple)
    	; bit 2 (FERR) = 0 (non utilisé : 0 par exemple)
    	; bit 1 (OERR) = 0 (non utilisé : 0 par exemple)
    	; bit 0 (RX9D) = 0 (non utilisé : 0 par exemple)
     
    	clrf PORTA  	; mise à 0 des sorties du port A
    	clrf PORTB 		; mise à 0 des sorties du port B 
    	clrf nb_octet_transmis
    
    
    
    
        bank1
    
    	bcf PIE1 , TXIE ; interdiction de l'interruption d'émission de l'USART	
    	bsf INTCON , PEIE ; autorisation des interruptions des périphériques
        bsf INTCON, GIE ; autorisation globale des interruptions 	
    
    	bank0
    	; Mise en service du convertisseur ADC
    	bsf ADCON0 , ADON ; ADON = 1
    
    	
    	goto debut_programme   
    
    
    
    
    
    ;xxxxxxxxxxxxxxxxxxxxx
    ; Programme principal
    ;xxxxxxxxxxxxxxxxxxxxx  
    
    debut_programme 
     
       ; Sélection du canal 0
    	bcf ADCON0 , CHS2 ; CHS2 = 0
    	bcf ADCON0 , CHS1 ; CHS1 = 0
    	bcf ADCON0 , CHS0 ; CHS0 = 0
     
    	; Attente pendant la phase d'acquisition (environ 19,7 µs)
    	; 19,7 µs  = 98 cycles (avec un quartz 20 MHz)
    	movlw .158 ; 256 - 98
    	movwf TMR0 ; (TMR0) = .158
    	bcf INTCON , TMR0IF ; on efface le drapeau du timer0
    attente
    	btfss INTCON , TMR0IF 
    	goto attente
    
    	; Lancement de la phase de conversion de l'ADC
    	bsf ADCON0 , GO ; GO = 1
    waitadc   
         btfsc GO
         goto waitadc
    
        movf ADRESH , W ; W = (ADRESH)
        movwf octet1_tx  ; 
    	bank1
      	movf ADRESL , W ; W = (ADRESL)
        movwf octet2_tx  ; 
        bank1
    	bsf PIE1 , TXIE ; autorisation de l'interruption d'émission de l'USART
        goto restauration
     
    
    	; Sélection du canal 1
    	bcf ADCON0 , CHS2 ; CHS2 = 0
    	bcf ADCON0 , CHS1 ; CHS1 = 0
    	bsf ADCON0 , CHS0 ; CHS0 = 1
     
       ; Attente pendant la phase d'acquisition (environ 19,7 µs)
    	; 19,7 µs  = 98 cycles (avec un quartz 20 MHz)
    
    	movlw .158 ; 256 - 98
    	movwf TMR0 ; (TMR0) = .158
    	bcf INTCON , TMR0IF ; on efface le drapeau du timer0
    attent
    	btfss INTCON , TMR0IF 
    	goto attent
    
    	; Lancement de la phase de conversion de l'ADC
    	bsf ADCON0 , GO ; GO = 1
    wait   
       btfsc GO
       goto wait
    
        movf ADRESH , W ; W = (ADRESH)
        movwf octet1_tx  ; 
    	bank1
        movf ADRESL , W ; W = (ADRESL)
        movwf octet2_tx  ; 
        bank1
    	bsf PIE1 , TXIE ; autorisation de l'interruption d'émission de l'USART
    
    	goto debut_programme 
    	END

    mais quand je compile:
    Error[128] C:\NOUVEAU DOSSIER\PROJETFE.ASM 284 : Missing argument(s)
    Error[128] C:\NOUVEAU DOSSIER\PROJETFE.ASM 315 : Missing argument(s)
    Halting build on first failure as requested.
    BUILD FAILED:

    -----
    Dernière modification par Jack ; 03/06/2012 à 10h32. Motif: Ajout balises code

  2. #2
    Jack
    Modérateur

    Re : plz, j'ai besoin d'aide



    Je rappelle que les doublons sont interdits.

    Merci d'ajouter les balises code la prochaine fois (en mode éditeur avancé, bouton #)

  3. #3
    invite860936ec

    Re : plz, j'ai besoin d'aide

    Bonjour , ton compilateur te signal qu'il manque "une partie de la commande" à la ligne 284 et à la ligne 315 .
    Sous MPLAB, tu peus faire apparaitre les numéros de lignes à gauche du fichier:
    clic droit sur le fichier, propriétées, asm fichier, cocher lignes numbers.
    Cela aide grandement pour retouver les lignes incriminées par les erreures.
    @+

Discussions similaires

  1. besoin d'aide exercices pour m'antrainer mes j'ai besoin d'aide
    Par invite5e082da7 dans le forum Physique
    Réponses: 4
    Dernier message: 06/12/2008, 22h37
  2. j'ai besoin d'aide
    Par invitea127bdbf dans le forum Orientation après le BAC
    Réponses: 2
    Dernier message: 20/06/2008, 19h37
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...