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
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Et hop, encore à genoux dans la poussière,
Juste un petit coucou pour dire que tout fonctionne au poil... sauf la conversion ascii. Dans le programme je convertis de l'ascii vers le décimal trop simplement, je n'ai pas pensé assez profondément. Il faut que je revoie çà de près.
Juste un petit coucou pour dire que tout fonctionne au poil... sauf la conversion ascii. Dans le programme je convertis de l'ascii vers le décimal trop simplement, je n'ai pas pensé assez profondément. Il faut que je revoie çà de près.
Soft de commande CNC en asm
Bonjour F6FCO, et tout le forum,
Je te donne un peu de mes nouvelles, pour te remonté le moral, car ça doit pas être marrant pour toi.
J'ai pas mal bossé, mais pas dans la même direction que toi, j'ai étudié le datasheet du Pic18f26K22, ça m'a pris
pas mal de temps, mais j'en suis récompensé.
Et j'ai appris pas mal de chose qui est similaire au Pic18F4525, en autre pour activé les résistances sur le PORTB il faut
mettre le Bit 7 du registre INTCON2 à 0 (voir la page 112), elles sont automatiquement mis au tirage +, si il son configuré
comme entrée.(si j'ai bien compris l'anglais)
Sur le Pic18f26K22 il faut mettre le Bit 7 du registre INTCON2 à 0, et configuré le registre WPUB pour
chaque sortie des pattes du PORTB quand veut mettre au tirage +
Je savais quand pouvais le faire bon c'est vrai ça va rien changer pour toi, car ton circuit est déjà fait.
Tu fais une soustraction de -48, sur chaque caractère ASCII, ça te donnera leur valeur décimal.
Après il faut les classer dans l'ordre des dix-mille, mille, centaine, dizaine, unité.....
Programme assez sympa à faire, avis au amateur.........
Quand on est croyant, c'est normal de faire sa prière
Bon courage F6FCO, tout le forum pense à toi
A+
Je te donne un peu de mes nouvelles, pour te remonté le moral, car ça doit pas être marrant pour toi.
J'ai pas mal bossé, mais pas dans la même direction que toi, j'ai étudié le datasheet du Pic18f26K22, ça m'a pris
pas mal de temps, mais j'en suis récompensé.
Et j'ai appris pas mal de chose qui est similaire au Pic18F4525, en autre pour activé les résistances sur le PORTB il faut
mettre le Bit 7 du registre INTCON2 à 0 (voir la page 112), elles sont automatiquement mis au tirage +, si il son configuré
comme entrée.(si j'ai bien compris l'anglais)
Sur le Pic18f26K22 il faut mettre le Bit 7 du registre INTCON2 à 0, et configuré le registre WPUB pour
chaque sortie des pattes du PORTB quand veut mettre au tirage +
Je savais quand pouvais le faire bon c'est vrai ça va rien changer pour toi, car ton circuit est déjà fait.
F6FCO a écrit :Source du message sauf la conversion ascii
Tu fais une soustraction de -48, sur chaque caractère ASCII, ça te donnera leur valeur décimal.
Après il faut les classer dans l'ordre des dix-mille, mille, centaine, dizaine, unité.....
Programme assez sympa à faire, avis au amateur.........
F6FCO a écrit :Source du message Et hop, encore à genoux dans la poussière
Quand on est croyant, c'est normal de faire sa prière
Bon courage F6FCO, tout le forum pense à toi
A+
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonjour tous,
Pas si simple la conversion ASCII/hexa, dans mon cas il ne suffit pas d'ôter la différence ascii/décimal, si tu vas voir sur la page d'4L1C3 j'explique un peu le pbm. L'UART nous les transfère à raison d'un chiffre par octet, enlever la valeur 0x30 fonctionne jusqu'au chiffre 9, au-dessus on se retrouve avec des valeurs sur plusieurs octets.
A partir de 10 ASCII c'est sur deux octets (0x31 0x30), si tu soustrais 0x30 à chaque terme tu te retrouve avec 01 00, ce qui ne correspond plus à rien.
100 ASCII est sur 3 octets (0x31 0x30 0x30)
1000 ASCII 4 octets (0x31 0x30 0x30 0x30)
9999 ASCII (0x39 0x39 0x39 0x39) est codé sur 4 octets alors que la vraie valeur hexa de d'9999' est 0x270F, seulement sur 2 octets.
Problème très intéressant.
J'ai trouvé deux solutions, calculer et re-compacter par programme mais c'est long et lourd, ou bien utiliser une table pré-calculée (36 valeurs pour aller jusqu'à 9999, ce qui me suffit) , on va chercher les valeurs suivant le poids et on additionne le tout. Solution qui me plait bien mais je ne sais pas comment mettre des données en data sur les 18F.
La méthode avec PCL marche toujours ou il y a mieux ?
Si qqun peut m'éclairer
Pas si simple la conversion ASCII/hexa, dans mon cas il ne suffit pas d'ôter la différence ascii/décimal, si tu vas voir sur la page d'4L1C3 j'explique un peu le pbm. L'UART nous les transfère à raison d'un chiffre par octet, enlever la valeur 0x30 fonctionne jusqu'au chiffre 9, au-dessus on se retrouve avec des valeurs sur plusieurs octets.
A partir de 10 ASCII c'est sur deux octets (0x31 0x30), si tu soustrais 0x30 à chaque terme tu te retrouve avec 01 00, ce qui ne correspond plus à rien.
100 ASCII est sur 3 octets (0x31 0x30 0x30)
1000 ASCII 4 octets (0x31 0x30 0x30 0x30)
9999 ASCII (0x39 0x39 0x39 0x39) est codé sur 4 octets alors que la vraie valeur hexa de d'9999' est 0x270F, seulement sur 2 octets.
Problème très intéressant.
J'ai trouvé deux solutions, calculer et re-compacter par programme mais c'est long et lourd, ou bien utiliser une table pré-calculée (36 valeurs pour aller jusqu'à 9999, ce qui me suffit) , on va chercher les valeurs suivant le poids et on additionne le tout. Solution qui me plait bien mais je ne sais pas comment mettre des données en data sur les 18F.
La méthode avec PCL marche toujours ou il y a mieux ?
Si qqun peut m'éclairer
Soft de commande CNC en asm
Bonsoir F6FCO, et tout le forum,
Il y a trois solutions, l'eeprom, le tableau programme, ou une table, celle que tu as choisi.
Mais..... tu vas te retrouver avec un problème, car les Pic18F ont beaucoup d'avantages, mais aussi des désavantages.
Il compte par 2 ce qui fait 127 caractères que tu peux mettre dans une table vue qu'il te faut 36 octets, c'est bon pour toi.
Je vais te donner une méthode, il y a peut être mieux, voici un exemple :
Comme cette solution te plait bien, je te la laisse, pour faire une conversion on prends toujours 1 octet par 1 octet.
Je reviendrais dessus plus tard, ta méthode va fonctionner, c'est le principal .
A+
Il y a trois solutions, l'eeprom, le tableau programme, ou une table, celle que tu as choisi.
Mais..... tu vas te retrouver avec un problème, car les Pic18F ont beaucoup d'avantages, mais aussi des désavantages.
Il compte par 2 ce qui fait 127 caractères que tu peux mettre dans une table vue qu'il te faut 36 octets, c'est bon pour toi.
Je vais te donner une méthode, il y a peut être mieux, voici un exemple :
Code : Tout sélectionner
lire
movlw D'6'
movwf longueur
movlw D'0'
movwf emplacement
re_lire
movlw D'8' ; page 8, tableaux de 127 octets(2 * 127)
movwf PCLATH
movff emplacement,WREG ; "emplacement" est l'emplacement de la lettre
; qui est copier dans W
rcall dico ; on va chercher la valeur
movwf lettre ; au retour, W contient la donnée qui à été pris dans la table.
; sauvegardé W dans lettre
call traitement ; traiter la donnée récupéré
incf emplacement,F ; lettre suivante
decfsz longueur,F ; "longueur" est la longueur de la chaîne à traiter
bra re_lire ; <--- on continu la lecture
terminer
bra terminer ; <--- lecture terminer
traitement
; ici on traite les données reçu, donc à vous de voir
return
;***********************************************************************************************
ORG H'800'
dico
rlncf WREG,F
addwf PCL,F
dt D'152',D'38',D'25',D'1',D'178',D'56',D'87',D'95'
Comme cette solution te plait bien, je te la laisse, pour faire une conversion on prends toujours 1 octet par 1 octet.
Je reviendrais dessus plus tard, ta méthode va fonctionner, c'est le principal .
A+
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonsoir,
En relisant les dernières pages du sujet je viens de m'apercevoir que je n'avais pas répondu à Satinas, excuses-moi. Je ne suis pas encore familiarisé avec les Timers parce que je n'ai pas encore eu l'occasion de les utiliser. Mais par contre ma gestion de l'UART fonctionne très bien et je découpe bien mes trains de données que je peux exploiter. Pour l'instant je travaille sur une routine de conversion ascii/hexa.
Merci pour ton fichier Temps-X, je vais analyser çà dés que je serai rentré au chaud, j'ai déjà utilisé cette méthode sur les 16x mais avec 'db', tu me diras qu'elle est la différence entre 'db' et 'dt'.
Mais j'ai encore besoin de votre aide, je bloque pour la lecture de données de cette manière:
Programme tout simple qui devrait marcher si j'en crois Bigonoff (Adressage indirect pré-indexé, Part5, migration vers les 18F, page 27), sauf que çà me retourne le résultat de cette adresse mais en mémoire variables.
De tête FSR0 pointe sur 0x70 et au final je devrais avoir dans W la valeur contenue dans 0x70+4=0x74, c'est à dire 0xb. Mais malheureusement c'est la valeur qui se trouve en 0x74 de la mémoire variables qui se retrouve dans W et non la valeur en mémoire programme.
Surement un registre à régler qq part, çà fait 2 jours que je cherche et rien.
En relisant les dernières pages du sujet je viens de m'apercevoir que je n'avais pas répondu à Satinas, excuses-moi. Je ne suis pas encore familiarisé avec les Timers parce que je n'ai pas encore eu l'occasion de les utiliser. Mais par contre ma gestion de l'UART fonctionne très bien et je découpe bien mes trains de données que je peux exploiter. Pour l'instant je travaille sur une routine de conversion ascii/hexa.
Merci pour ton fichier Temps-X, je vais analyser çà dés que je serai rentré au chaud, j'ai déjà utilisé cette méthode sur les 16x mais avec 'db', tu me diras qu'elle est la différence entre 'db' et 'dt'.
Mais j'ai encore besoin de votre aide, je bloque pour la lecture de données de cette manière:
Code : Tout sélectionner
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=18f4525 ; processeur utilisé
#include <p18f4525.inc> ; Définitions des constantes
;---------------------------------------------------------------------------------------------
CONFIG OSC = XT ; Oscillateur ext 4MHz
CONFIG IESO = OFF ; Oscillateur secondaire refusé (ON/OFF)
CONFIG PWRT = ON ; Délai au démarrage (ON/OFF)
CONFIG BOREN = OFF ; Reset si chute de tension (ON/OFF)
CONFIG BORV = 0 ; Tension de reset en 1/10ème Volts
CONFIG WDT = OFF ; Mise hors service du watchdog (ON/OFF)
CONFIG PBADEN = OFF ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
CONFIG LPT1OSC = OFF ; Timer1 configuré pour un fonctionnement plus puissant
CONFIG MCLRE = ON ; Mclr
CONFIG STVREN = ON ; Reset sur débordement de pile (ON/OFF)
CONFIG LVP = OFF ; Programmation basse tension autorisée (ON/OFF)
CONFIG XINST = OFF ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
CONFIG DEBUG = ON ; Debugger hors service
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 ; Protection lecture de table block 0 (ON/OFF)
CONFIG EBTR1 = OFF ; Protection lecture de table block 1 (ON/OFF)
CONFIG EBTR2 = OFF ; Protection lecture de table block 2 (ON/OFF)
CONFIG EBTRB = OFF ; Protection lecture de table bootblock (ON/OFF)
;-------------------------------------- assignations ------------------------------------------
;------------------------------ déclaration des variables -------------------------------------
CBLOCK H'80'
coordX
ptr_train_RCIF
Reg_1
Reg_2
Reg_3
W_TEMP
STATUS_TEMP
BSR_TEMP
ENDC
;--------------------------------- adresse de depart après reset -----------------------------
ORG H'0'
bra init
;--------------------------------------- interruptions ---------------------------------------
ORG H'08'
interrupt btfss PIR1,RCIF ; registre plein ? si oui on saute à réception
bra int1 ; sinon on sort de l'interrupt
reception
nop
movff RCREG,POSTINC0 ; lecture de RCREG et mise en mem
incf ptr_train_RCIF ; on a reçu qq chose donc on incrémente le compteur de trains
btfss RCSTA,OERR ; test d'une erreur d'overrun
goto int1
; traitement de l'erreur d'overrun
bcf RCSTA,CREN ; on efface le bit OERR
bsf RCSTA,CREN ; on relance la réception
int1 ; traitement des autres interruptions
retfie
;----------------------------------- Initialisations -------------------------------------------------
init
bcf ADCON0,ADON ; convertisseur a/n dévalidé
movlw 0xFF
movwf ADCON1,PCFG3 ; on passe tout en digital
movlw b'11000000' ; INTCON (activation des int GIE/GIEH=1, PEIE/GIEL=1)
movwf INTCON
movlw b'10000000' ; RCON (priorités int activées IPEN=1,)
movwf RCON
movlw b'00100000' ; IPR1 (Rx en haute priorité RCIP=1)
movwf IPR1
movlw b'00100000' ; PIE1 (int RX activée RCIE=1)
movwf PIE1
movlw b'00100100' ; TXSTA (Emission USART activée TXEN=1, et mode asynchrone haute vitesse BRGH=1)
movwf TXSTA
movlw b'10010000' ; RCSTA (Utilisation du port série activée SPEN=1, Réception USART activée CREN=1)
movwf RCSTA
movlw d'25' ; 9600bauds avec sync=O, brgh=1, brg16=0, xtal=4Mhz
movwf SPBRG
bcf BAUDCON,BRG16 ; réglé à 8bits
movlw B'11111111'
movwf TRISA
movlw B'00000111'
movwf TRISB
movlw B'11001100'
movwf TRISC
movlw B'10000011'
movwf TRISD
movlw B'10000011'
movwf TRISE
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
movlw 4
movwf coordX
; -------------------------------------- Programme principal --------------------------------------
main
lfsr FSR0,datas
movf coordX,w
movf PLUSW0,w
bra main
datas db 0x0a,0x0b,0x1a,0x1b,0x2a,0x2b,0x3a,0x3b,0x4a,0x4b,0x5a,0x5b,0x6a,0x6b,0x7a,0x7b,0x8a,0x8b,0x9a,0x9b ;
END
Programme tout simple qui devrait marcher si j'en crois Bigonoff (Adressage indirect pré-indexé, Part5, migration vers les 18F, page 27), sauf que çà me retourne le résultat de cette adresse mais en mémoire variables.
De tête FSR0 pointe sur 0x70 et au final je devrais avoir dans W la valeur contenue dans 0x70+4=0x74, c'est à dire 0xb. Mais malheureusement c'est la valeur qui se trouve en 0x74 de la mémoire variables qui se retrouve dans W et non la valeur en mémoire programme.
Surement un registre à régler qq part, çà fait 2 jours que je cherche et rien.
Soft de commande CNC en asm
Bonjour F6FCO
tu as un outils exprès pour la mémoire programme et eeprom. tu peux tout lire et même écrire avec le 18F
tu as un outils exprès pour la mémoire programme et eeprom. tu peux tout lire et même écrire avec le 18F
Code : Tout sélectionner
main
movlw High datas
movwf TBLPTRH ; adresse poid fort de la memoire a lire
movlw Low datas
movwf TBLPTRL ; adresse poid faible a lire
boucle
tblrd*+ ; lecture de l'octet en memoire
movf TABLAT,w ; transfert de l'octet dans w
bra boucle
bra main
Soft de commande CNC en asm
et la version complete si d'autre personne veulent s'amuser
Code : Tout sélectionner
Errorlevel-302 ; Supprime le message "Ensure that bank bits are correct"
list p=18f4525 ; processeur utilisé
#include <p18f4525.inc> ; Définitions des constantes
;---------------------------------------------------------------------------------------------
CONFIG OSC = XT ; Oscillateur ext 4MHz
CONFIG IESO = OFF ; Oscillateur secondaire refusé (ON/OFF)
CONFIG PWRT = ON ; Délai au démarrage (ON/OFF)
CONFIG BOREN = OFF ; Reset si chute de tension (ON/OFF)
CONFIG BORV = 0 ; Tension de reset en 1/10ème Volts
CONFIG WDT = OFF ; Mise hors service du watchdog (ON/OFF)
CONFIG PBADEN = OFF ; PORTB<4:0> les broches sont configurées comme E/S numériques lors de la réinitialisation
CONFIG LPT1OSC = OFF ; Timer1 configuré pour un fonctionnement plus puissant
CONFIG MCLRE = ON ; Mclr
CONFIG STVREN = ON ; Reset sur débordement de pile (ON/OFF)
CONFIG LVP = OFF ; Programmation basse tension autorisée (ON/OFF)
CONFIG XINST = OFF ; L'extension du jeu d'instructions et le mode d'adressage indexé sont désactivés(mode hérité)
CONFIG DEBUG = ON ; Debugger hors service
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 ; Protection lecture de table block 0 (ON/OFF)
CONFIG EBTR1 = OFF ; Protection lecture de table block 1 (ON/OFF)
CONFIG EBTR2 = OFF ; Protection lecture de table block 2 (ON/OFF)
CONFIG EBTRB = OFF ; Protection lecture de table bootblock (ON/OFF)
;-------------------------------------- assignations ------------------------------------------
;------------------------------ déclaration des variables -------------------------------------
CBLOCK H'80'
coordX
ptr_train_RCIF
Reg_1
Reg_2
Reg_3
W_TEMP
STATUS_TEMP
BSR_TEMP
compteur
ENDC
;--------------------------------- adresse de depart après reset -----------------------------
ORG H'0'
bra init
;--------------------------------------- interruptions ---------------------------------------
ORG H'08'
interrupt btfss PIR1,RCIF ; registre plein ? si oui on saute à réception
bra int1 ; sinon on sort de l'interrupt
reception
nop
movff RCREG,POSTINC0 ; lecture de RCREG et mise en mem
incf ptr_train_RCIF ; on a reçu qq chose donc on incrémente le compteur de trains
btfss RCSTA,OERR ; test d'une erreur d'overrun
goto int1
; traitement de l'erreur d'overrun
bcf RCSTA,CREN ; on efface le bit OERR
bsf RCSTA,CREN ; on relance la réception
int1 ; traitement des autres interruptions
retfie
;----------------------------------- Initialisations -------------------------------------------------
init
bcf ADCON0,ADON ; convertisseur a/n dévalidé
movlw 0xFF
movwf ADCON1,PCFG3 ; on passe tout en digital
movlw b'11000000' ; INTCON (activation des int GIE/GIEH=1, PEIE/GIEL=1)
movwf INTCON
movlw b'10000000' ; RCON (priorités int activées IPEN=1,)
movwf RCON
movlw b'00100000' ; IPR1 (Rx en haute priorité RCIP=1)
movwf IPR1
movlw b'00100000' ; PIE1 (int RX activée RCIE=1)
movwf PIE1
movlw b'00100100' ; TXSTA (Emission USART activée TXEN=1, et mode asynchrone haute vitesse BRGH=1)
movwf TXSTA
movlw b'10010000' ; RCSTA (Utilisation du port série activée SPEN=1, Réception USART activée CREN=1)
movwf RCSTA
movlw d'25' ; 9600bauds avec sync=O, brgh=1, brg16=0, xtal=4Mhz
movwf SPBRG
bcf BAUDCON,BRG16 ; réglé à 8bits
movlw B'11111111'
movwf TRISA
movlw B'00000111'
movwf TRISB
movlw B'11001100'
movwf TRISC
movlw B'10000011'
movwf TRISD
movlw B'10000011'
movwf TRISE
clrf PORTA
clrf PORTB
clrf PORTC
clrf PORTD
clrf PORTE
; -------------------------------------- Programme principal --------------------------------------
main
clrf compteur
movlw High datas
movwf TBLPTRH ; adresse poid fort de la memoire a lire
movlw Low datas
movwf TBLPTRL ; adresse poid faible a lire
movlw 0x02
addwf TBLPTRL ; pour avoir le bon départ de la chaine
boucle
tblrd*+ ; lecture de l'octet en memoire
movf TABLAT,w ; transfert de l'octet dans w
; traitement de la donnée de W
incf compteur
movlw D'18' ;on test la longueur de la chaine
subwf compteur,W
btfss STATUS,Z
bra boucle
clrf compteur
bra main
datas db 0x0a,0x0b,0x1a,0x1b,0x2a,0x2b,0x3a,0x3b,0x4a,0x4b,0x5a,0x5b,0x6a,0x6b,0x7a,0x7b,0x8a,0x8b,0x9a,0x9b ;
END
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Bonsoir,
Merci JMarc, j'avais bien vu ces instructions et je m'étais promis de les explorer un jour. Je vais le faire avant l'heure . Je teste et je vous tiens au courant, je vais peut-être pouvoir reprendre le soft d'4L1C3.
Mais j'aurai bien aimé percer le mystère de FSR0 et PLUSW0.
Pour Temps-X j'ai testé ton code et çà fonctionne bien, par contre je ne comprends pas pourquoi çà ne fonctionne plus chez moi dés que je remplace le dt par db.
Merci JMarc, j'avais bien vu ces instructions et je m'étais promis de les explorer un jour. Je vais le faire avant l'heure . Je teste et je vous tiens au courant, je vais peut-être pouvoir reprendre le soft d'4L1C3.
Mais j'aurai bien aimé percer le mystère de FSR0 et PLUSW0.
Pour Temps-X j'ai testé ton code et çà fonctionne bien, par contre je ne comprends pas pourquoi çà ne fonctionne plus chez moi dés que je remplace le dt par db.
Soft de commande CNC en asm
Bonsoir F6FCO, JMarc, et tout le forum,
______________________________________________________________________________________________________
dt :
Génère une série d'instructions RETLW (retour)
dt peut être remplacé par exemple :
retlw D'123'
retlw D'156'
retlw D'17'
retlw D'119'
______________________________________________________________________________________________________
db :
Utilisé pour une écriture dans la mémoire programme
______________________________________________________________________________________________________
de :
Permet d'écrire dans la mémoire EEPROM lors de la gravure du circuit
______________________________________________________________________________________________________
Dans l'exemple que je donne en post #204 je vais chercher
une valeur qui n'est pas modifiable, elles ne sont pas mis en mémoire au démarrage du Pic
Dans l'exemple de JMarc en post #207 c'est valeur sont modifiable
car elles sont mis en mémoire au démarrage du Pic
Dans tous les cas, et j'espère que je me trompe pas, les deux sont inscrite dans le pic, et il faut utilisé une technique différente
pour le cas choisi.
Qu'est ce que tu comprends pas dedans
: JMarc mets du pluriel sur les Datas
A+
______________________________________________________________________________________________________
dt :
Génère une série d'instructions RETLW (retour)
dt peut être remplacé par exemple :
retlw D'123'
retlw D'156'
retlw D'17'
retlw D'119'
______________________________________________________________________________________________________
db :
Utilisé pour une écriture dans la mémoire programme
______________________________________________________________________________________________________
de :
Permet d'écrire dans la mémoire EEPROM lors de la gravure du circuit
______________________________________________________________________________________________________
Dans l'exemple que je donne en post #204 je vais chercher
une valeur qui n'est pas modifiable, elles ne sont pas mis en mémoire au démarrage du Pic
Dans l'exemple de JMarc en post #207 c'est valeur sont modifiable
car elles sont mis en mémoire au démarrage du Pic
Dans tous les cas, et j'espère que je me trompe pas, les deux sont inscrite dans le pic, et il faut utilisé une technique différente
pour le cas choisi.
écrit par F6FCO :
Mais j'aurai bien aimé percer le mystère de FSR0 et PLUSW0.
Qu'est ce que tu comprends pas dedans
: JMarc mets du pluriel sur les Datas
A+
Soft de commande CNC en asm
- F6FCO
Expert- Messages : 1413
- Âge : 70
- Enregistré en : décembre 2017
- Localisation : Furtif je suis.
- Contact :
Un grand merci pour tes explication, çà fait longtemps que je posais la question.
C'est que j'explique précisemment plus haut (post #205), je pointe sur mes datas qui sont dans la mémoire programme mais çà me renvoie la valeur qui se trouve à la même adresse pointée mais située en mémoire variables, donc pas bon.
Temps-x a écrit :écrit par F6FCO :
Mais j'aurai bien aimé percer le mystère de FSR0 et PLUSW0.
Qu'est ce que tu comprends pas dedans
C'est que j'explique précisemment plus haut (post #205), je pointe sur mes datas qui sont dans la mémoire programme mais çà me renvoie la valeur qui se trouve à la même adresse pointée mais située en mémoire variables, donc pas bon.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 46 invités