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
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour SATINAS,
J'apprécie à chaque fois tes réponses, elles me sont très enrichissantes.
Effectivement faire une boucle alternative avec le PIC est une solution mais bon comme cela a juste un aspect luxueux dans le prg je vais l'oublier pour l'instant.
OK pour la fonte de caractère.
Merci pour tous ces renseignements
Je continue sur ce prg, il est certain qu'au final que lorsque je l'aurais fini il pourra sembler une usine à gaz mais je compte sur la communauté pour le simplifier.
Bonne journée
J'apprécie à chaque fois tes réponses, elles me sont très enrichissantes.
Effectivement faire une boucle alternative avec le PIC est une solution mais bon comme cela a juste un aspect luxueux dans le prg je vais l'oublier pour l'instant.
OK pour la fonte de caractère.
Merci pour tous ces renseignements
Je continue sur ce prg, il est certain qu'au final que lorsque je l'aurais fini il pourra sembler une usine à gaz mais je compte sur la communauté pour le simplifier.
Bonne journée
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour à toute l'équipe,
Je sèche
Depuis hier, je cherche à créer une boucle dans mon programme pour venir chercher une action selon un choix dans le programme.
Je m'explique:
J'ai 7 écrans qui représente individuellement une source audio que je doit sélectionner par l'action des touches de défilement nommées "<" ou ">"
Source : DIRECT
Source : TUNER
Source :CD1
Source :CD2
Source :DVD
Source :TAPE
Source :PHONO
J'ai cherché plusieurs méthodes et à part de créer une usine à gaz en créant des config dans X routines (14) qui combinerai les actions des 2 touches pour chaque écran je me dis qu'il doit bien avoir un moyen simple pour m'affranchir ce cette méthode hasardeuse
J'ai essayé en créant un registre temporaire qui chargerait une valeur de départ "0" et que j'incrémenterai ou décrémenterai en fonction de la source choisie.
Mais bien des choses m'échappent pour arriver à faire fonctionner cette méthode.
Si vous avez des idées je suis preneur
En vous remerciant tous
Je sèche
Depuis hier, je cherche à créer une boucle dans mon programme pour venir chercher une action selon un choix dans le programme.
Je m'explique:
J'ai 7 écrans qui représente individuellement une source audio que je doit sélectionner par l'action des touches de défilement nommées "<" ou ">"
Source : DIRECT
Source : TUNER
Source :CD1
Source :CD2
Source :DVD
Source :TAPE
Source :PHONO
J'ai cherché plusieurs méthodes et à part de créer une usine à gaz en créant des config dans X routines (14) qui combinerai les actions des 2 touches pour chaque écran je me dis qu'il doit bien avoir un moyen simple pour m'affranchir ce cette méthode hasardeuse
J'ai essayé en créant un registre temporaire qui chargerait une valeur de départ "0" et que j'incrémenterai ou décrémenterai en fonction de la source choisie.
Mais bien des choses m'échappent pour arriver à faire fonctionner cette méthode.
Si vous avez des idées je suis preneur
En vous remerciant tous
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bon il me semble avoir trouvé une méthode empirique pour faire fonctionner cette boucle mais ça restera une usine à gaz.
Ceci étant je me trouve confronté à un pb délicat que j'aimerai bien résoudre.
J'utilise le port C pour 2 fonctions;
Les bits RC4 à RC6 sont les bits de cde E1, E2 et R/S de l'afficheur.
RC7 est en entrée pour recevoir une info
RC0 à RC3 sont des bits de cde pour envoyer une cde binaire sur une autre carte
Le soucis c'est que ça se met en conflit quand j'ai besoin d'envoyer une valeur sur RC0 à RC3 alors que la séquence d'après j'ai une donné à envoyer à l'afficheur.
La cde est la suivante;
EX: Pour envoyer un code sur RCO à RC3
MOVLW B'00001101'
MOVWF PortC
Juste après Pour écrire dans l'afficheur j'envoie ceci qui est une routine dans ma config d'afficheur
MOVLW B'01100000'
MOVWF PortC
Forcement ça se met en conflit, mes broches RC0 à RC4 repassent obligatoirement à 0
Si je passe par la cde BSF pour la routine de l'afficheur celui-ci ne fonctionne plus
BSF PORTC,5
BSF PORTC,6
Y'a t'il un autre moyen pour y remédier sans avoir à changer de port?
En attendant vos réponses je continue de chercher
Ceci étant je me trouve confronté à un pb délicat que j'aimerai bien résoudre.
J'utilise le port C pour 2 fonctions;
Les bits RC4 à RC6 sont les bits de cde E1, E2 et R/S de l'afficheur.
RC7 est en entrée pour recevoir une info
RC0 à RC3 sont des bits de cde pour envoyer une cde binaire sur une autre carte
Le soucis c'est que ça se met en conflit quand j'ai besoin d'envoyer une valeur sur RC0 à RC3 alors que la séquence d'après j'ai une donné à envoyer à l'afficheur.
La cde est la suivante;
EX: Pour envoyer un code sur RCO à RC3
MOVLW B'00001101'
MOVWF PortC
Juste après Pour écrire dans l'afficheur j'envoie ceci qui est une routine dans ma config d'afficheur
MOVLW B'01100000'
MOVWF PortC
Forcement ça se met en conflit, mes broches RC0 à RC4 repassent obligatoirement à 0
Si je passe par la cde BSF pour la routine de l'afficheur celui-ci ne fonctionne plus
BSF PORTC,5
BSF PORTC,6
Y'a t'il un autre moyen pour y remédier sans avoir à changer de port?
En attendant vos réponses je continue de chercher
LCD origine inconnu
Bonsoir,
Il n'y a pas de raison que le lcd ne puisse être piloté avec des instructions BSF.
Il y a aussi les instructions IORWF et ANDWF pour modifier sélectivement des bits.
Pour le post précédent, il faudrait avoir le schéma complet, et un exemple d'affichage pour avoir une idée de ce que fait ton appli. Je suppose qu'elle ne se résume pas au choix d'une entrée parmi 7 à l'aide de 2 poussoirs.
Donne nous ton programme actuel, on essaiera de le simplifier.
Il n'y a pas de raison que le lcd ne puisse être piloté avec des instructions BSF.
Il y a aussi les instructions IORWF et ANDWF pour modifier sélectivement des bits.
Pour le post précédent, il faudrait avoir le schéma complet, et un exemple d'affichage pour avoir une idée de ce que fait ton appli. Je suppose qu'elle ne se résume pas au choix d'une entrée parmi 7 à l'aide de 2 poussoirs.
Donne nous ton programme actuel, on essaiera de le simplifier.
Modifié en dernier par satinas le ven. 14 déc. 2018 21:17, modifié 1 fois.
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Au final, ne trouvant rien, j'ai jonglé avec les ports en inversant certains qui étaient en entrées avec d'autres qui étaient en sorties.
Ainsi, sur le port utilisé pour l'afficheur je n'ai que R/S, E1 et E2 qui sont en sorties tous les autres sont affectés en entrées.
En revanche si il existe une méthode pour diviser un port en 2 je suis preneur
J'ai rien trouvé sur le cours Bigonof à ce sujet et pas plus sur le net.
Bonne soirée à tous
Ainsi, sur le port utilisé pour l'afficheur je n'ai que R/S, E1 et E2 qui sont en sorties tous les autres sont affectés en entrées.
En revanche si il existe une méthode pour diviser un port en 2 je suis preneur
J'ai rien trouvé sur le cours Bigonof à ce sujet et pas plus sur le net.
Bonne soirée à tous
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
satinas a écrit :Bonsoir,
Il n'y a pas de raison que le lcd ne puisse être piloté avec des instructions BSF.
Pour le post précédent, il faudrait avoir le schéma complet, et un exemple d'affichage pour avoir une idée de ce que fait ton appli. Je suppose qu'elle ne se résume pas au choix d'une entrée parmi 7 à l'aide de 2 poussoirs.
Donne nous ton programme actuel, on essaiera de le simplifier.
Bonsoir Satinas
Demain je mettrai en ligne
Je suis pas arrivé à faire fonctionner 2 BSF en même temps sur un même port
Pour le simplifier y'a du taf
Bonne soirée
LCD origine inconnu
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Bonjour Satinas, Jean Marc et tous les autres,
Le PIC est un 16F877, Il me semble que ma platine EasyPic ne passe pas la série 18F.
Je vais vous mettre mon prg en ligne courant de matinée.
Pour ce qui est du pb de cde BSF, j'ai modifié les affectations de port pour n'avoir en sortie que les cdes R/S, E1 et E2 toutes les autres sorties de ce même port sont en entrées. Je ne devrait donc plus rencontrer de pb.
A+
Le PIC est un 16F877, Il me semble que ma platine EasyPic ne passe pas la série 18F.
Je vais vous mettre mon prg en ligne courant de matinée.
Pour ce qui est du pb de cde BSF, j'ai modifié les affectations de port pour n'avoir en sortie que les cdes R/S, E1 et E2 toutes les autres sorties de ce même port sont en entrées. Je ne devrait donc plus rencontrer de pb.
A+
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Pour commencer voici les photos des différents écrans qui vous aideront à comprendre le tps que je vous écrive le chronogramme du prg et que je vous envoie le prg complet .
Oui, je sais, j'ai commencé par écrire le prg avant de faire préalablement le chronogramme je suis victime de ma précipitation
Ceci étant, ça commence à sentir bon pour la fin de ce prg qui je rappelle est loin d'être terminé puisqu'il me restera le mode d'arrêt à finaliser, et qq routines à revoir pour obtenir un prg fonctionnel. pour l'instant c'est juste la partie du déroulement et les accès aux différents écrans.
Oui, je sais, j'ai commencé par écrire le prg avant de faire préalablement le chronogramme je suis victime de ma précipitation
Ceci étant, ça commence à sentir bon pour la fin de ce prg qui je rappelle est loin d'être terminé puisqu'il me restera le mode d'arrêt à finaliser, et qq routines à revoir pour obtenir un prg fonctionnel. pour l'instant c'est juste la partie du déroulement et les accès aux différents écrans.
Vous n’avez pas les permissions nécessaires pour voir les fichiers joints à ce message.
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
Le programme ne passe pas dans sa totalité, je le fait donc en 2 fois:
Code : Tout sélectionner
;
;----------------------------------------------------Brochage du PIC sur la carte---------------------------------------------------------
; Port | Broche | E/S | Description
; RA0 | 02 | S | Relais "MUTE"
; RA1 | 03 | S | Relais "PHASE"
; RA2 | 04 | S | Relais statique gauche
; RA3 | 05 | S | Relais statique droit
; RA4 | 06 | S | Relais de cde HT droit et gauche
; RA5 | 07 | S | Relais de cde HT final droit et gauche
; RB0 | 33 | S | LED droite
; RB1 | 34 | S | LED gauche
; RB2 | 35 | S | LEDs droit et gauche rouge
; RB3 | 36 | E | Inter "on / off"
; RB4 | 37 | S | Adressage entrée audio bit A
; RB5 | 38 | S | Adressage entrée audio bit B
; RB6 | 39 | S | Adressage entrée audio bit C
; RB7 | 40 | S | Adressage entrée audio bit D
; RC0 | 15 | E | Bouton poussoir "OK"
; RC1 | 16 | E | Bouton poussoir "INPUT"
; RC2 | 17 | E | Bouton poussoir "PHASE"
; RC3 | 18 | E | Bouton poussoir "MUTE"
; RC4 | 23 | S | E1
; RC5 | 24 | S | R/S
; RC6 | 25 | S | E2
; RC7 | 26 | E | CTRL retour BCD
; 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>
__CONFIG _CP_OFF & _DEBUG_OFF & _WRT_ENABLE_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
;-------------------------------------------------DEFINITION DES REGISTRES TEMPORAIRES------------------------------------------------------
PORTA EQU 0X05 ; Le registre temporaire PORTA se trouve à l'adresse 05
PORTB EQU 0X06 ; Le registre temporaire PORTB se trouve à l'adresse 06
PORTC EQU 0X07 ; Le registre temporaire PORTC se trouve à l'adresse 07
PORTD EQU 0X08 ; Le registre temporaire PORTD se trouve à l'adresse 08
PORTE EQU 0X09 ; Le registre temporaire PORTE se trouve à l'adresse 09
TRISA EQU 0X85 ; Le registre temporaire TRISA se trouve à l'adresse 85
TRISB EQU 0X86 ; Le registre temporaire TRISB se trouve à l'adresse 86
TRISC EQU 0X87 ; Le registre temporaire TRISC se trouve à l'adresse 87
TRISD EQU 0X88 ; Le registre temporaire TRISD se trouve à l'adresse 88
TRISE EQU 0X89 ; Le registre temporaire TRISE se trouve à l'adresse 89
CPT2 EQU 0X0D ; Le registre temporaire CPT2 se trouve à l'adresse 0D
CPT3 EQU 0X0E ; Le registre temporaire CPT3 se trouve à l'adresse 0E
RETARD1 EQU 0X0C ; Le registre temporaire retard1 se trouve à l'adresse 0C
RETARD2 EQU 0X0F ; Le registre temporaire retard2 se trouve à l'adresse 0F
RETARD3 EQU 0X10 ; Le registre temporaire retard3 se trouve à l'adresse 10
RETARD4 EQU 0X11 ; Le registre temporaire retard4 se trouve à l'adresse 11
RETARD5 EQU 0X12 ; Le registre temporaire retard4 se trouve à l'adresse 12
VAL1 EQU 0X14 ; Le registre temporaire VAL1 se trouve à l'adresse 14
VAL2 EQU 0X15 ; Le registre temporaire VAL2 se trouve à l'adresse 15
VAL3 EQU 0X16 ; Le registre temporaire VAL1 se trouve à l'adresse 14
VAL4 EQU 0X17 ; Le registre temporaire VAL2 se trouve à l'adresse 15
;--------------------------------------------PROGRAMME PRINCIPAL----------------------------------------
ORG 0000h ; Adresse de reset
GOTO INIT
;------------------------------------------PROGRAMME D'ARRET----------------------------------------
STOP2
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCE ; Déplace le curseur à la 3ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'H' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'S' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'R' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'R' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
CALL CONFIG_B ; Va à CONFIG
MOVLW 0X90 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW 'P' ; Affiche message
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
CALL TEMPO1 ; On appelle TEMPO2
GOTO INIT ; Retour à l'étiquette INIT
;-----------------------------------------PROGRAMME D'INITIALISATION----------------------------------------
INIT
CLRF PORTA ; On remet à 0 le port A
CLRF PORTB ; On remet à 0 le port B
CLRF PORTC ; On remet à 0 le port C
CLRF PORTD ; On remet à 0 le port D
CLRF PORTE ; On remet à 0 le port E
BSF STATUS,RP0 ; Selection de la page mémoire RP0
BCF STATUS,RP1 ; Déselection de la page mémoire RP1
MOVLW B'00000000' ; On charge la valeur dans le registre W
MOVWF TRISA ; On transfert W sur le registre TRISA pour définir la direction du portA
MOVLW B'00001000' ; On charge la valeur dans le registre W
MOVWF TRISB ; On transfert W sur le registre TRISB pour définir la direction du portB
MOVLW B'10001111' ; On charge la valeur dans le registre W
MOVWF TRISC ; On transfert W sur le registre TRISC pour définir la direction du portC en sortie
MOVLW B'00000000' ; On charge la valeur dans le registre W
MOVWF TRISD ; On transfert W sur le registre TRISD pour définir la direction du portD en sortie
BCF STATUS,RP0 ; Déselection de la page mémoire RP0
BCF STATUS,RP1 ; Déselection de la page mémoire RP1
;---------------------------------------------------------Programme PRINCIPAL-------------------------------------------------------
CLRF PORTA ; Les sorties du port A sont à 0
CLRF PORTB ; Les sorties du port B sont à 0
CLRF PORTC ; Les sorties du port C sont à 0
CLRF PORTD ; Les sorties du port D sont à 0
CALL ACCEUIL ; Appel du programme d'acceuil
DEPART
BTFSS PORTB,3 ; Test du bouton "ON"
GOTO DEPART ; Saut à DEPART
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTB,3 ; Bouton toujours activé?
GOTO DEPART ; Retour DEPART
MOVLW B'00000100' ; On charge la valeur dans W
MOVWF PORTA ; Exitation du Relais statique gauche
MOVLW B'00000010' ; On charge la valeur dans W
MOVWF PORTB ; Allumage LED gauche
CALL TEMPO1 ; On appelle TEMPO4
MOVLW B'00001100' ; On charge la valeur dans W
MOVWF PORTA ; On rajoute le relais statique droit
MOVLW B'00000011' ; On charge la valeur dans W
MOVWF PORTB ; Allumage LED droite
CALL TEMPO4 ; On appelle TEMPO4
CALL PRECHAUFFAGE ; Appel de l'affichage du préchauffage
CALL CLIGNOTE ; Appel de l'affichage CLIGNOTE
CALL ACTIF ; Appel du l'affichage ACTIF
TEST_A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,1 ; Test du bouton "INPUT"
GOTO TEST_A ; Saut à TEST_A
CALL CHOIX ; Appel de l'affichage CHOIX (Input par défaut)
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
TEST_B
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,1 ; Test du bouton INPUT
CAll TUN_1 ; Appel du programme TUN_1
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
CALL ATTENTE5 ; Appel ATTENTE5
GOTO TEST_B ; Saut à TEST_A
;----------------------------------------------------------Appel du TUNER-------------------------------------
TUN_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL TUNER ; Appel de l'affichage TUNER
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
TUN_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO TUN_1B ; Saut à TUN_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO PHONO_1 ; Saut à PHONO_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO CD1_1 ; Saut à CD1_1
GOTO TUN_1A ; Saut à TUN_1A
TUN_1B
CALL ATTENTE5 ; Appel ATTENTE5
MOVLW B'00010011' ; Adressage BCD sur port C = 1
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
TUN_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO TUN_1C ; Saut à TUN_1A
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
TUN_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO PHONO_1 ; Saut à PHONO_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO CD1_1 ; Saut à CD1_1
GOTO TUN_1D ; Saut à TUN_1D
;----------------------------------------------------------Appel du CD1-------------------------------------
CD1_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL CD1 ; Appel de l'affichage CD1
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
CD1_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO CD1_1B ; Saut à CD1_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO TUN_1 ; Saut à PHON_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO CD2_1 ; Saut à CD2_1
GOTO CD1_1A ; Saut à CD1_1A
CD1_1B
MOVLW B'00100011' ; Adressage BCD sur port C = 2
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
CD1_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO CD1_1C ; Saut à CD1_1C
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
CD1_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO TUN_1 ; Saut à TUN_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO CD2_1 ; Saut à CD2_1
GOTO CD1_1D ; Saut à CD1_1D
;----------------------------------------------------------Appel du CD2-------------------------------------
CD2_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL CD2 ; Appel de l'affichage CD2
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
CD2_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO CD2_1B ; Saut à CD2_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO CD1_1 ; Saut à CD1_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO DVD_1 ; Saut à DVD_1
GOTO CD2_1A ; Saut à CD2_1A
CD2_1B
MOVLW B'00110011' ; Adressage BCD sur port C = 3
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
CD2_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO CD2_1C ; Saut à CD2_1C
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
CD2_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO CD1_1 ; Saut à CD1_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO DVD_1 ; Saut à DVD_1
GOTO CD2_1D ; Saut à TUN_1D
;----------------------------------------------------------Appel du DVD-------------------------------------
DVD_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL DVD ; Appel de l'affichage DVD
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
DVD_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO DVD_1B ; Saut à DVD_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO CD2_1 ; Saut à CD2_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO TAPE_1 ; Saut à TAPE_1
GOTO DVD_1A ; Saut à DVD_1A
DVD_1B
MOVLW B'01000011' ; Adressage BCD sur port C = 4
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
DVD_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO DVD_1C ; Saut à DVD_1C
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
DVD_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO CD2_1 ; Saut à CD2_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO TAPE_1 ; Saut à TAPE_1
GOTO DVD_1D ; Saut à DVD_1D
;----------------------------------------------------------Appel du Magneto-------------------------------------
TAPE_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL TAPE ; Appel de l'affichage TAPE
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
TAPE_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO TAPE_1B ; Saut à TAPE_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO DVD_1 ; Saut à CD2_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO PHONO_1 ; Saut à PHONO_1
GOTO TAPE_1A ; Saut à TAPE_1A
TAPE_1B
MOVLW B'01010011' ; Adressage BCD sur port C = 5
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
TAPE_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO TAPE_1C ; Saut à TAPE_1C
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
TAPE_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO DVD_1 ; Saut à DVD_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO PHONO_1 ; Saut à PHONO_1
GOTO TAPE_1D ; Saut à TAPE_1D
;----------------------------------------------------------Appel du Phono-------------------------------------
PHONO_1
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
CALL ATTENTE5 ; Appel ATTENTE5
CALL PHONO ; Appel de l'affichage PHONO
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
PHONO_1A
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSC PORTC,0 ; Test du bouton OK
GOTO PHONO_1B ; Saut à PHONO_1B
BTFSC PORTC,2 ; Test du bouton "<"
GOTO TAPE_1 ; Saut à TAPE_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO TUN_1 ; Saut à TUN_1
GOTO PHONO_1A ; Saut à PHONO_1A
PHONO_1B
MOVLW B'01100011' ; Adressage BCD sur port C = 6
MOVWF PORTB ; Charge la valeur sur le portB
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_A ; Appel menu_A [IN] [PHASE] [OFF] [MUTE]
CALL ATTENTE2 ; Appel du programme ATTENTE2
PHONO_1C
BTFSC PORTB,3 ; Test du bouton OFF
CALL STOP2 ; Appel du programme d'arret
BTFSS PORTC,7 ; Test du ctrl retour BCD
GOTO TEST_A ; Saut à TEST_A
BTFSC PORTC,2 ; Test bouton PHASE
CALL PHASE ; Saut à PHASE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSC PORTC,3 ; Test bouton MUTE
CALL MUTE ; Saut à MUTE
CALL ATTENTE5 ; Appel ATTENTE5
BTFSS PORTC,1 ; Test du bouton INPUT
GOTO PHONO_1C ; Saut à PHONO_1C
CALL ATTENTE5 ; Appel ATTENTE5
CALL MENU_B ; [IN] [<] [OFF] [>] [OK]
CALL ATTENTE5 ; Appel ATTENTE5
PHONO_1D
BTFSC PORTC,2 ; Test du bouton "<"
GOTO TAPE_1 ; Saut à TAPE_1
BTFSC PORTC,3 ; Test du bouton ">"
GOTO TUN_1 ; Saut à PHONO_1
GOTO PHONO_1D ; Saut à PHONO_1D
;-------------------------------------------------------programme de clignote---------------------------------------------------------
CLIGNOTE
MOVLW 0X19 ; On charge la valeur D2 dans le registre W pour obtenir un clignotement pendant 2min
MOVWF RETARD4 ; On met W dans RETARD4
ATTENTE_A
BTFSC PORTB,3 ; On saute l'instruction suivante si RC1=0
CALL STOP2 ; Si RC1=1 on saute à Stop2
MOVLW B'00000011' ; On charge la valeur dans le registre W
MOVWF PORTB ; On met W dans le port C
CALL TEMPO4 ; On appelle la TEMPO4
MOVLW B'00000000' ; On charge la valeur dans le registre W
MOVWF PORTB ; On met W dans le port B
CALL TEMPO4 ; On appelle la TEMPO4
DECFSZ RETARD4,F ; On décrémente RETARD4,F si RETARD5,F=0 on saute l'instruction suivante
GOTO ATTENTE_A ; Si RETARD5,F=1 retour à ATTENTE_A
MOVLW B'00101100' ; On charge la valeur dans le registre W
MOVWF PORTA ; Exitation relais tempo1 maintient du relais 6V3
MOVLW 0X05 ; On charge la valeur 2A dans le registre W pour obtenir un clignotement pendant 30'
MOVWF RETARD4 ; On met W dans RETARD4
ATTENTE_C
BTFSC PORTB,3 ; On saute l'instruction suivante si RC1=0
CALL STOP2 ; Si RC1=1 on saute à Stop2
MOVLW B'00000011' ; On charge la valeur dans le registre W
MOVWF PORTB ; On met W dans le port B
CALL TEMPO4 ; On appelle la TEMPO4
MOVLW B'00000000' ; On charge la valeur dans le registre W
MOVWF PORTB ; On met W dans le port B
CALL TEMPO4 ; On appelle la TEMPO4
DECFSZ RETARD4,F ; On décrémente RETARD4,F si RETARD5,F=0 on saute l'instruction suivante
GOTO ATTENTE_C ; Si RETARD5,F=1 retour à ATTENTE_B
MOVLW B'00000011' ; On charge la valeur dans le registre W
MOVWF PORTB ; On met W dans le port B
MOVLW B'00111100' ; On charge la valeur dans le registre W
MOVWF PORTA ; Exitation relais tempo1 maintient du relais 6V3
RETURN
;---------------------------------------------------------Page d'acceuil-------------------------------------------------------
ACCEUIL
CLRF PORTA ; Les sorties du port A sont à 0
CLRF PORTB ; Les sorties du port B sont à 0
CLRF PORTC ; Les sorties du port C sont à 0
CLRF PORTD ; Les sorties du port D sont à 0
CALL CONFIG_A ; Va à CONFIG_A
MOVLW 0X91 ; Déplace le curseur à la 3ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW '8' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW '4' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW '5' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 0XCE ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'M' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'S' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'B' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'Y' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
CALL CONFIG_B ; Va à CONFIG_B
MOVLW 0X8D ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW 'B' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'Y' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XD2 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW 0X5B ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0X5D ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
RETURN
;----------------------------------------------------------------Page de préchauffage----------------------------------------
PRECHAUFFAGE
CALL CONFIG_A ; Va à CONFIG
MOVLW 0X8E ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'R' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'H' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'G' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0XD0 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'P' ; Affiche message
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
CALL CONFIG_B ; Va à CONFIG
MOVLW 0XD1 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW 0X5B ; Affiche message
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 0X5D ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
RETURN
;----------------------------------------------------------------------Page démarrage du programme---------------------------------------
ACTIF
CALL CONFIG_A ; Va à CONFIG
MOVLW 0X8F ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'M' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0XCE ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'H' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'X' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW '?' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
CALL CONFIG_B ; Va à CONFIG
MOVLW 0XC0 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XD1 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche message
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
RETURN
;-----------------------------------------------------------------CHOIX des entrées-----------------------------------------------
CHOIX
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'R' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
;---------------------------------------------------------------Menu fonctions -----------------------------------
MENU_A
CALL CONFIG_B ; Va à CONFIG
MOVLW 0XC0 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XC7 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'H' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'S' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XD1 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche message
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 0XDA ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'M' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
RETURN
;---------------------------------------------------------------Menu défilement des sources -----------------------------------
MENU_B
BTFSC PORTB,3 ; Poussoir activé?
GOTO STOP2 ; Retour DEPART
CALL CONFIG_B ; Va à CONFIG
MOVLW 0XC0 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'I'
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'N'
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']'
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XC9 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW '<' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 0XD1 ; Déplace le curseur à la 5ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche message
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 0XDC ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW '>' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
MOVLW 0XE4 ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; Enable = 0
MOVLW '[' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'K' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW ']' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF
RETURN
;-----------------------------------------------------------------APPEL des fonctions PHASE et MUTE----------------------------------
PHASE
MOVLW B'00111110' ; Mode changement de phase
MOVWF PORTA ; Relais PHASE activé
CALL TEMPO2 ; Appel tempo
MOVLW B'00111100' ; Mode silence
MOVWF PORTA ; Relais MUTE désactivé
RETURN
MUTE
MOVLW B'00111101' ; Mode silence
MOVWF PORTA ; Relais MUTE activé
CALL TEMPO2 ; Appel tempo
RETOUR
BTFSS PORTC,3 ; Test du bouton MUTE
GOTO RETOUR ; Retour RETOUR
MOVLW B'00111100' ; Mode du son rétabli
MOVWF PORTA ; Relais MUTE désactivé
CALL TEMPO2 ; Appel tempo
RETURN
;--------------------------------------------------------------Affichage des sources audio------------------------------------------------
TUNER
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'R'
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
CD1
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW '1' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
CD2
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'C' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW '2' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
DVD
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'V' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'D' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
TAPE
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'A' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'E' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
PHONO
CALL CONFIG_A ; Va à CONFIG
MOVLW 0XCB ; Déplace le curseur à la 2ème colonne de la 1ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; Enable = 0
MOVLW 'I' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'T' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW ':' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 0X20 ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'P' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'H' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'N' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
MOVLW 'O' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF
RETURN
;---------------------------------------------------------CONFIGURATION AFFICHEUR Ligne 1 et 2-----------------------------------------------------------
CONFIG_A
MOVLW B'00111000' ; Fonction SET 8 bits 2 lignes police 5X7
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; E1 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; E1 = 0
MOVLW B'00001000' ; Affichage off
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; E1 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; E1 = 0
MOVLW B'00000001' ; Efface l'écran et positionne le curseur à 0
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; E1 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; E1 = 0
MOVLW B'00000110' ; Déplacement curseur vers la droite
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; E1 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; E1 = 0
MOVLW B'00001100' ; Contrôle de l'affichage (affichage on, curseur non visible)
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,4 ; E1 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,4 ; E1 = 0
RETURN
;---------------------------Ecriture dans l'afficheur lignes 1 et 2-------------------------------------
CAR_AFF_A
MOVWF PORTD ; Charge le contenu de W dans le port B
CALL ATTENTE5 ; Appel de la temporisation ATTENTE5
MOVLW B'00110000' ; RS = 1, RW = 0, E1 = 1, E2 = 0
MOVWF PORTC ; Et on transfert sur le port C le contenu de W
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
MOVLW B'00000000' ; RS = 0, RW = 0, E1 = 0, E2 = 0
MOVWF PORTC ;
RETURN
;---------------------------------------------------------CONFIGURATION AFFICHEUR Lignes 3 et 4-----------------------------------------------------------
CONFIG_B
MOVLW B'00111000' ; Fonction SET 8 bits 2 lignes police 5X7
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; E2 = 0
MOVLW B'00001000' ; Affichage off
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; E2 = 0
MOVLW B'00000001' ; Efface l'écran et positionne le curseur à 0
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; E2 = 0
MOVLW B'00000110' ; Déplacement curseur vers la droite
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; E2 = 0
MOVLW B'00001100' ; Contrôle de l'affichage (affichage on, curseur non visible)
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTC,6 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTC,6 ; E2 = 0
RETURN
A suivre........................
Retourner vers « Langage ASM »
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 48 invités