Répondre à la discussion
Affichage des résultats 1 à 14 sur 14

help!!un programme C en assembleur (PIC16F877)



  1. #1
    solid_sneak06

    Unhappy help!!un programme C en assembleur (PIC16F877)


    ------

    bonjour tout le monde!
    S'il vous plait les gars , est ce que quelqu'un peut m'aider à traduire ce programme C en assembleur.
    Code:
    #include <16F874.h> //verify header package//
    #use delay (clock = 20000000) // 20MHz Clock
    #use rs232 (BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)
    byte data;
    #int_rda
    rda_isr() // Serial Data interrupt service routine
    {
    disable_interrupts(int_rda); //infinite loop prevention
    data = getc(); //Recieve Data From Some Module
    putc(data); //Repeat data out
    enable_interrupts(int_rda); //re-enable interrupts
    }
    void main()
    {
    enable_interrupts(global);
    enable_interrupts(int_rda);
    output_low(PIN_C0);
    while(1)
    { //Flash LED at 2.5Hz while not transmitting
    output_high(PIN_C0);
    delay_ms(200);
    output_low(PIN_C0);
    delay_ms(200);
    }
    }
    Utiliser les balises CODE et pas QUOTE pour les listing, merci
    merci.

    -----
    Dernière modification par monnoliv ; 30/08/2006 à 17h04.

  2. Publicité
  3. #2
    HULK28

    Re : help!!un programme C en assembleur (PIC16F877)

    Salut,

    on peut savoir pourquoi tu veux traiter ça en assembleur?
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  4. #3
    solid_sneak06

    Unhappy Re : help!!un programme C en assembleur (PIC16F877)

    Citation Envoyé par HULK28 Voir le message
    Salut,

    on peut savoir pourquoi tu veux traiter ça en assembleur?
    Car j'ai jamais travaillé en C!!! par contre j'ai un minimum on assembleur et moi je veux comprendre ce que ce programme fait exactement (ligne par ligne).
    merci HULK28

  5. #4
    HULK28

    Re : help!!un programme C en assembleur (PIC16F877)

    #include <16F874.h> //verify header package//
    librairie du 16F874

    #use delay (clock = 20000000) // 20MHz Clock
    choix de la vitesse horloge
    #use rs232 (BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)
    choix vitesse de transmission RS232 (9600 bauds, emission sur pin C6, réception sur pin C7)
    byte data;
    variable globale
    #int_rda

    rda_isr() // Serial Data interrupt service routine
    fonction d'interruption servant à la transmission série.
    {
    disable_interrupts(int_rda); //infinite loop prevention

    data = getc(); //Recieve Data From Some Module
    on place le contenu de la réception dans data
    putc(data); //Repeat data out
    enable_interrupts(int_rda); //re-enable interrupts
    }
    void main()
    début du prog
    {
    enable_interrupts(global);
    routine de validation des interruptions
    enable_interrupts(int_rda);
    output_low(PIN_C0);
    while(1)
    on fait clignoter une led
    { //Flash LED at 2.5Hz while not transmitting
    output_high(PIN_C0);
    delay_ms(200);
    output_low(PIN_C0);
    delay_ms(200);
    }
    }
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  6. #5
    solid_sneak06

    Re : help!!un programme C en assembleur (PIC16F877)

    merci bcp HULK mais j'ai pas bien compris
    1-c'est quoi la différence entre
    enable_interrupts(global);
    et
    enable_interrupts(int_rda);
    ?????


    2-Où il enregistre les données reçus?
    putc(data);
    putc où???


    3-comment il fait le test
    while(1)
    ? il vient d'où le 1??

    merci

  7. A voir en vidéo sur Futura
  8. #6
    HULK28

    Re : help!!un programme C en assembleur (PIC16F877)

    1-c'est quoi la différence entre

    enable_interrupts(global);
    gère l'ensemble des interruptions

    et

    enable_interrupts(int_rda);

    gère en interruption les données entrantes.


    2-Où il enregistre les données reçus?
    Citation:
    putc(data);

    putc où???

    pour cela il faudrait voir la déclaration de la fonction qui gère les données reçus.
    On sait seulement que data est l'argument d'entrée de putc



    3-comment il fait le test
    Citation:
    while(1)

    ? il vient d'où le 1??

    while(1) (tant que 1 est vrai, donc tout le temps, on fait cette action, sauf si une interruption vient dérouter le prog.
    Le génie est fait d'1 pour cent d'inspiration et de 99% pour cent de transpiration. Edison

  9. Publicité
  10. #7
    Invité

    Re : help!!un programme C en assembleur (PIC16F877)

    Citation Envoyé par HULK28 Voir le message
    2-Où il enregistre les données reçus?
    Citation:
    putc(data);

    putc où???

    pour cela il faudrait voir la déclaration de la fonction qui gère les données reçus.
    On sait seulement que data est l'argument d'entrée de putc

    putc(data) envoie l'octet data sur la liaison série, ce programme fait un écho des caractères entrants de la liaison série en faisant clignoter une led

    A+,

    Bruno

  11. #8
    solid_sneak06

    Unhappy Re : help!!un programme C en assembleur (PIC16F877)

    merci les gars,j'ai presque compris; mais please, je le veux en assembleur

  12. #9
    freepicbasic

    Re : help!!un programme C en assembleur (PIC16F877)

    Programme traduit "à la main"
    et pas testé , juste pour donner une idée de ce que ça peux donner.
    Il est possible que certaines syntaxes ne correspondent pas a votre assembleur.

    noter que j'utilise le port USART car les pins déclarées correspondes.
    Dans une autre configuration, une gestion soft des ports aurait été necessaire.

    A+
    pat
    Code:
    ##########################
    ##########################
    
    ;#include <16F874.h> //verify header package//
    include "P16F874.INC"
    
    ;#use delay (clock = 20000000) // 20MHz Clock
    #define 20MHZ
    ;#use rs232 (BAUD = 9600, XMIT = PIN_C6, RCV = PIN_C7)
    
    ;        OPTION_REG = 0x07
    bsf STATUS, RP0 ; bank1
    movlw 7
    movwf OPTION_REG
    ;        TXSTA = 000H    ' tx enable ,clear Sync brgh=0 lent
    clrf TXSTA
    ;        SPBRG = 129     ' 9600 baud à clock 20mhz brgh=1
    MOVLW 129
    MOVWF SPBRG
    ;                        ' 2400 si Brgh=0
    ;        bank0
    bcf STATUS, RP0
    ;        RCSTA = 090H    ' setting SPEN, CREN
    movlw 0x90
    movwf RCSTA
    bcf RCSTA,CREN  ; nettoie FERR
    bsf RCSTA,CREN  ;
    movf RCREG,w    ; nettoie OERR
    
    bsf STATUS, RP0
    Bsf PIE,RCIE
    bcf STATUS, RP0
    
    
    
    
    
    
    w_temp          equ 20
    status_temp     equ 21
    FSR_temp        equ 22
    PCLATH_temp     equ 23
    _RAM		equ 24
    _RAM1		equ 25
    TXBYTE		equ 26
    
    
    ;byte data;
     _data equ 27
    
    ;void main()
    ;{
    main
    
    ;enable_interrupts(global);
    bsf INTCON,GIE
    
    ;enable_interrupts(int_rda);
    bsf STATUS, RP0
    Bsf PIE,RCIE
    bcf STATUS, RP0
    
    ;output_low(PIN_C0);
    BCF PORTC,0
    
    ;while(1)
    While1:
    
    ;{ //Flash LED at 2.5Hz while not transmitting
    ;output_high(PIN_C0);
    bsf PORTC,0
    
    ;delay_ms(200);
    #IFDEF 20MHZ
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    #ENDIF
    movlw 200
    call delayMs
    
    ;output_low(PIN_C0);
    bcf PORTC,0
    
    ;delay_ms(200);
    #IFDEF 20MHZ
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    	movlw 200
    	call delayMs
    #ENDIF
    
    ;}
    goto While1
    
    ;}
    goto main
    
     
    _DELAYMS
    	movwf	_RAM1
    	clrf	_RAM
    pb_lab4
    	nop
    	nop
    	decfsz	_RAM,F
    	goto	pb_lab4
    	decfsz	_RAM1,F
    	goto	pb_lab4
    	retlw	0
    
    
    ;#int_rda
    ;rda_isr() // Serial Data interrupt service routine
    RX_INT_HANDLER
    ;{
    ;disable_interrupts(int_rda); //infinite loop prevention
    bsf STATUS, RP0
    Bcf PIE,RCIE
    Bcf PIE,TXIE
    bcf STATUS, RP0
    ;data = getc(); //Recieve Data From Some Module
    movf RCREG,W
    MOVWF data
    
    ;putc(data); //Repeat data out
    MOVVF data,W ; facultatif
    movwf TXBYTE
    Bsf PIE,TXIE
    
    ;enable_interrupts(int_rda); //re-enable interrupts
    bsf STATUS, RP0
    Bsf PIE,RCIE
    bcf STATUS, RP0
    return
    ;}
    
    
    
    
    TX_INT_HANDLER
    ;TXREG= TXBYTE
    Movf TXBYTE,W
    MOVWF TXREG
    return
    
    
    
    INTERRUPT:
    
            movwf   w_temp          ; sauver registre W
            swapf   STATUS,w        ; swap status avec résultat dans w
            movwf   status_temp     ; sauver status swappé
            movf    FSR , w                 ; charger FSR
            movwf   FSR_temp        ; sauvegarder FSR
            movf    PCLATH, w       ; charger PCLATH
            movwf   PCLATH_temp     ; sauvegarder PCLATH
            clrf    PCLATH          ; passer en Page 0
    
    
                            ; switch vers différentes interrupts
                            ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
            
                            ; Interruption réception TIMER 0
                            ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    
    
            btfss   INTCON,T0IF
            GOTO    intsw0
    ;               = = = = = = = = = = = = TIMER 0 = = = = = = = = = = = = 
    
    ; prog TMR0
    
    ;       GOTO    restoreReg
    
            
                            ; Interruption réception USART
                            ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    
    intsw0
            BANKSEL         PIE1            ; sélectionner banque 1
            btfss   PIE1,RCIE       ; tester si interrupt autorisée
            GOTO    intsw1          ; non sauter
            bcf     STATUS,RP0      ; oui, sélectionner banque0
            btfss   PIR1,RCIF       ; oui, tester si interrupt en cours
            GOTO    intsw1          ; non sauter
            call    RX_INT_HANDLER  ; oui, traiter interrupt
    
                            ; Interruption transmission USART
                            ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
    intsw1
            bsf     STATUS,RP0      ; sélectionner banque1
            btfss   PIE1,TXIE       ; tester si interrupt autorisée
            GOTO    restorereg      ; non sauter
            bcf     STATUS,RP0      ; oui, sélectionner banque0
            btfsc   PIR1,TXIF       ; oui, tester si interrupt en cours
            call    TX_INT_HANDLER          ; oui, traiter interrupt
    ;       GOTO    restorereg      ; non sauter
    
                            ;restaurer registres
                            ; - - - - - - - - - - - - - - - - - - - 
    restorereg
            movf    PCLATH_temp, w  ; charger PCLATH sauvé
            movwf   PCLATH          ; restaurer PCLATH 
            movf    FSR_temp , w    ; charger FSR sauvé
            movwf   FSR             ; restaurer FSR
            swapf   status_temp,w   ; swap ancien status, résultat dans w
            movwf   STATUS          ; restaurer status
            swapf   w_temp,f        ; Inversion L et H de l'ancien W
                                            ; sans modifier Z
            swapf   w_temp,w        ; Réinversion de L et H dans W
                                    ; W restauré sans modifier status
            retfie                  ; return from interrupt
    Dernière modification par monnoliv ; 31/08/2006 à 14h57.

  13. #10
    Invité

    Re : help!!un programme C en assembleur (PIC16F877)

    Citation Envoyé par solid_sneak06 Voir le message
    merci les gars,j'ai presque compris; mais please, je le veux en assembleur
    voici une methode pour convertir un programme C en assembleur pour pic16 :
    - écrire et compiler le programme avec mikroC
    - récupérer le code ASM et utiliser mon convertisseur :
    http://www.micro-examples.com/public...ranslator.html

    le source assembleur traduit est directement utilisable avec MPLAB

    par exemple pour le code cité, cela donnerait pour un pic16F877A (exemple non testé) :

    Code:
    #define PIN_C0  PORTB.F0
    
    unsigned char data;
    
    void    interrupt() // Serial Data interrupt service routine
    {
    data = USART_read(); //Recieve Data From Some Module
    USART_Write(data); //Repeat data out
    PIR1.RCIF = 0 ; //re-enable interrupts
    }
    void main()
    {
    INTCON.GIE = 1;
    INTCON.PEIE = 1 ;
    PIE1.RCIE = 1;
    PIN_C0 = 0 ;
    USART_Init(9600) ;
    while(1)
    { //Flash LED at 2.5Hz while not transmitting
    PIN_C0 = 1 ;
    delay_ms(200);
    PIN_C0 = 0;
    delay_ms(200);
    }
    }
    le code source traduit serait :

    Code:
    ; *******************************************************************
    ; MPLAB ASM PIC code generated by Micro-Examples translator
    ; 
    ; WARNING :
    ; This code is given 'as this' with no guarantee
    ; Use this at your own risks !
    ; 
    ; NOTE :
    ; Disable MPLAB assembler case sensitivity
    ;
    ; Please report bugs & comments to
    ; http://www.micro-examples.com/forums/
    ; 
    ; 
    ; DEFINITIONS :
    
    ?saveFSR				EQU	0x21	;  33 : '!'
    ?savePCLATH				EQU	0x23	;  35 : '#'
    ?saveSTATUS				EQU	0x22	;  34 : '"'
    BRGH					EQU	0x02	;   2 : ''
    FARG_Usart_Write			EQU	0x24	;  36 : '$'
    FSR					EQU	0x04	;   4 : ''
    INTCON					EQU	0x0B	;  11 : ''
    PCLATH					EQU	0x0A	;  10 : ''
    PIE1					EQU	0x0C	;  12 : ''
    PIR1					EQU	0x0C	;  12 : ''
    PORTB					EQU	0x06	;   6 : ''
    RCREG					EQU	0x1A	;  26 : ''
    RCSTA					EQU	0x18	;  24 : ''
    RP0					EQU	0x05	;   5 : ''
    RP1					EQU	0x06	;   6 : ''
    SPBRG					EQU	0x19	;  25 : ''
    STACK_0					EQU	0x70	; 112 : 'p'
    STACK_1					EQU	0x71	; 113 : 'q'
    STACK_10				EQU	0x7A	; 122 : 'z'
    STACK_11				EQU	0x7B	; 123 : '{'
    STACK_12				EQU	0x7C	; 124 : '|'
    STACK_15				EQU	0x7F	; 127 : ''
    STATUS					EQU	0x03	;   3 : ''
    STSAVED_0				EQU	0x2A	;  42 : '*'
    TRISC					EQU	0x07	;   7 : ''
    TXREG					EQU	0x19	;  25 : ''
    TXSTA					EQU	0x18	;  24 : ''
    Usart_Init_tmp_L0			EQU	0x29	;  41 : ')'
    Usart_Read_tmp_L0			EQU	0x24	;  36 : '$'
    Z					EQU	0x02	;   2 : ''
    _data					EQU	0x20	;  32 : ' '
    
    ; TRANSLATED ASM SOURCE CODE :
    
    		ORG	0x0000
    
    ;  ASM code generated by mikroVirtualMachine for PIC - V. 6.0.0.0
    ;  Date/Time: 30/08/2006 17:42:15
    ;  Info: http://www.mikroelektronika.co.yu
    ; 
    ; 
    ; ADDRESS	OPCODE	ASM
    ; ----------------------------------------------
    		GOTO	_main
    
    		ORG	0x0021
    _Usart_Read:
    		BCF	STATUS, RP1
    		BCF	STATUS, RP0
    		MOVF	RCREG, .0
    		MOVWF	Usart_Read_tmp_L0 
    		BTFSS	RCSTA, .1
    		GOTO	L_Usart_Read_2
    		BCF	RCSTA, .4
    		BSF	RCSTA, .4
    
    		ORG	0x0029
    L_Usart_Read_2:
    		MOVF	Usart_Read_tmp_L0, .0
    		MOVWF	STACK_0 
    		RETURN	 
    
    		ORG	0x002C
    _Usart_Write:
    
    		ORG	0x002C
    L_Usart_Write_3:
    		MOVLW	.0 
    		BCF	STATUS, RP1
    		BSF	STATUS, RP0
    		BTFSC	TXSTA, .1
    		MOVLW	.1 
    		MOVWF	STACK_1 
    		MOVF	STACK_1, .0
    		XORLW	.0 
    		BTFSS	STATUS, Z
    		GOTO	L_Usart_Write_4
    		NOP	 
    		GOTO	L_Usart_Write_3
    
    		ORG	0x0038
    L_Usart_Write_4:
    		BCF	STATUS, RP0
    		MOVF	FARG_Usart_Write+.0, .0
    		MOVWF	TXREG 
    		RETURN	 
    
    		ORG	0x0004
    _interrupt:
    		MOVWF	STACK_15 
    		SWAPF	STATUS, .0
    		CLRF	STATUS
    		MOVWF	?saveSTATUS 
    		MOVF	FSR, .0
    		MOVWF	?saveFSR 
    		MOVF	PCLATH, .0
    		MOVWF	?savePCLATH 
    		CLRF	PCLATH
    		MOVF	STACK_0, .0
    		MOVWF	STSAVED_0 
    ;test.c,5 :: 		void    interrupt() // Serial Data interrupt service routine
    ;test.c,7 :: 		data = USART_read(); //Recieve Data From Some Module
    		CALL	_Usart_Read
    		MOVF	STACK_0, .0
    		MOVWF	_data 
    ;test.c,8 :: 		USART_Write(data); //Repeat data out
    		MOVF	STACK_0, .0
    		MOVWF	FARG_Usart_Write+.0 
    		CALL	_Usart_Write
    ;test.c,9 :: 		PIR1.RCIF = 0 ; //re-enable interrupts
    		BCF	PIR1, .5
    ;test.c,10 :: 		}
    
    		ORG	0x0016
    L_Interrupt_end:
    		MOVF	STSAVED_0, .0
    		MOVWF	STACK_0 
    		MOVF	?savePCLATH, .0
    		MOVWF	PCLATH 
    		MOVF	?saveFSR, .0
    		MOVWF	FSR 
    		SWAPF	?saveSTATUS, .0
    		MOVWF	STATUS 
    		SWAPF	STACK_15, .1
    		SWAPF	STACK_15, .0
    		RETFIE	 
    
    		ORG	0x003C
    _Usart_Init:
    		BCF	STATUS, RP1
    		BSF	STATUS, RP0
    		BSF	TXSTA, .5
    		MOVLW	.144 
    		BCF	STATUS, RP0
    		MOVWF	RCSTA 
    		BSF	STATUS, RP0
    		BSF	TRISC, .7
    		BCF	TRISC, .6
    
    		ORG	0x0045
    L_Usart_Init_0:
    		BCF	STATUS, RP0
    		BTFSS	PIR1, .5
    		GOTO	L_Usart_Init_1
    		MOVF	RCREG, .0
    		MOVWF	Usart_Init_tmp_L0 
    		GOTO	L_Usart_Init_0
    
    		ORG	0x004B
    L_Usart_Init_1:
    		RETURN	 
    
    		ORG	0x004C
    _main:
    ;test.c,11 :: 		void main()
    ;test.c,13 :: 		INTCON.GIE = 1;
    		BSF	INTCON, .7
    ;test.c,14 :: 		INTCON.PEIE = 1 ;
    		BSF	INTCON, .6
    ;test.c,15 :: 		PIE1.RCIE = 1;
    		BCF	STATUS, RP1
    		BSF	STATUS, RP0
    		BSF	PIE1, .5
    ;test.c,16 :: 		PIN_C0 = 0 ;
    		BCF	STATUS, RP0
    		BCF	PORTB, .0
    ;test.c,17 :: 		USART_Init(9600) ;
    		MOVLW	.51 
    		BSF	STATUS, RP0
    		MOVWF	SPBRG 
    		BSF	TXSTA, BRGH
    		CALL	_Usart_Init
    ;test.c,18 :: 		while(1)
    
    		ORG	0x0058
    L_main_0:
    ;test.c,20 :: 		PIN_C0 = 1 ;
    		BSF	PORTB, .0
    ;test.c,21 :: 		delay_ms(200);
    		MOVLW	.3 
    		MOVWF	STACK_12 
    		MOVLW	.255 
    		MOVWF	STACK_11 
    		MOVLW	.255 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_12, F
    		GOTO	$+.2
    		GOTO	$+.8
    		DECFSZ	STACK_11, F
    		GOTO	$+.2
    		GOTO	$+.4
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		GOTO	$-.5
    		GOTO	$-.9
    		MOVLW	.11 
    		MOVWF	STACK_11 
    		MOVLW	.255 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_11, F
    		GOTO	$+.2
    		GOTO	$+.4
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		GOTO	$-.5
    		MOVLW	.24 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		NOP	 
    		NOP	 
    ;test.c,22 :: 		PIN_C0 = 0;
    		BCF	PORTB, .0
    ;test.c,23 :: 		delay_ms(200);
    		MOVLW	.3 
    		MOVWF	STACK_12 
    		MOVLW	.255 
    		MOVWF	STACK_11 
    		MOVLW	.255 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_12, F
    		GOTO	$+.2
    		GOTO	$+.8
    		DECFSZ	STACK_11, F
    		GOTO	$+.2
    		GOTO	$+.4
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		GOTO	$-.5
    		GOTO	$-.9
    		MOVLW	.11 
    		MOVWF	STACK_11 
    		MOVLW	.255 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_11, F
    		GOTO	$+.2
    		GOTO	$+.4
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		GOTO	$-.5
    		MOVLW	.24 
    		MOVWF	STACK_10 
    		DECFSZ	STACK_10, F
    		GOTO	$-.1
    		NOP	 
    		NOP	 
    ;test.c,24 :: 		}
    		GOTO	L_main_0
    ;test.c,25 :: 		}
    		GOTO	$
    
    		END
    notez que les lignes C sont présentes en commentaire dans le source ASM

    pour ceux qui préfèrent le basic ou le pascal ça marche aussi avec mikroBasic et mikroPascal

    Bruno

  14. #11
    wufeii

    programme c en arm 11 !!!!

    bonjour a tous voila je débute dans la manipulation de l'assembleur et j'aimerai que vous m'aidiez pour traduire ce programme ecrit en C en langage d'assembleur (arm11) merci d'avance !!!!!!

    voila le programme:
    /* procedure comparerChaine */
    #include "chaine.h"
    int comparerChaine (const ChaineDyn ch1, const ChaineDyn ch2)
    {
    char * ptrCh1;
    char * ptrCh2;
    int i;
    int res = 0;
    ptrCh1 = ch1.ptrCar;
    ptrCh2 = ch2.ptrCar;
    /*deplacement dans les 2 chaines*/
    for (i=0; i <= ch1.nbCar && i <= ch2.nbCar && res == 0; i++)
    {
    /* comparaison de l'element pointe en cours*/
    if ((*ptrCh1)>(*ptrCh2))
    {
    res=1;
    }
    else
    {
    if ((*ptrCh1)<(*ptrCh2))
    {
    res=-1;
    }
    else
    {
    ptrCh2++;
    ptrCh1++;
    }
    }
    }
    return (res);
    }

  15. #12
    carlos1986

    Re : help!!un programme C en assembleur (PIC16F877)

    salut tous le monde
    moi j'ai un message d'erreur :
    Error[108] D:\WALID\YOU\LED_2.ASM 305 : Illegal character (,)
    quand j'utilise l'instruction 'if' dans mplab 6.6
    svp repondez moi

  16. Publicité
  17. #13
    Jack

    Re : help!!un programme C en assembleur (PIC16F877)

    Salut carlos1986,

    difficile de t'aider si on ne voit pas ton programme. Avec le peu que tu nous donnes, je peux juste te dire que le compilateur est tombé sur une virgule qu'il considère ne rien avoir à faire à cet endroit.

    De plus, je ne vois pas ce qu'une virgule viens faire dans ton if.

    A+

  18. #14
    Jack

    Re : help!!un programme C en assembleur (PIC16F877)

    En regardant le message d'erreur plus attentivement, il y a un truc bizarre: tu parles d'un if et le nom du programme a pour extension .asm.

    Tu fait du C ou de l'assembleur?

Sur le même thème :

Discussions similaires

  1. programme en assembleur
    Par electroinfo dans le forum Électronique
    Réponses: 1
    Dernier message: 06/08/2007, 12h22
  2. compiler un programme assembleur avec le DOS
    Par pracede2005 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 05/09/2006, 11h47
  3. programme assembleur
    Par DID2000 dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 29/05/2006, 22h33
  4. aide petit programme PIC16F877
    Par solid_sneak06 dans le forum Électronique
    Réponses: 12
    Dernier message: 26/04/2006, 21h18
  5. Programme en assembleur pour une modulation FSK
    Par Bretzel dans le forum Électronique
    Réponses: 0
    Dernier message: 02/02/2006, 09h00