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
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour à tous,
Pour en revenir à ce pb de décalage, il s'agit manifestement du transfert d'un PC à l'autre.
Je m'explique:
Le PC sur lequel je travaille tous mes projets tourne sous XP SP3 avec Office 2007.
1) Il conserve l'avantage d'avoir du RS232 dont j'ai besoin pour certains outils
2) Windows XP supporte mes vieux logiciels qui ne sont plus compatibles avec Win10
3) Je maîtrise XP mieux que Win10
4) Ce PC est hors connexion Internet et n'utilise pas d'antivirus
5) Ce PC (HP) est du matériel PRO hyper fiable! en 8 ans juste un soucis d'écran (barre verticale à droite non réparable) c'est tout
Avec les PC modernes (portables) je suis continuellement emmerdé (3 PC en 4ans ) Sur le dernier acheté en mai (LENOVO ideapad 320) Ils ont changé 2X le DD
Bref! ce PC dernière génération qui me sert uniquement pour communiquer avec l’extérieure est équipé de Win10 et office 2013. Quand je récupère le fichier asm depuis mon XP, je passe par word et je remarque à chaque fois que le transfert ne tiens pas compte des tabulations. Idem quand je sélectionne un code depuis le forum jusqu'à mon MpLab sous XP.
Il s'agit donc bien du transfert fichier et non pas de MpLab.
Amicalement,
Pour en revenir à ce pb de décalage, il s'agit manifestement du transfert d'un PC à l'autre.
Je m'explique:
Le PC sur lequel je travaille tous mes projets tourne sous XP SP3 avec Office 2007.
1) Il conserve l'avantage d'avoir du RS232 dont j'ai besoin pour certains outils
2) Windows XP supporte mes vieux logiciels qui ne sont plus compatibles avec Win10
3) Je maîtrise XP mieux que Win10
4) Ce PC est hors connexion Internet et n'utilise pas d'antivirus
5) Ce PC (HP) est du matériel PRO hyper fiable! en 8 ans juste un soucis d'écran (barre verticale à droite non réparable) c'est tout
Avec les PC modernes (portables) je suis continuellement emmerdé (3 PC en 4ans ) Sur le dernier acheté en mai (LENOVO ideapad 320) Ils ont changé 2X le DD
Bref! ce PC dernière génération qui me sert uniquement pour communiquer avec l’extérieure est équipé de Win10 et office 2013. Quand je récupère le fichier asm depuis mon XP, je passe par word et je remarque à chaque fois que le transfert ne tiens pas compte des tabulations. Idem quand je sélectionne un code depuis le forum jusqu'à mon MpLab sous XP.
Il s'agit donc bien du transfert fichier et non pas de MpLab.
Amicalement,
Bonjour à toute l'équipe du forum
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
je pense qu'il vaudrait mieux utiliser un editeur de texte plutot qu'un Traitement de texte tel que Word,
qui rajoute ou enleve des infos au document original ..
j'utilise NOTEPAD++ qui tourne bien sous WIN10.
Nondediode a écrit :Quand je récupère le fichier asm depuis mon XP, je passe par word
je pense qu'il vaudrait mieux utiliser un editeur de texte plutot qu'un Traitement de texte tel que Word,
qui rajoute ou enleve des infos au document original ..
j'utilise NOTEPAD++ qui tourne bien sous WIN10.
Bonjour à toute l'équipe du forum
MpLab, il stocke en fonction de sa configuration. Par défaut les logiciels stockaient les tabulations avec le code ascii 9, parce qu'au début on avait pas des gigeots octets de ram et de disque.
Avec une tabulation réglée à 8, l'octet 9 remplace jusqu'à 8 caractères espace. Si l'on prend ce fichier, et on le met dans un logiciel ayant une tabulation réglée à 4, voir ci-dessus ce qui se passe.
Avec une tabulation réglée à 8, l'octet 9 remplace jusqu'à 8 caractères espace. Si l'on prend ce fichier, et on le met dans un logiciel ayant une tabulation réglée à 4, voir ci-dessus ce qui se passe.
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour J.Marc,
J'ai testé avec 0x10 (0) et avec 0x47 (g) et cela ne change rien.
D'après mon datasheet, on utiliserai les caractères de la CGROM code 0101 c'est OK pour tout le monde? où je me trompe
JMarc a écrit :Code : Tout sélectionner
DataAff_16 0x24, 0x1700 ; écrire en haut à gauche
0x24 est la commande d'apres ton data cheet de l'affichage du texte et 0x1700 la valeur d'ou il doit etre affiché. tu peux toujours essayer avec une valeur inférieure ou supérieure, c,est ce que j'essai de comprendre
J'ai testé avec 0x10 (0) et avec 0x47 (g) et cela ne change rien.
D'après mon datasheet, on utiliserai les caractères de la CGROM code 0101 c'est OK pour tout le monde? où je me trompe
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour paulfjujo,
Grand merci je l'ai téléchargé et installé sur les 2 PC
paulfjujo a écrit :bonjour,
je pense qu'il vaudrait mieux utiliser un editeur de texte plutot qu'un Traitement de texte tel que Word,
qui rajoute ou enleve des infos au document original ..
j'utilise NOTEPAD++ qui tourne bien sous WIN10.
Grand merci je l'ai téléchargé et installé sur les 2 PC
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bon j'ai trouvé le pb
Dans mon routage du PCB, la broche RDO du PIC arrive sur le bit D7 de l'afficheur alors qu'il devrait arriver sur le bit D0
J'ai utilisé ce routage parce qu'il m'évitait pas mal de via et le pire c'est que j'avais noté cette particularité pour ne pas l'oublié dans le prg
Bon entre tps j'ai eu l'hosto et ça m'a complètement fait oublier cette modif.
C'est en feuilletant mon carnet où je note les choses importantes que j'ai vu l'inversion
Est-il possible de corriger dans le prg?
Dans mon routage du PCB, la broche RDO du PIC arrive sur le bit D7 de l'afficheur alors qu'il devrait arriver sur le bit D0
J'ai utilisé ce routage parce qu'il m'évitait pas mal de via et le pire c'est que j'avais noté cette particularité pour ne pas l'oublié dans le prg
Bon entre tps j'ai eu l'hosto et ça m'a complètement fait oublier cette modif.
C'est en feuilletant mon carnet où je note les choses importantes que j'ai vu l'inversion
Est-il possible de corriger dans le prg?
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bon au final j'ai modifié avec des strapps volants
RDO du PIC va bien à DO de l'afficheur et ainsi de suite...
A présent tout est conforme pour le port D et l'afficheur
Mais cette modif que je pensait efficace n'apporte malheureusement rien de plus et pour avoir vérifié scrupuleusement toute la carte je confirme que tout est correct.
RDO du PIC va bien à DO de l'afficheur et ainsi de suite...
A présent tout est conforme pour le port D et l'afficheur
Mais cette modif que je pensait efficace n'apporte malheureusement rien de plus et pour avoir vérifié scrupuleusement toute la carte je confirme que tout est correct.
Bonjour à toute l'équipe du forum
Bonjour
Re essai avec celui là vu que les fils sont au bon endroit
Re essai avec celui là vu que les fils sont au bon endroit
Code : Tout sélectionner
;---------------------------------------------------------GESTION AFFICHEUR-----------------------------------------------------------------
; TITRE: Gestion d'un afficheur LCD graphique
; DATE: 10/11/2018
; AUTEUR: nondediode
; PIC UTILISE: PIC16F877
; Gestion PP845 version 2019
; le quartz est de 4MHz
; essai JMarc Version 1,01
;----------------------------------------------------Brochage du PIC sur la carte---------------------------------------------------------
;
; Port | Broche | E/S | Description
; RA0 | 02 | S | Relais "MUTE"
; RA1 | 03 | S | Relais "PHASE"
; RA2 | 04 | S | LED droite
; RA3 | 05 | S | LED gauche
; RA4 | 06 | S | Relais de cde HT gauche et droit
; RA5 | 07 | S | Relais statique gauche et droit
; RB0 | 33 | E | Inter "on / off"
; RB1 | 34 | E | Bouton poussoir "OK"
; RB2 | 35 | S | Data Write afficheur
; RB3 | 36 | S | Data Read afficheur
; RB4 | 37 | S | Chip Enable
; RB5 | 38 | S | C/D
; RB6 | 39 | S | Font Size Select
; RB7 | 40 | S | Reset
; RC0 | 15 | S | Adressage entrée audio bit A
; RC1 | 16 | S | Adressage entrée audio bit B
; RC2 | 17 | S | Adressage entrée audio bit C
; RC3 | 18 | S | Adressage entrée audio bit D
; RC4 | 23 | S | LEDs Rouge droit et gauche
; RC5 | 24 | E | Bouton poussoir "INPUT"
; RC6 | 25 | E | Bouton poussoir "PHASE"
; RC7 | 26 | E | Bouton poussoir "MUTE"
; RD0 | 19 | S | Sortie bit D7 du LCD
; RD1 | 20 | S | Sortie bit D6 du LCD
; RD2 | 21 | S | Sortie bit D5 du LCD
; RD3 | 22 | S | Sortie bit D4 du LCD
; RD4 | 27 | S | Sortie bit D3 du LCD
; RD5 | 28 | S | Sortie bit D2 du LCD
; RD6 | 29 | S | Sortie bit D1 du LCD
; RD7 | 30 | S | Sortie bit D0 du LCD
;--------------------------------------------------DIRECTIVE D'ASSEMBLAGE POUR MPLAB-------------------------------------------------------
list p=16f877
#include <p16f877.inc>
radix dec ; on travaille en décimal par défaut
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _HS_OSC
OPTIONVAL EQU B'00001111'
;-------------------------------------------------Definition de la RAM------------------------------------------------------
cblock 0x20
TEMP ;temp buffer
DATAL ;instruction donnée =0
DATAH ;instruction donnée =1
COMMAND ;instruction
TABLECOUNT ;tablecounter
endc
cblock 0x70
w_temp : 1 ; Sauvegarde registre W
status_temp : 1 ; sauvegarde registre STATUS
FSR_temp : 1 ; sauvegarde FSR (si indirect en interrupt)
PCLATH_temp : 1 ; sauvegarde PCLATH (si prog>2K)
Tempj : 1
delai1_LED_TEMOIN : 1
delai2_LED_TEMOIN : 1
temptmr0 : 1
temp1tmr1 : 1
STATUS_TEMP ;interruptcontextsave for STATUS
PCLATH_TEMP ;interruptcontextsave for PCLATH
COUNT1 ;delaycounter 1
COUNT2 ;delaycounter 2
COUNT3 ;delaycounter 3
DATA_EE_ADDR ;data EEPROM address buffer
DATA_EE_DATA ;data EEPROM data buffer
endc
;-------------------------------------------------Definition des constantes------------------------------------------------------
#DEFINE LED_TEMOIN PORTA,1
#DEFINE LED_TEMOIN2 PORTA,0
#define WRITE PORTB,2 ; GLCD writeenable/disable (active low)
#define READ PORTB,3 ; GLCD readenable/disable (active low)
#define CE PORTB,4 ; GLCD chip enable/disable (active low)
#define CD PORTB,5 ; GLCD command/data
#define FONT PORTB,6 ; GLCD font select (6x8 or 8x8)
#define RST PORTB,7 ; GLCD reset
#define D0 PORTD,RD0 ; GLCD data port bit 0
#define D1 PORTD,RD1 ; GLCD data port bit 1
#define D2 PORTD,RD2 ; GLCD data port bit 2
#define D3 PORTD,RD3 ; GLCD data port bit 3
#define D4 PORTD,RD4 ; GLCD data port bit 4
#define D5 PORTD,RD5 ; GLCD data port bit 5
#define D6 PORTD,RD6 ; GLCD data port bit 6
#define D7 PORTD,RD7 ; GLCD data port bit 7
;--------------------------------------------Definition des registres temporaires------------------------------------------------------
WR_EN EQU 2
WR_DIS EQU 7
RD_EN EQU 1
RD_DIS EQU 7
;--------------------------------------------Directives des programmes------------------------------------------------------
;=====================================Macro=====================================
led_cligno_lent macro
movlw 0x28 ; longueur
movwf delai1_LED_TEMOIN
movlw 0x5A ; fréquence
movwf delai2_LED_TEMOIN
clrf temp1tmr1
endm
led_cligno_rapide macro
movlw 0x08 ; longueur
movwf delai1_LED_TEMOIN
movlw 0x0A ; fréquence
movwf delai2_LED_TEMOIN
clrf temp1tmr1
endm
led_cligno_flash macro
movlw 0x29 ; longueur
movwf delai1_LED_TEMOIN
movlw 0x2A ; fréquence
movwf delai2_LED_TEMOIN
clrf temp1tmr1
endm
;===============================================================================
org 0x000 ; Debut du programme principale
goto START ; Saut à START
;*****************************************************************************
; ROUTINE INTERRUPTION *
;*****************************************************************************
;sauvegarder registres
;---------------------
org 0x004 ; adresse d'interruption
movwf w_temp ; sauver registre W
swapf STATUS,w ; swap status avec résultat dans w
movwf status_temp ; sauver status swappé
movf FSR , w ; charger FSR
movwf FSR_temp ; sauvegarder FSR
bsf STATUS,RP0 ; sélectionner banque1
btfss PIE1,TMR1IE ; tester si interrupt autorisée
goto intsw1 ; non sauter
bcf STATUS,RP0 ; oui, sélectionner banque0
btfss PIR1,TMR1IF ; oui, tester si interrupt en cours
goto intsw1 ; non sauter
MOVLW 0x3C ; int toute le 100ms
MOVWF TMR1H
MOVLW 0xB3
movwf TMR1L
incf temp1tmr1,f
movf delai2_LED_TEMOIN,w ;on test si Xfois
subwf temp1tmr1,W
btfss STATUS,Z
goto suite_led_temoin
bcf LED_TEMOIN
; bsf LED_TEMOIN
clrf temp1tmr1
goto sautintsw9
suite_led_temoin
movf delai1_LED_TEMOIN,w
subwf temp1tmr1,W
btfss STATUS,Z
goto sautintsw9
bsf LED_TEMOIN
; bcf LED_TEMOIN ; inversion des sorties pour la platine essais
sautintsw9
bcf PIR1,TMR1IF ; effacer flag interupt
intsw1
bcf STATUS,RP0 ; oui, sélectionner banque0
;restaurer registres
;-------------------
restorereg
bcf STATUS,RP0
movf FSR_temp , w ; charger FSR sauvé
movwf FSR ; restaurer FSR
swapf status_temp,w ; swap ancien status, résultat dans w
movwf STATUS ; restaurer status
swapf w_temp,f ; Inversion L et H de l'ancien W
; sans modifier Z
swapf w_temp,w ; Réinversion de L et H dans W
; W restauré sans modifier status
retfie
;-------------------------------------------------INITIALISATION------------------------------------------------------
START
; Registre d'options (banque 1)
; -----------------------------
BANKSEL OPTION_REG ; sélectionner banque 1
movlw OPTIONVAL ; charger masque
movwf OPTION_REG ; initialiser registre option
; registres interruptions (banque 1)
; ----------------------------------
bsf INTCON,PEIE ; autoriser interruptions périphériques
bcf STATUS,RP0 ; passer banque 0
; autoriser interruptions (banque 0)
; ----------------------------------
bsf T1CON,0X4
bcf T1CON,0X5
MOVLW 0x3C ; int toute le 100ms
MOVWF TMR1H
MOVLW 0xB3
movwf TMR1L
BSF T1CON,TMR1ON ;on TMR1 bit a 1
CLRF PORTA ; Remise à 0 du port A
CLRF PORTB ; Remise à 0 du port B
CLRF PORTC ; Remise à 0 du port C
CLRF PORTD ; Remise à 0 du port D
CLRF PORTE ; Remise à 0 du port E
bsf STATUS,RP0 ; Banque 1
clrf TRISA ; PortA en sortie
movlw b'00000110'
movwf ADCON1 ; sortie digital
; PORTA, PORTB, PORTC, and PORTE outputs
CLRF TRISB ; PORTD defaults to input
CLRF TRISC ;
CLRF TRISE ;
BSF PIE1,TMR1IE ;valide le TMR1
bcf STATUS,RP0 ; Banque 0
led_cligno_lent
bsf INTCON,GIE ; valider interruptions
GLCD_INIT
BCF RST ; reset du GLCD
MOVLW B'01111100' ; On charge la valeur dans le registre W
MOVWF PORTB ; Command mode and 6x8 font, disableread, write, and chip enable
call Delay50mS ; Appel de la tempo de 50ms
BSF RST ; disable reset
;-------------------------------------------------INITIALISATION afficheur------------------------------------------------------
ModeSet
MOVLW 0x84 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL NoData ; Appel de l'étiquette NoData
GraphicsHome
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
MOVLW 0x42 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
GraphicsArea
MOVLW 0x28 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x0 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
MOVLW 0x43 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
TextHome
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x17 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
MOVLW 0x40 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
TextArea
MOVLW 0x28 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
MOVLW 0x41 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
CGROMSet
MOVLW 0x03 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x0 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
MOVLW 0x22 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
goto saut1
cleargraphicsRAM
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Setaddress pointer to 0x0000
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
CALL ADDR_PTR ; Appel de l'étiquette ADDR_PTR
MOVLW 0x20 ; Charge la valeur dans W
MOVWF COUNT2 ; Transfert de W sur COUNT2
CALL DisplayClear ; Appel de l'étiquette DisplayClear
cleartextRAM
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Setaddress pointer to 0x0000
MOVLW 0x17 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
CALL ADDR_PTR ; Appel de l'étiquette ADDR_PTR
MOVLW 0x08 ; Charge la valeur dans W
MOVWF COUNT2 ; Transfert de W sur COUNT2
CALL DisplayClear ; Appel de l'étiquette DisplayClear
saut1
CSRPattern
MOVLW 0xA0 ; Charge la valeur dans W (A0)
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL NoData ; Appel de l'étiquette NoData
CSRPointer
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
CALL CSR_PTR ; Appel de l'étiquette CSR_PTR
ADDRPointer
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAL ; Transfert de W sur DATAL
MOVLW 0x00 ; Charge la valeur dans W
MOVWF DATAH ; Transfert de W sur DATAH
CALL ADDR_PTR ; Appel de l'étiquette ADDR_PTR
DisplayOn
MOVLW 0x9F ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL NoData ; Appel de l'étiquette NoData
led_cligno_rapide
loop
nop
GOTO loop ; boucle principale
;-------------------------------------------------Programme tempo------------------------------------------------------
Delay50mS
MOVLW 0x40 ; Charge la valeur dans W
MOVWF COUNT1 ; Transfert de W sur COUNT1
MOVWF COUNT2 ; Transfert de W sur COUNT2
DECFSZ COUNT1,F ; On décrémente COUNT1,F
GOTO $-1 ; Comptage de boucle
DECFSZ COUNT2,F ; On décrémente COUNT2,F
GOTO $-3 ; Comptage de boucle
RETURN
Delay
MOVWF COUNT3 ; Transfert de W sur COUNT3
CALL Delay50mS ; Appel de l'étiquette Delay50mS
DECFSZ COUNT3,F ; On décrémente COUNT3,F
GOTO $-2 ; Comptage de boucle
RETURN
;-------------------------------------------------Position Address Pointer ------------------------------------------------------
ADDR_PTR
MOVLW 0x24 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
RETURN
;-------------------------------------------------Position Cursor Pointer ------------------------------------------------------
CSR_PTR
MOVLW 0x21 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL TwoData ; Appel de l'étiquette TwoData
RETURN
;-------------------------------------------------Command Send Routines ------------------------------------------------------
TwoData
CALL LCDStat ; Appel de l'étiquette LCDStat
MOVWF DATAL ; Transfert de W sur DATAL
CALL DWrite ; Appel de l'étiquette DWrite
OneData
CALL LCDStat ; Appel de l'étiquette LCDStat
MOVWF DATAH ; Transfert de W sur DATAH
CALL DWrite ; Appel de l'étiquette DWrite
NoData
CALL LCDStat ; Appel de l'étiquette LCDStat
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL Command ; Appel de l'étiquette Command
RETURN
;------------------------------------------------GLCD Read/Write/Status Check------------------------------------------------------
Command
BSF CD ; CD=1 command/data
GOTO $+2 ; Permet de sauter 2 lignes de code
DWrite
BCF CD ; CD=0 CD = PORTB,5
MOVWF PORTD ; Transfert de W sur port D
MOVLW WR_EN ; Charge WR_EN dans W
MOVWF PORTB ; Transfert de W sur port B
BSF STATUS,5 ; Accès à la 2ème page mémoire TRISD
MOVLW B'00000000' ; Charge la valeur dans W
MOVWF TRISD ; Le port D est en sortie
MOVLW WR_DIS ; Charge WR_DIS dans W
MOVWF PORTB ; Transfert de W sur port B
BCF STATUS,5 ; Accès à la 1ère page mémoire TRISD
call Delay50mS ; Appel de la tempo de 50ms
BSF STATUS,5 ; Accès à la 2ème page mémoire TRISD
MOVLW B'11111111' ; Charge la valeur dans W
MOVWF TRISD ; Le port D est en entrée
BCF STATUS,5 ; Accès à la 1ère page mémoire TRISD
RETURN
LCDStat
CALL StatReadEn ; Appel de l'étiquette StatReadEn
; BTFSC PORTD,0 ; D0 = 0?
; BTFSS PORTD,1 ; D1 = 1?
; GOTO $-2 ; Comptage de boucle
CALL Delay50mS ; Appel de l'étiquette Delay50mS
CALL StatReadDis ; Appel de l'étiquette StatReadDis
RETURN
DAWStat
CALL StatReadEn ; Appel de l'étiquette StatReadEn
; BTFSS PORTD,3 ; D3 = 1?
; GOTO $-1 ; Comptage de boucle
CALL Delay50mS ; Appel de l'étiquette Delay50mS
CALL StatReadDis ; disablestatusread
RETURN
StatReadEn
BSF CD ; CD=1
MOVLW RD_EN ; Charge RD_EN dans W
MOVWF PORTB ; Transfert de W sur port B
RETURN
StatReadDis
MOVLW RD_DIS ; Charge RD_DIS dans W
MOVWF PORTB ; Transfert de W sur port B
RETURN
;---------------------------------------------Data Auto Read/Write Routines--------------------------------------------------
DAWSet
MOVLW 0xB0 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL NoData ; Appel de l'étiquette NoData
CALL LCDStat ; Appel de l'étiquette LCDStat
CALL DAWStat ; Appel de l'étiquette DAWStat
RETURN
DAWReset
CALL DAWStat ; Appel de l'étiquette DAWStat
MOVLW 0xB2 ; Charge la valeur dans W
MOVWF COMMAND ; Transfert de W sur COMMAND
CALL NoData ; Appel de l'étiquette NoData
RETURN
;------------------------------------------------Clear Display------------------------------------------------------
DisplayClear
MOVLW 160 ; Charge la valeur dans W
MOVWF COUNT1 ; Transfert de W sur COUNT1
CALL DAWSet ; Appel de l'étiquette DAWSet
CALL DAWStat ; Appel de l'étiquette DAWStat
MOVLW 0 ; Charge la valeur dans W
CALL DWrite ; Appel de l'étiquette DWrite
DECFSZ COUNT1,F ; On décrémente COUNT1,F
GOTO $-4 ; Comptage de boucle
MOVLW 160 ; Charge la valeur dans W
MOVWF COUNT1 ; Transfert de W sur COUNT1
DECFSZ COUNT2,F ; On décrémente COUNT2,F
GOTO $-8 ; Comptage de boucle
CALL DAWReset ; Appel de l'étiquette DAWReset
RETURN
END
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
]Bonjour tout le monde,
Je vous joins le typon en jpeg pour que vous ayez un réel aperçu du PCB.
J'ai identifié les pins du connecteur qui va au GLCD ainsi que ceux du PIC. Ne vous préoccupez pas des masses, j'ai viré les plans de masses des couches pour mieux visualiser le routage.
Vous pouvez aisément suivre le routage, la pin 1 du connecteur correspond bien à la pin 1 du GLCD.
A noter que le typon a été corrigé pour que RD0 corresponde à D0
Je vous joins le typon en jpeg pour que vous ayez un réel aperçu du PCB.
J'ai identifié les pins du connecteur qui va au GLCD ainsi que ceux du PIC. Ne vous préoccupez pas des masses, j'ai viré les plans de masses des couches pour mieux visualiser le routage.
Vous pouvez aisément suivre le routage, la pin 1 du connecteur correspond bien à la pin 1 du GLCD.
A noter que le typon a été corrigé pour que RD0 corresponde à D0
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 70 invités