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
Confirmé
Confirmé
Messages : 681
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 : 601
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 : 601
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
Confirmé
Confirmé
Messages : 681
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 : 601
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
Confirmé
Confirmé
Messages : 681
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


Retourner vers « Langage ASM »

Qui est en ligne

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