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
Petite parenthèse:
Aujourd'hui j'ai fait des démarrage d'ampli sans soucis; tension secteur 239V hier j'avais des bogs à chaque démarrage ou presque; tension secteur 228V
Cela peut paraitre idiot comme raisonnement, mais sur les amplis à tubes, la tension secteur à une importance majeur sur le fonctionnement des appareils. Cela se comprends par le fait que les tensions d'alims sont très largement supérieur à la tension réseau. Sur un ampli comme le mien j'ai une alim de 1200V soit 5 fois la tension réseau! Lorsque la tension réseau est instable ça se répercute tout de suite sur l'écoute. Sur une lampe on a la polarisation grille / cathode et les variation secteur influe énormément sur les réglages. J'ai donc habitude de vérifier en permanence la tension réseau et j'ai d'ailleurs réaliser un bloc réseau avec un affichage des paramètres. J'ai donc sous les yeux, la tension, la conso et le courant absorbé c'est plus ou moins précis (made in China Amazon) mais ça me donne une indication relative à cet usage.
Ceci dit, je viens de modifier le programme, il n'y a bien sûr pas le prg bootloader mais j'ai écris dans init les nop. Peux tu regarder si ça te semble correct et vérifie aussi toutes les variables que j'ai modifié. Dans les config d'affichage ça me parait un peu plus tordu parce que du coup je travaille sur le portC et le port E à la fois alors je ne sais pas si ce que j'ai écris est correct à vérifier aussi. J'ai complilé le programme et c'est bon il m'a bien crée le HEX
Aujourd'hui j'ai fait des démarrage d'ampli sans soucis; tension secteur 239V hier j'avais des bogs à chaque démarrage ou presque; tension secteur 228V
Cela peut paraitre idiot comme raisonnement, mais sur les amplis à tubes, la tension secteur à une importance majeur sur le fonctionnement des appareils. Cela se comprends par le fait que les tensions d'alims sont très largement supérieur à la tension réseau. Sur un ampli comme le mien j'ai une alim de 1200V soit 5 fois la tension réseau! Lorsque la tension réseau est instable ça se répercute tout de suite sur l'écoute. Sur une lampe on a la polarisation grille / cathode et les variation secteur influe énormément sur les réglages. J'ai donc habitude de vérifier en permanence la tension réseau et j'ai d'ailleurs réaliser un bloc réseau avec un affichage des paramètres. J'ai donc sous les yeux, la tension, la conso et le courant absorbé c'est plus ou moins précis (made in China Amazon) mais ça me donne une indication relative à cet usage.
Ceci dit, je viens de modifier le programme, il n'y a bien sûr pas le prg bootloader mais j'ai écris dans init les nop. Peux tu regarder si ça te semble correct et vérifie aussi toutes les variables que j'ai modifié. Dans les config d'affichage ça me parait un peu plus tordu parce que du coup je travaille sur le portC et le port E à la fois alors je ne sais pas si ce que j'ai écris est correct à vérifier aussi. J'ai complilé le programme et c'est bon il m'a bien crée le HEX
Code : Tout sélectionner
;---------------------------------------------------------GESTION AFFICHEUR-----------------------------------------------------------------
; TITRE: Gestion d'un afficheur LCD
; DATE: 10/12/2018
; AUTEUR: J.P. FRUCHARD
; PIC UTILISE: PIC16F877
; Gestion PP845 avec afficheur LCD 4 lignes 40 caractères
; le quartz est de 4MHz
; Gestion des 6 entrées audio
;----------------------------------------------------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 | E | Inter "on / off"
; RB1 | 34 | S | LED gauche
; RB2 | 35 | S | LED droite
; RB3 | 36 | S | LEDs droit et gauche rouge
; 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
CBLOCK 0x20 ; Début de la zone (0x20 à 0x6F)
CPT2 :1 ; variable
CPT3 :1 ; variable
RETARD1 :1 ; variable
RETARD2 :1 ; variable
RETARD3 :1 ; variable
RETARD4 :1 ; variable
RETARD5 :1 ; variable
VAL1 :1 ; variable
VAL2 :1 ; variable
VAL3 :1 ; variable
VAL4 :1 ; variable
ENDC
;--------------------------------------------PROGRAMME PRINCIPAL----------------------------------------
ORG 0000h ; Adresse de reset
GOTO INIT
NOP
NOP
;------------------------------------------PROGRAMME D'ARRET----------------------------------------
STOP
BCF STATUS,C ; Tester le bit C du registre status
BTFSS PORTB,0 ; Test du bouton OFF
RETURN
CALL TEMPO2 ; Appel de TEMPO2
BCF STATUS,C ; Tester le bit C du registre status
BTFSS PORTB,0 ; On test le bouton OFF
RETURN
CALL ARRET ; Appel de l'affichage ARRET
CALL ATTENTE5 ; Appel ATTENTE5
MOVLW B'00001100' ; On charge la valeur dans W MOVLW B'00110000'
MOVWF PORTA ; Relais HT droit et gauche désactivé
MOVLW B'00001000' ; On charge la valeur dans W
MOVWF PORTB ; Leds rouges activées
MOVLW 0X30 ; On charge la valeur dans le registre W pour obtenir un clignotement pendant 1min.
MOVWF RETARD4 ; On met W dans RETARD4
MOVLW 0X48 ; On charge la valeur dans le registre W pour obtenir un clignotement pendant 1min.
MOVWF RETARD5 ; On met W dans RETARD5
ATTENTE_B
CALL TEMPO4 ; On appelle la TEMPO4
MOVLW B'00000110' ; On charge la valeur dans le registre W
MOVWF PORTB ; Leds bleues activées
CALL TEMPO4 ; On appelle la TEMPO4
MOVLW B'00001000' ; On charge la valeur dans le registre W
MOVWF PORTB ; Alternance leds rouges et bleues
DECFSZ RETARD4,F ; On décrémente RETARD4,F si RETARD5,F=0 on saute l'instruction suivante
GOTO ATTENTE_B ; Si RETARD5,F=1 retour à ATTENTE_B
MOVLW B'00000000' ; On charge la valeur dans W
MOVWF PORTA ; Relais statiques désactivés
BSF STATUS,C ; Tester le bit C du registre status
RETURN
STOP2
BCF STATUS,C ; Tester le bit C du registre status
BTFSS PORTB,0 ; Test du bouton OFF
RETURN
CALL TEMPO2 ; Appel de TEMPO2
BCF STATUS,C ; Tester le bit C du registre status
BTFSS PORTB,0 ; On test le bouton OFF
RETURN
CALL ARRET ; Appel de l'affichage ARRET
CALL ATTENTE5 ; Appel ATTENTE5
MOVLW B'00110000' ; On charge la valeur dans W
MOVWF PORTA ; Relais HT droit et gauche désactivé
MOVLW B'00001000' ; On charge la valeur dans W
MOVWF PORTB ; Leds rouges activées
BSF STATUS,C ; Tester le bit C du registre status
RETURN
;-----------------------------------------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'00000001' ; 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
MOVLW B'00000001' ; On charge la valeur dans le registre W
MOVWF TRISE ; On transfert W sur le registre TRISE pour définir la direction du portE
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
CLRF PORTE ; Les sorties du port E sont à 0
MOVLW B'00001000' ; Leds rouges activées
MOVWF PORTB
CALL ATTENTE5 ; Appel ATTENTE5
CALL ACCEUIL ; Appel du programme d'acceuil
DEPART
BTFSS PORTB,0 ; Test du bouton "ON"
GOTO DEPART ; Saut à DEPART
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTB,0 ; 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'10000110' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSC PORTC,1 ; Test du bouton INPUT
GOTO 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
CALL ATTENTE5 ; Appel ATTENTE5
GOTO TEST_B ; Saut à TEST_A
;----------------------------------------------------------Appel du TUNER-------------------------------------
TUN_1
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'10010111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'10100111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'10110111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'11000111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'11010111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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
CALL TEMPO2 ; Appel de TEMPO2
BTFSS PORTE,0 ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
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'11100111' ; 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
CALL STOP ; Appel du programme d'arret
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
BTFSS PORTE,0 ; 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 0XD2 ; On charge la valeur dans le registre W pour obtenir un clignotement pendant 2min
MOVWF RETARD4 ; On met W dans RETARD4
ATTENTE_A
CALL STOP2 ; Appel du programme STOP2
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
MOVLW B'10000110' ; 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'10000000' ; 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 0X2A ; On charge la valeur dans le registre W pour obtenir un clignotement pendant 30'
MOVWF RETARD4 ; On met W dans RETARD4
ATTENTE_C
CALL STOP2 ; Appel du programme STOP2
BTFSC STATUS,C ; Tester le bit C du registre status
GOTO INIT ; Saut à INIT
MOVLW B'10000110' ; 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'10000000' ; 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'10000110' ; 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
BCF STATUS,C ; Remise à 0 de STATUS
RETURN
;---------------------------------------------------------Message d'arrêt--------------------------------------
ARRET
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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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
RETURN
;---------------------------------------------------------Page d'acceuil-------------------------------------------------------
ACCEUIL
CALL CONFIG_A ; Va à CONFIG_A
MOVLW 0X8E ; 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 'T' ; 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 '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 'M' ; 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 'O' ; 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 'U' ; Affiche caractère
CALL CAR_AFF_A ; Va à CAR_AFF_A
MOVLW 'R' ; 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 0X8A ; Déplace le curseur à la 3ème colonne de la 2ere ligne
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; Enable = 0
MOVLW 'P' ; 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 '8' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW '4' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW '5' ; 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 '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 'J' ; 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 0X20 ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'F' ; Affiche caractère
CALL CAR_AFF_B ; Va à CAR_AFF_A
MOVLW 'R' ; 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 'C' ; 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 'R' ; 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 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
la suite:
Code : Tout sélectionner
;----------------------------------------------------------------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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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
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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; Enable = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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
MOVLW B'00000000' ; RS = 0, RW = 0, E1 = 0, E2 = 0
MOVWF PORTE
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
MOVLW B'00000000' ; RS = 0, RW = 0, E1 = 0, E2 = 0
MOVWF PORTC ;
MOVLW B'00000000' ; RS = 0, RW = 0, E1 = 0, E2 = 0
MOVWF PORTE
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 PORTE,1 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; E2 = 0
MOVLW B'00001000' ; Affichage off
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTE,1 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; E2 = 0
MOVLW B'00000110' ; Déplacement curseur vers la droite
MOVWF PORTD ; Charge le contenu de W dans le port D
BSF PORTE,1 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; 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 PORTE,1 ; E2 = 1
CALL ATTENTE6 ; Appel de la temporisation ATTENTE6
BCF PORTE,1 ; E2 = 0
RETURN
;---------------------------Ecriture dans l'afficheur lignes 3 et 4-------------------------------------
CAR_AFF_B
MOVWF PORTD ; Charge le contenu de W dans le port B
CALL ATTENTE5 ; Appel de la temporisation ATTENTE5
BSF PORTC,5
BSF PORTE,1
; MOVLW B'01100000' ; 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
BCF PORTC,5
BCF PORTE,1
; MOVLW B'00000000' ; RS = 0, RW = 0, E1 = 0, E2 = 0
; MOVWF PORTC ;
RETURN
;---------------------------Programme de temporisation 1-------------------------------------
TEMPO1
MOVLW 0X7F ; On met FF dans le registre W
MOVWF RETARD1 ; On met W dans le registre retard1
MOVWF RETARD2 ; On met W dans le registre retard2
MOVWF RETARD3 ; On met W dans le registre retard3
MOVWF RETARD4 ; On met W dans le registre retard4
ATTENTE1
DECFSZ RETARD1,F ; On décrémente retard1 et on saute la prochaine instruction si le registre retard1 = 0
GOTO ATTENTE1 ; Sinon retour à attente1
MOVLW 0X80 ; On met 80 dans le registre W
MOVWF RETARD1 ; On met W dans RETARD1
DECFSZ RETARD2,F ; On décrémente retard2 et on saute la prochaine instruction si le registre retard2 = 0
GOTO ATTENTE1 ; Sinon retour à attente1
MOVLW 0X08 ; On met 08 dans le registre W
MOVWF RETARD2 ; On met W dans RETARD2
DECFSZ RETARD3,F ; On décrémente retard3 et on saute la prochaine instruction si le registre retard3 = 0
GOTO ATTENTE1 ; Sinon retour à attente1
MOVLW 0X08 ; On met 08 dans le registre W
MOVWF RETARD3 ; On met W dans RETARD3
DECFSZ RETARD4,F ; On décrémente retard4 et on saute la prochaine instruction si le registre retard4 = 0
GOTO ATTENTE1 ; Sinon retour à attente1
RETURN ; Retour au programme principal
;------------------------------programme de temporisation 2---------------------------
TEMPO2
MOVLW 0X7F ; On met 7F dans le registre W
MOVWF RETARD1 ; On met W dans le registre retard1
MOVWF RETARD2 ; On met W dans le registre retard2
MOVLW 0X12 ; On met 12 dans le registre W
MOVWF RETARD3 ; On met W dans le registre retard3
ATTENTE2
DECFSZ RETARD1,F ; On décrémente retard1 et on saute la prochaine instruction
; si le registre retard1 = 0
GOTO ATTENTE2 ; Sinon retour à attente2
MOVLW 0XC8 ; On recharge retard1
MOVWF RETARD1 ; Avec C8 (200)
DECFSZ RETARD2,F ; On décrémente retard2 et on saute la prochaine instruction
; si le registre retard2 = 0
GOTO ATTENTE2 ; Sinon retour à attente2
MOVLW 0X80 ; On recharge retard2
MOVWF RETARD2 ; Avec 80 (128)
DECFSZ RETARD3,F ; On décrémente retard3 et on saute la prochaine instruction
; si le registre retard3 = 0
GOTO ATTENTE2 ; Sinon retour à attente2
RETURN ; Retour au programme principal après l'instruction call
;------------------------------programme de temporisation 3---------------------------
TEMPO3
MOVLW 0X7F ; On met 7F dans le registre W
MOVWF RETARD1 ; On met W dans le registre retard1
MOVWF RETARD2 ; On met W dans le registre retard2
MOVLW 0X80 ; On met 80 dans le registre W
MOVWF RETARD3 ; On met W dans le registre retard3
ATTENTE3
DECFSZ RETARD1,F ; On décrémente retard1 et on saute la prochaine instruction
; si le registre retard1 = 0
GOTO ATTENTE3 ; Sinon retour à attente3
MOVLW 0XC8 ; On recharge retard1
MOVWF RETARD1 ; Avec C8 (200)
DECFSZ RETARD2,F ; On décrémente retard2 et on saute la prochaine instruction
; si le registre retard2 = 0
GOTO ATTENTE3 ; Sinon retour à attente3
MOVLW 0X80 ; On recharge retard2
MOVWF RETARD2 ; Avec 80 (128)
DECFSZ RETARD3,F ; On décrémente retard3 et on saute la prochaine instruction
; si le registre retard3 = 0
GOTO ATTENTE3 ; Sinon retour à attente3
RETURN ; Retour au programme principal après l'instruction call
;---------------------------Programme de temporisation 4-------------------------------------
TEMPO4
MOVLW 0X5A ; On met 7F dans le registre W
MOVWF RETARD1 ; On met W dans le registre retard1
MOVWF RETARD2 ; On met W dans le registre retard2
MOVLW 0X15 ; On met 12 dans le registre W
MOVWF RETARD3 ; On met W dans le registre retard3
ATTENTE4
DECFSZ RETARD1,F ; On décrémente retard1 et on saute la prochaine instruction
; si le registre retard1 = 0
GOTO ATTENTE4 ; Sinon retour à attente4
MOVLW 0X6E ; On recharge retard1 6e
MOVWF RETARD1 ; Avec C8 (200)
DECFSZ RETARD2,F ; On décrémente retard2 et on saute la prochaine instruction
; si le registre retard2 = 0
GOTO ATTENTE4 ; Sinon retour à attente4
MOVLW 0X80 ; On recharge retard2
MOVWF RETARD2 ; Avec 80 (128)
DECFSZ RETARD3,F ; On décrémente retard3 et on saute la prochaine instruction
; si le registre retard3 = 0
GOTO ATTENTE4 ; Sinon retour à attente4
RETURN ; Retour au programme principal après l'instruction call
;---------------------------------------------------SOUS PROGRAMME TEMPO D'ATTENTE---------------------------------------------------------------
ATTENTE5
MOVLW 0XFF ; On met FF dans le registre W
MOVWF CPT2 ; On met W dans le registre CPT2
ATT2
DECFSZ CPT2,1 ; On décrémente CPT2,1 et on saute la prochaine instruction
GOTO ATT2 ; Sinon retour à ATT2
RETURN ; Retour au programme principal après l'instruction call
ATTENTE6
MOVLW 0X1E ; On met 14 dans le registre W
MOVWF CPT3 ; On met W dans le registre CPT3
ATT3
CALL ATTENTE5 ; On appelle ATTENTE5
DECFSZ CPT3,1 ; On décrémente CPT3,1 et on saute la prochaine instruction
GOTO ATT3 ; Sinon retour à ATT3
RETURN ; Retour au programme principal après l'instruction call
END
LCD origine inconnu
Je regarderai plus tard et on va lui faire subir une bonne cure d'amaigrissement à ton programme, comme le disaient Temps-x et Paul :)
Après avoir installé le bootloader, parce que pour le moment le seul 16F877 qui me restait a rendu l'âme, il reste un 16F876, pourvu qu'il tienne. Pas facile de retrouver ses marques. Difficile d'en trouver des 16F877 à bon prix, dans les musées peut-être, j'ai peur d'en demander à Microchip, ils vont me jeter des pierres. On trouve surtout des 16F877A, et j'ai plein de LF, mais c'est pas les mêmes.
Après avoir installé le bootloader, parce que pour le moment le seul 16F877 qui me restait a rendu l'âme, il reste un 16F876, pourvu qu'il tienne. Pas facile de retrouver ses marques. Difficile d'en trouver des 16F877 à bon prix, dans les musées peut-être, j'ai peur d'en demander à Microchip, ils vont me jeter des pierres. On trouve surtout des 16F877A, et j'ai plein de LF, mais c'est pas les mêmes.
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
LCD origine inconnu
Merci, pas la peine, j'en ai commandé un, juste pour en avoir un, ne pas avoir de 16F877, non mais :)
Les 16F87X je les faisais tourner avec le bootloader à 16MHz et 38400 bauds, avec une sortie debug bit bang à 57600 bauds.
J'ai passé le 16F876 à 4MHz et il se charge bien à 19200 bauds.
Je regarderai ton programme demain.
Les 16F87X je les faisais tourner avec le bootloader à 16MHz et 38400 bauds, avec une sortie debug bit bang à 57600 bauds.
J'ai passé le 16F876 à 4MHz et il se charge bien à 19200 bauds.
Je regarderai ton programme demain.
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
LCD origine inconnu
-
nondediode
Amateur- Messages : 148
- Enregistré en : novembre 2018
- Localisation : Lyon
LCD origine inconnu
LCD origine inconnu
LCD origine inconnu
-
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 1 invité