Bienvenue aux nouveaux arrivants sur FantasPic !

- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.

--- L’équipe FantasPic ---
Forum général sur l'Assembleur !

Modérateur : mazertoc

Premier programme ASM avec pic-as.exe
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#21 Message par satinas » dim. 21 févr. 2021 09:57 lien vers la Data-Sheet : Cliquez ici

Code : Tout sélectionner

OSCF      equ   8000000           ; Fosc = 8MHz
FCY       equ   (OSCF/4)          ; Fcy  = 2MHz
TCY       equ   (1000000000/FCY)  ; Tcy  = 500ns
VAL_BRG   equ   ((FCY/4/38400)-1) ; Fbr  = 38400 bauds

Je m'amuse à enlever les parenthèses, c'est pas un bon exemple à suivre :)
Pour les lignes equ, les parenthèses sont moins importantes que pour les #define, mais dans le doute, il vaut mieux les mettre.

Il y a l'instruction btg pour la led.
La banque 0 démarre en 0x0000, pas en 0x020.
Les bits de registres sont définis dans le fichier header.

Code : Tout sélectionner

    bsf     SCS1                  ; SCS = 10 = oscillateur interne
    bcf     SCS0

    bcf     LATC7
    bsf     TRISC7
    btfss   RC7
 

je suppose que tu obtiens aussi des tas de warnings sur les banques mémoire, il faut utiliser à priori la macro BANKMASK() et indiquer le type d'accès A/B pour ACCESS/BANKED, je trouve ça très lourd. Cela figure dans le fichier header, exemple :
#define RC7 BANKMASK(PORTC), 7, a

Le guide d'utilisation, c'est un sacré morceau à lire. Je n'ai pas non plus lu le guide de migration.
J'ai parcouru celui-ci "Assembler User's Guide for Embedded Engineers"
https://www.google.com/url?sa=t&rct=j&q ... 0UdvxSaqSQ

Premier programme ASM avec pic-as.exe
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#22 Message par JMarc » dim. 21 févr. 2021 15:20 lien vers la Data-Sheet : Cliquez ici

bien vu pour les adresses mémoires, chaque fois je me fais avoir
effectivement si je rajoute ,a pour signaler access, j'ai moins de message d'erreur. je vais regarder cette histoire de macro

mon problème pour l'instant c'est les interruptions, marche pas. j'ai modifié l'adresse dans link en 08H ( -Pint_vect=08h) mais rien
j'essai de comprendre la doc. pour l'instant j'essai sur TMR1

Premier programme ASM avec pic-as.exe
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#23 Message par JMarc » dim. 21 févr. 2021 16:30 lien vers la Data-Sheet : Cliquez ici

Ca avance, j'arrive a entrer dans les interruptions :-D

si je fais
bcf PIR1,TMR1IF ;RAZ du drapeau de TMR1

cela ne fonctionne pas je dois faire
bcf PIR1,0 ;RAZ du drapeau de TMR1




Code : Tout sélectionner

 psect int_vect, class=codedelta=1
 
    btfss   PIR1
,0  ;TMR1IF        test timer1 en cours
    
goto    inter1           non alors test suivant
 
    movlw   45        
;45
    movwf   TMR1H
    movlw   207        
;207
    movwf   TMR1L
    
    bcf        PIR1
,;TMR1IF      ;RAZ du drapeau de TMR1
    
    incf    Temp
,F         à 10 saut
    movlw   0x05        
0x0A
    subwf   Temp
,w
    btfss   STATUS
,;Z
    bra     inter1
    clrf    Temp
    btg        LATA
,2
        
 inter1
:   
    
        
retfie f    shadow registers copied
           
retfie
    

Premier programme ASM avec pic-as.exe
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#24 Message par satinas » dim. 21 févr. 2021 17:19 lien vers la Data-Sheet : Cliquez ici

dans fichier C:\Program Files\Microchip\xc8\pic\include\proc\18f4525.inc
#define TMR1IF BANKMASK(PIR1), 0, a
donc

Code : Tout sélectionner

btfss   TMR1IF
bcf     TMR1IF
btfss   ZERO
btg     LATA2

Dans Tools/Options/Editor/Formatting coche "Expands Tabs To Spaces"

Premier programme ASM avec pic-as.exe
JMarc
Confirmé
Confirmé
Messages : 605
Enregistré en : août 2016
Localisation : Dans le Sud...

#25 Message par JMarc » dim. 21 févr. 2021 17:58 lien vers la Data-Sheet : Cliquez ici

merci beaucoup Satinas

bon je vais encore chercher car meme en mettant en include le fichier 18F4525.inc, il doit me manquer un petit paramètre mais c'est pas grave

pour ceux qui veulent débuter voici mon fichier :sifflotte:

Code : Tout sélectionner

.;  essai pic as
;  18F4525
;  JMP fevrier 2021 
    
; - quartz interne 8MHz
; - led clignotante par Timer1 sur RA2


#include <xc.inc>
;#include    </Applications/microchip/xc8/v2.20/pic/include/proc/pic18f4525.inc>
;------------------------------------------------------------------------------
;
 config 
;------------------------------------------------------------------------------    

 
;CONFIG    OSC = HS     ;INTIO67 ;HS        ; Oscillateur principal (LP,XT,HS,RC,EC,ECIO,HSPLL,RCIO)
 config OSC = INTIO67   ; intosc 8MHz     voir config dans init
 CONFIG PWRT 
= OFF        ; Délai au démarrage (ON/OFF)
 CONFIG WDT = OFF        ; Mise en service watchdog (ON/OFF)
 CONFIG WDTPS = 128        ; Postdiviseur du watchdog (1,2,4,8,16,32,64,128)
 CONFIG LVP = OFF        ; Programmation basse tension autorisée (ON/OFF)
 CONFIG DEBUG = OFF        ; Debugger hors service (laisser sur OFF)
 CONFIG CP0 = OFF        ; code protection sur block 0 (ON/OFF)
 CONFIG CP1 = OFF        ; code protection sur block 1 (ON/OFF)
 CONFIG CP2 = OFF        ; code protection sur block 2 (ON/OFF)
 CONFIG CPB = OFF        ; code protection sur bootblock  (ON/OFF)
 CONFIG CPD = OFF        ; Code protection sur eeprom (ON/OFF)
 CONFIG WRT0 = OFF        ; Protection écriture block 0 (ON/OFF)
 CONFIG WRT1 = OFF        ; Protection écriture block 1 (ON/OFF)
 CONFIG WRT2 = OFF        ; Protection écriture block 2 (ON/OFF)
 CONFIG WRTB = OFF        ; Protection écriture bootblock (ON/OFF)
 CONFIG WRTC = OFF        ; Protection écriture configurations (ON/OFF)
 CONFIG WRTD = OFF        ; Protection écriture zone eeprom (ON/OFF)
 CONFIG EBTR0 = OFF        ; protect. lecture de table block 0 (ON/OFF)
 CONFIG EBTR2 = OFF        ; protect. lecture de table block 2 (ON/OFF)
 CONFIG EBTRB = OFF        ; protect. lecture de table bootblock (ON/OFF)

;------------------------------------------------------------------------------
;
 data en ram
;------------------------------------------------------------------------------

psect udata_bank0
        
Temp
:        ds        1
    

;------------------------------------------------------------------------------
;
 reset
; ajouter au projet MpLabX custom linker option -> -Preset_vect=0h
;------------------------------------------------------------------------------
psect reset_vect, class=code, delta=1    
_reset
:     goto      init
  

;------------------------------------------------------------------------------
;
 interrupts
; ajouter au projet MpLabX custom linker option -> -Pint_vect=08h 
;------------------------------------------------------------------------------
 psect int_vect, class=code, delta=1
 
 bsf    LATA
,1
 
    btfss   PIR1
,0  ;TMR1IF        ; test timer1 en cours
    goto    inter1           
; non alors test suivant
 
    movlw   45        
;45
    movwf   TMR1H
    movlw   207        
;207
    movwf   TMR1L
    
    bcf        PIR1
,;TMR1IF      ;RAZ du drapeau de TMR1
    
    incf    Temp
,F         ; à 10 saut
    movlw   0x05        
; 0x0A
    subwf   Temp
,w
    btfss   STATUS
,;Z
    bra     inter1
    clrf    Temp
    btg        LATA
,2
        
 inter1
:   
    
    retfie f    
; shadow registers copied
    
; retfie
    
;------------------------------------------------------------------------------
init: 
    clrf    PORTA               
; effacement des ports
    clrf    PORTB
    clrf    PORTC
    clrf    PORTD

    clrf    TRISA               
; ports en sortie
    clrf    TRISB              
    clrf    TRISC            
    bsf     TRISC
,6        ; RC6 et RC7 en entrée
    bsf     TRISC
,7
    clrf    TRISD
    
    bcf     OSCCON
,0    ;SCS1 et 
    bsf     OSCCON
,1    ;SCS0 =10 = oscilateur interne
    bsf     OSCCON
,4    ;IRCF2:IRCF0 =111 = 8Mhz
    bsf     OSCCON
,5
    bsf     OSCCON
,6
    
    
;************************************************************************ 

    movlw   45
    movwf   TMR1H
    movlw   207
    movwf   TMR1L


    bsf    INTCON
,7    ;GIE
    bsf    INTCON
,6    ;PEIE
     
    bsf    T1CON
,6    ;T1RUN
    bsf    T1CON
,5    ;T1CKPS1
    bsf    T1CON
,4    ;T1CKPS0
    bsf    T1CON
,0    ;TMR1ON
     
    bsf     PIE1
,;TMR1IE
     
;================================================================     
 Boucle_principale
:
    nop
    nop
    
;------------------------------------------------------------------------------
    goto      Boucle_principale        
    end       _reset

Premier programme ASM avec pic-as.exe
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#26 Message par satinas » dim. 21 févr. 2021 18:05 lien vers la Data-Sheet : Cliquez ici

T'as rien à inclure, c'est xc.inc qui fait tout le boulot, il va chercher le .inc du pic déclaré dans le projet.
Si l'instruction "bcf SCS0" ne marche pas , il y a effectivement un problème.

Bravo pour l'effort, j'espère qu'on pourra inhiber le warning sur les banques mémoire, parce que c'est bien pénible. Il est vrai que l'assembleur prenait des décisions, et ce n'est pas forcément la fonction première d'un assembleur.

Renomme ton fichier source en .S (majuscule)
En théorie cela permet de pouvoir utiliser la directive #include, pourtant chez moi cela marche avec un source en .asm

Premier programme ASM avec pic-as.exe
Tux678
Membre
Membre
Messages : 5
Enregistré en : avril 2022

#27 Message par Tux678 » sam. 22 oct. 2022 12:21 lien vers la Data-Sheet : Cliquez ici

Bonjour à tous,
Je faisais des recherches sur le net à propos de PIC-AS et ce post s'affiche en premier résultat Merci !

satinas a écrit :Source du message On pourra sans doute assembler avec Pic-as hors MpLabX, reste à trouver comment.


C'est possible (tout comme avec XC8 et MPASM) mais on trouve peu d'infos à ce sujet (qui m'intéresse, vu que je n'utilise pas MPLABX).

Sur Linux, l'éxécutable pic-as se trouve dans /opt/microchip/xc8/v2.40/pic-as/bin/ et j'ai pu assembler un programme à l'aide de la commande

Code : Tout sélectionner

pic-as fichier_source.-mcpu=16F628A

Il faut impérativement définir le modèle de PIC dans la commande, même si le code contient les directives list et/ou processor

On peut rajouter des options, dont :
-Wa,-a génère le fichier de listing (.lst)
-msummary=+psect affiche une carte mémoire des PSECT dans la console
on peut aussi imposer une adresse pour des psect avec -Wl,-etiquette=0h

Et voila :

Code : Tout sélectionner

Psect Usage Map:

 Psect      | Contents             | Memory Range  | Size
------------|----------------------|---------------|------------
 reset_vect |                      | 0000h - 0000h |  1 word   
 isr_vect   
|                      | 0004h - 0011h |  E words  
 code       
| Initialized ROM data | 0012h - 004Ch | 3B words  
------------|----------------------|---------------|------------
 udata_shr  |                      | 0070h - 0072h |  3 bytes  
            
|                      |               |            
 udata_bank 
|                      | 0020h - 0022h |  3 bytes  
------------|----------------------|---------------|------------
 config     |                      | 2007h - 2007h |  1 word   
------------|----------------------|---------------|------------


Memory Summary:
    Program space        used    4Ah (    74) of   800h words   (  3.6%)
    Data space           used     6h (     6) of    E0h bytes   (  2.7%)
    EEPROM space         used     0h (     0) of    80h bytes   (  0.0%)
    Configuration bits   used     1h (     1) of     1h word    (100.0%)
    ID Location space    used     0h (     0) of     4h bytes   (  0.0%) 

Premier programme ASM avec pic-as.exe
satinas
Expert
Expert
Messages : 1225
Enregistré en : novembre 2015

#28 Message par satinas » dim. 23 oct. 2022 06:41 lien vers la Data-Sheet : Cliquez ici

Bonjour,
Merci pour cette recherche. En ce qui concerne la documentation, il y a quand même un manuel pdf dans le dossier docs de xc8. Ceux qui veulent profiter des nouveaux pics devront y jeter un coup d'oeil.
Bon dimanche


Retourner vers « Langage ASM »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 42 invités