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 ---
- 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 ---
Modérateur : mazertoc
Premier programme ASM avec pic-as.exe
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
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
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
Ca avance, j'arrive a entrer dans les interruptions
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
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=code, delta=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,0 ;TMR1IF ;RAZ du drapeau de TMR1
incf Temp,F ; à 10 saut
movlw 0x05 ; 0x0A
subwf Temp,w
btfss STATUS,2 ;Z
bra inter1
clrf Temp
btg LATA,2
inter1:
retfie f ; shadow registers copied
; retfie
;
Premier programme ASM avec pic-as.exe
dans fichier C:\Program Files\Microchip\xc8\pic\include\proc\18f4525.inc
#define TMR1IF BANKMASK(PIR1), 0, a
donc
Dans Tools/Options/Editor/Formatting coche "Expands Tabs To Spaces"
#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
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
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
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,0 ;TMR1IF ;RAZ du drapeau de TMR1
incf Temp,F ; à 10 saut
movlw 0x05 ; 0x0A
subwf Temp,w
btfss STATUS,2 ;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,0 ;TMR1IE
;================================================================
Boucle_principale:
nop
nop
;------------------------------------------------------------------------------
goto Boucle_principale
end _reset
Premier programme ASM avec pic-as.exe
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
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
Bonjour à tous,
Je faisais des recherches sur le net à propos de PIC-AS et ce post s'affiche en premier résultat
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
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 :
Je faisais des recherches sur le net à propos de PIC-AS et ce post s'affiche en premier résultat
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.S -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
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 122 invités