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 à toute l'équipe du forum
Bonsoir nondediode,
hum ......, ça peu pas fonctionner comme le code est, car TRISA, TRISB, TRISC, TRISE se trouve en bank1
et BANKSEL a été désactivé.
De plus, Il faut configurer le convertisseur analogique, qui n'est pas ANSEL n' y ANSELH pour un Pic16F6877 mais ADCON1
Comme ça c'est mieux
Autre chose, pour les temps le quartz utilisé est très important, sur ton lien le quartz utilisé et de 16MHz
Il faut revoir les temps, car tu utilises un quartz de 4Mhz, il existe un petit utilitaire pour cela, tu peux le télécharger ICI
Bon courage et repose toi.
hum ......, ça peu pas fonctionner comme le code est, car TRISA, TRISB, TRISC, TRISE se trouve en bank1
et BANKSEL a été désactivé.
Code : Tout sélectionner
;;;;;;;;;; banksel TRISA ; bank 1
De plus, Il faut configurer le convertisseur analogique, qui n'est pas ANSEL n' y ANSELH pour un Pic16F6877 mais ADCON1
Comme ça c'est mieux
Code : Tout sélectionner
START
BANKSEL TRISA ; passer en bank1
clrf TRISA ; PORTA en sortie
clrf TRISB ; PORTB en sortie
clrf TRISC ; PORTC en sortie
movlw B'00001000' ; PORTE en sortie à par RE3 qui ne
movwf TRISE ; peut pas être configurer en sortie seulement en entrée
movlw B'00000110' ; toutes les pattes numérique en mode digital
movwf ADCON1
movlw B'10000000' ; b7 = 1 résistance rappel +5V hors service
movwf OPTION_REG
BANKSEL PORTA ; passer en bank0
clrf INTCON ; b7 = 0 arrêt de toutes les interruptions
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
Autre chose, pour les temps le quartz utilisé est très important, sur ton lien le quartz utilisé et de 16MHz
Il faut revoir les temps, car tu utilises un quartz de 4Mhz, il existe un petit utilitaire pour cela, tu peux le télécharger ICI
nondediode a écrit :Source du message Je me fait opérer jeudi et j'ai pas mal d'examens médicaux à passer qui me fatigue pas mal.
Bon courage et repose toi.
Bonjour à toute l'équipe du forum
Bonjour Nondediode et temps-x et tout le monde
branche une led (avec sa resistance) sur portA,0
et ton afficheur pour me dire ce qu'il ce passe
branche une led (avec sa resistance) sur portA,0
et ton afficheur pour me dire ce qu'il ce passe
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
;----------------------------------------------------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
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 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------------------------------------------------------
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 Tempj,F ; à 10 cela fera 1s
MOVLW 0X0A ;on test si 10fois 100mS
SUBWF Tempj,W
BTFSS STATUS,Z
GOTO sautintsw9
CLRF Tempj ;RAZ compteur temp
movlw B'00000001' ; Masque pour inversion de la LED (RA0) ; sélectionner bit à inverser
xorwf PORTA , f ; inverser LED
sautintsw9
bcf PIR1,TMR1IF ; effacer flag interupt
intsw1
;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
bsf INTCON,GIE ; valider interruptions
loop
nop
goto loop
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
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
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
GOTO $ ; Comptage de boucle
;-------------------------------------------------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
GOTO $+2 ; Permet de sauter 2 lignes de code
DWrite
BCF CD ; CD=0
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 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 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
Bonjour nondediode, JMarc, et tout le forum,
Normal, lui il se sert des interruptions, moi je les coupes, si j'ai le temps je te fait le code entier, ça sera plus simple,
A+
nondediode a écrit :Source du message La led ne s'allume pas avec les corrections de temps-X
Normal, lui il se sert des interruptions, moi je les coupes, si j'ai le temps je te fait le code entier, ça sera plus simple,
A+
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour à toute l'équipe du forum
Effectivement je me sers des interruptions pour faire clignoter la led donc si elle ne clignote pas c’est que ton pic ne tourne pas, rien a voir avec l’afficheur.
Commence par vérifier tes alimentations, masse , quartz, excetera...
Quand ça clignotera nous pourrons continuer sur l’afficheur
Je ne comprend pas quelles corrections ???
As tu pris le programme que je t’ai fais ???
Commence par vérifier tes alimentations, masse , quartz, excetera...
Quand ça clignotera nous pourrons continuer sur l’afficheur
Je ne comprend pas quelles corrections ???
As tu pris le programme que je t’ai fais ???
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Je réponds en fonction des messages qui arrivent et j'ai commencé par celui de Temp-x où il a corrigé une partie de mon programme. C'est celui là que j'ai testé après avoir apporté ses modifs.
Le montage du PIC est conforme au schéma que j'ai posté, électriquement tout est correct, le quartz de 4MHz oscille bien.
Maintenant, je vais reprendre le programme que tu m'a fait et je teste.
START
BANKSEL TRISA ; passer en bank1
clrf TRISA ; PORTA en sortie
clrf TRISB ; PORTB en sortie
clrf TRISC ; PORTC en sortie
movlw B'00001000' ; PORTE en sortie à par RE3 qui ne
movwf TRISE ; peut pas être configurer en sortie seulement en entrée
movlw B'00000110' ; toutes les pattes numérique en mode digital
movwf ADCON1
movlw B'10000000' ; b7 = 1 résistance rappel +5V hors service
movwf OPTION_REG
BANKSEL PORTA ; passer en bank0
clrf INTCON ; b7 = 0 arrêt de toutes les interruptions
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
Le montage du PIC est conforme au schéma que j'ai posté, électriquement tout est correct, le quartz de 4MHz oscille bien.
Maintenant, je vais reprendre le programme que tu m'a fait et je teste.
Bonjour à toute l'équipe du forum
Bonjour à toute l'équipe du forum
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 43 invités