[Programmation] Vérification débutant prog LED
Répondre à la discussion
Affichage des résultats 1 à 7 sur 7

Vérification débutant prog LED



  1. #1
    invitecaa117b8

    Vérification débutant prog LED


    ------

    Bonjour,

    Je viens de débuter en programmation assembleur. Serait il possible de vérifier ce code ?

    J'ai réalisé la carte électronique et souhaite tester ce code dessus (pour PIC10f20). Je rencontre des difficultés lorsque je compile sur MplabX, de nombreux messages d'erreurs s'affichent.

    "newAsmTemplate.asm:6: error: (141) can't open include file "p10f220.inc": No such file or directory"
    "nbproject/Makefile-default.mk:112: recipe for target 'build/default/production/newAsmTemplate.obj' failed"

    Code:
    ; Sélection du PIC
     #ifdef  __10F220
    
           list        p=10F220 , r = DEC
           #include "p10f220.inc"
     #endif
    
    ; Configuration
      __config  _CP_OFF & _MCLRE_ON & _IOFSCS_4MHZ & _MCPU_ON  & _WDT_OFF
    
    ; Affectation des variables locales
    ;              Vin     ADCdec  ADChex
    k1 equ .134  ; 10.5V ->  134   -> 86h
    k2 equ .146  ; 11.5V ->  146   -> 92h
    k3 equ .153  ; 12V   ->  153   -> 99h
    k4 equ .184  ; 14,5  ->  184   -> B8h
    
    ;Définition des ports
    #define    LEDR  sGPIO,GP1   ; LED Rouge
    #define    LEDV  sGPIO,GP2   ; LED Verte
    ;#define    GPIO,GP0    ; AN0
    ;#define    GPIO,GP3    ; 
    
    ; Mémoire RAM
         CBLOCK 0x10             ; RAM de 0x10 à 0x1F
            sGPIO                
            d1                   ; Compteur tempo
            d2
       
    ; MACRO local
    EXEC  MACRO
            movf    sGPIO, W
            movwf   GPIO
          ENDM
    ; LED vert allumé
    Vert_on  MACRO
       bsf   LEDV
              ENDM
    ; LED rouge allumé
    Rouge_on  MACRO
       bsf   LEDR
              ENDM
    ; LED vert éteint
    Vert_off  MACRO
       bcf   LEDV
              ENDM
    ; LED rouge éteinte
    Rouge_off  MACRO
       bcf   LEDR
              ENDM
    ; LED rouge clignote
    Rouge_tg MACRO
       movlw  b'00010'   
       xorwf  sGPIO, f
             ENDM
    ; LED verte clignote
    Vert_tg MACRO
       movlw  b'00100'   
       xorwf  sGPIO, f
             ENDM
     PAGE
    
    ; Sécurité pour la valeur d'étalonnage
    RCCAL   ORG     0x1FF
            res     1
    
    ; Réinitialisation du vecteur
            ORG     0x00
    
    ; Calibration oscillateur interne
            andlw   0xFE             
            movwf   OSCCAL
    
    MAIN:
    ; initialisation I/O
            movlw    b'11010111'
             OPTION                 
    
    ; ADCON0 default  '11001100'
            movlw    b'01000001'   
    
            movwf   ADCON0
    
    ; GPIO
            clrf    GPIO           
            movlw   b'1001'         
            tris    GPIO            
    
    ;----------------------------------------------------------
    ;--------------------- Programme principal ----------------
    ;----------------------------------------------------------
       Vert_off           ; LED éteinte
       Rouge_off
       EXEC
       movf   sGPIO,w
       movwf  d3
    
    ml call   ReadAD      ; lire ADC
    
       movlw  k1          ; < k1?
       subwf  ADRES, w
       skpc
       goto   sel1
    n1 movlw  k2          ; < k2?
       subwf  ADRES, w
       skpc
       goto   sel2
    n2 movlw  k3          ; < k3?
       subwf  ADRES, w
       skpc
       goto   sel3
    n3 movlw  k4          ; < k4?
       subwf  ADRES, w
       skpc
       goto   sel4
    n4 goto   sel5        ; > k4?
    
    ; LED driving
    sel1:
       Vert_off        
       Rouge_tg          
       goto   selxec
    sel2:                
       Vert_off          
       Rouge_on
       goto   selxec
    sel3:                
       Vert_on          
       Rouge_on
       goto   selxec
    sel4:                
       Rouge_off          
       Vert_on
       goto   selxec
    sel5:                
       btfss  sGPIO,GP1  
        goto  a1         
       btfss  sGPIO,GP2  
        goto  lamp
       goto   adj
    a1 btfsc  sGPIO, GP2
        goto  lamp
    adj:                 
       Rouge_on
       Vert_off
    
    lamp:
       Vert_tg          
       Rouge_tg
    
    
    selxec EXEC          
    
       call   Delay025s  
    
       goto   ml         
    
    
    ReadAD  bsf         ADCON0, 1    ; start conversion
    loopADC
            nop
            btfsc       ADCON0, 1    ; wait for ‘DONE’
            goto        loopADC
            retlw       0
    
    ; Delay = 0.25 seconds
    ; Clock frequency = 4 MHz
    ; 0.25 seconds = 250000 cycles
    Delay025s              ;249993 cycles
            movlw   0x4E
            movwf   d1
            movlw   0xC4
            movwf   d2
    Delay025s_0
            decfsz  d1, f
            goto    $+2
            decfsz  d2, f
            goto    Delay025s_0
            goto    $+1     ;3 cycles
            nop
            retlw   0       ;4 cycles (including call)
    
    END
    Je vous remercie pour votre aide.

    -----

  2. #2
    invitecaa117b8

    Re : Vérification débutant prog LED

    Personne pour m'aider ??

  3. #3
    freepicbasic

    Re : Vérification débutant prog LED

    Il faut mettre les define manquant
    A voir si ceux que j'ai mis son correct !
    Et surtout le endc après le cblock ce qui génère un nombre incroyable d'erreurs
    il manquait aussi d3

    Je ne sais pas pourquoi sGPIO au lieu de GPIO , à voir aussi...

    J'ai seulement corrigé les erreurs de compile.
    à voir la fonctionnalité maintenant.



    Code:
    ; Sélection du PIC
     #ifdef  __10F220
    
           list        p=10F220 , r = DEC
           #include "p10f220.inc"
     #endif
    
    #define _CP_OFF 8
    #define _MCLRE_ON 16
    #define _IOFSCS_4MHZ 0
    #define _MCPU_ON 0
    #define _WDT_OFF 0
    
    GPIO equ 6
    GP1 equ 2
    GP2 equ 4
    ADCON0 equ 7 
    ADRES equ 8
    OSCCAL equ 5
    
    ; Configuration
      __config  _CP_OFF & _MCLRE_ON & _IOFSCS_4MHZ & _MCPU_ON  & _WDT_OFF
    
    ; Affectation des variables locales
    ;              Vin     ADCdec  ADChex
    k1 equ .134  ; 10.5V ->  134   -> 86h
    k2 equ .146  ; 11.5V ->  146   -> 92h
    k3 equ .153  ; 12V   ->  153   -> 99h
    k4 equ .184  ; 14,5  ->  184   -> B8h
    
    ;Définition des ports
    #define    LEDR  GPIO,GP1   ; LED Rouge
    #define    LEDV  GPIO,GP2   ; LED Verte
    ;#define    GPIO,GP0    ; AN0
    ;#define    GPIO,GP3    ; 
    
    ; Mémoire RAM
         CBLOCK 0x10             ; RAM de 0x10 à 0x1F
            sGPIO                
            d1                   ; Compteur tempo
            d2
            d3
         endc
    
    ; MACRO local
    EXEC MACRO
      movf    GPIO,W
      movwf   GPIO
      ENDM
    
    ; LED vert allumé
    Vert_on  MACRO
      bsf   LEDV
      ENDM
    
    ; LED rouge allumé
    Rouge_on  MACRO
       bsf   LEDR
              ENDM
    ; LED vert éteint
    Vert_off  MACRO
       bcf   LEDV
              ENDM
    ; LED rouge éteinte
    Rouge_off  MACRO
       bcf   LEDR
              ENDM
    ; LED rouge clignote
    Rouge_tg MACRO
       movlw  b'00010'   
       xorwf  GPIO, f
             ENDM
    ; LED verte clignote
    Vert_tg MACRO
       movlw  b'00100'   
       xorwf  GPIO, f
             ENDM
     PAGE
    
    ; Sécurité pour la valeur d'étalonnage
    RCCAL   ORG     0x1FF
            res     1
    
    ; Réinitialisation du vecteur
            ORG     0x00
    
    ; Calibration oscillateur interne
            andlw   0xFE             
            movwf   OSCCAL
    
    MAIN:
    ; initialisation I/O
            movlw    b'11010111'
             OPTION                 
    
    ; ADCON0 default  '11001100'
            movlw    b'01000001'   
    
            movwf   ADCON0
    
    ; GPIO
            clrf    GPIO           
            movlw   b'1001'         
            tris    GPIO            
    
    ;----------------------------------------------------------
    ;--------------------- Programme principal ----------------
    ;----------------------------------------------------------
       Vert_off           ; LED éteinte
       Rouge_off
       EXEC
       movf   sGPIO,w
       movwf  d3
    
    ml call   ReadAD      ; lire ADC
    
       movlw  k1          ; < k1?
       subwf  ADRES, w
       skpc
       goto   sel1
    n1 movlw  k2          ; < k2?
       subwf  ADRES, w
       skpc
       goto   sel2
    n2 movlw  k3          ; < k3?
       subwf  ADRES, w
       skpc
       goto   sel3
    n3 movlw  k4          ; < k4?
       subwf  ADRES, w
       skpc
       goto   sel4
    n4 goto   sel5        ; > k4?
    
    ; LED driving
    sel1:
       Vert_off        
       Rouge_tg          
       goto   selxec
    sel2:                
       Vert_off          
       Rouge_on
       goto   selxec
    sel3:                
       Vert_on          
       Rouge_on
       goto   selxec
    sel4:                
       Rouge_off          
       Vert_on
       goto   selxec
    sel5:                
       btfss  sGPIO,GP1  
        goto  a1         
       btfss  sGPIO,GP2  
        goto  lamp
       goto   adj
    a1 btfsc  sGPIO, GP2
        goto  lamp
    adj:                 
       Rouge_on
       Vert_off
    
    lamp:
       Vert_tg          
       Rouge_tg
    
    
    selxec EXEC          
    
       call   Delay025s  
    
       goto   ml         
    
    
    ReadAD  bsf         ADCON0, 1    ; start conversion
    loopADC
            nop
            btfsc       ADCON0, 1    ; wait for ‘DONE’
            goto        loopADC
            retlw       0
    
    ; Delay = 0.25 seconds
    ; Clock frequency = 4 MHz
    ; 0.25 seconds = 250000 cycles
    Delay025s              ;249993 cycles
            movlw   0x4E
            movwf   d1
            movlw   0xC4
            movwf   d2
    Delay025s_0
            decfsz  d1, f
            goto    $+2
            decfsz  d2, f
            goto    Delay025s_0
            goto    $+1     ;3 cycles
            nop
            retlw   0       ;4 cycles (including call)
    
     END


    Code:
    ----------------------------------------------------------------------
    Debug build of project `E:\job\pic\test\test.mcp' started.
    Language tool versions: MPASMWIN.exe v5.51, mplink.exe v4.49, mplib.exe v4.49
    Preprocessor symbol `__DEBUG' is defined.
    Sun Dec 10 10:34:40 2017
    ----------------------------------------------------------------------
    Clean: Deleting intermediary and output files.
    Clean: Done.
    Executing: "C:\Program Files\Microchip\MPASM Suite\MPASMWIN.exe" /q /p10F222 "test.asm" /l"test.lst" /e"test.err" /d__DEBUG=1
    Executing: "C:\Program Files\Microchip\MPASM Suite\mplink.exe" /p10F222 "test.o" /u_DEBUG /z__MPLAB_BUILD=1 /z__MPLAB_DEBUG=1 /o"test.cof" /M"test.map" /W /x
    MPLINK 4.49, Linker
    Device Database Version 1.14
    Copyright (c) 1998-2011 Microchip Technology Inc.
    Errors    : 0
    
    Loaded E:\job\pic\test\test.cof.
    ----------------------------------------------------------------------
    Debug build of project `E:\job\pic\test\test.mcp' succeeded.
    Language tool versions: MPASMWIN.exe v5.51, mplink.exe v4.49, mplib.exe v4.49
    Preprocessor symbol `__DEBUG' is defined.
    Sun Dec 10 10:34:41 2017
    ----------------------------------------------------------------------
    BUILD SUCCEEDED
    A+, pat

  4. #4
    invitecaa117b8

    Re : Vérification débutant prog LED

    Bonjour freepicbasic,

    Merci pour tes réponses. Je ne comprends pas pourquoi rajouter :
    Code:
    #define _CP_OFF 8
    #define _MCLRE_ON 16
    #define _IOFSCS_4MHZ 0
    #define _MCPU_ON 0
    #define _WDT_OFF 0
    
    GPIO equ 6
    GP1 equ 2
    GP2 equ 4
    ADCON0 equ 7 
    ADRES equ 8
    OSCCAL equ 5
    Je pense que les lignes ci-dessous suffisent à étalonner l'oscillateur ?
    Code:
    __config  _CP_OFF & _MCLRE_ON & _IOFSCS_4MHZ & _MCPU_ON  & _WDT_OFF
    Des étapes doivent m'échappent dans MPlab. Si je reprends le code et créé un projet et un fichier assembleur, je pensais que cela suffisait à compiler.
    De nombreuses erreurs se créent. Dois je copier des fichiers dans le projet (p10f220.inc).

    Que fais-tu pour compiler sans créer d'erreurs (faut il brancher pickit, ...).

    Merci.

  5. A voir en vidéo sur Futura
  6. #5
    freepicbasic

    Re : Vérification débutant prog LED

    Les defines des configs bits devraient se trouver dans le .inc
    Mais ils pourraient aussi avoir un nom différent pour ça il faut regarder le .inc

    ça peut compiler sans le pickit. C'est seulement su on veut le programmer réellement.

    pour _config il prend la valeur en chiffre résultant de l'opération avec les and ( le & )
    Il faut consulter le datasheet car le ON n'est pas forcément un 1 dans ce cas on met un 0
    On prend 2 exposant du bit par exemple le bit 3 c est 2 exposant 3 soit 3 ou 2x2x2 , le 2 exposant 0 c est 1

    Il faut seulement crée un projet , faire un add du fichier , déclarer le type de device.
    et faire "build all" pour compiler.
    A+, pat

  7. #6
    mp3dux

    Re : Vérification débutant prog LED

    bonjour ça sert à quoi de programmer en assembleur un programme courant ? Debbuger un code oui mais concevoir un code normal (par exemple non critique)...
    Si nous faisions tout ce que nous sommes capables de faire, nous en serions abasourdis. T.E

  8. #7
    invitecaa117b8

    Re : Vérification débutant prog LED

    Bonjour mp3dux,

    Je ne suis pas certain de saisir tout le sens de ta question. Etant débutant en programmation sur PIC, j'ai pensé bon de commencer en assembleur puisque j'avais différent tuto et code existants à ma disposition...

Discussions similaires

  1. LabView (débutant) - Prog d'un module SPI (NI8452)
    Par invite638d5238 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 09/04/2014, 08h35
  2. Debutant, debutant en HITEC C compiler + 18f4550
    Par biduleur34 dans le forum Électronique
    Réponses: 1
    Dernier message: 28/05/2012, 17h06
  3. Réponses: 4
    Dernier message: 12/03/2011, 15h13
  4. Aide verification de Circuit Imprime [debutant]
    Par invite7f7b988b dans le forum Électronique
    Réponses: 4
    Dernier message: 17/10/2009, 11h10
  5. Vérification d'un circuit [débutant]
    Par invite4af455c2 dans le forum Électronique
    Réponses: 11
    Dernier message: 01/06/2006, 17h19
Dans la rubrique Tech de Futura, découvrez nos comparatifs produits sur l'informatique et les technologies : imprimantes laser couleur, casques audio, chaises gamer...