Etape 5: programmation
; P0.0 = M1 AVANT RELAIS
; P0.1 = RELAIS INVERSE M1
; P0.2 = M2 AVANT RELAIS
; P0.3 = RELAIS INVERSE M2
; P0.4 = RELAIS AVANT M3
; P0.5 = RELAIS INVERSE M3
; P0.6 = RELAIS AVANT M4
; P0.7 = RELAIS INVERSE M4
;
; P0.0 = D0 LCD
; P0.0 = LCD D1
; P0.0 = D2 LCD
; P0.0 = LCD D3
; P0.0 = LCD D4
; P0.0 = LCD D5
; P0.0 = LCD D6
; P0.0 = LCD D7
;
; P2.0 = VENTILATEUR
; P2.1 =
; P2.2 = COMMUTATEUR DE LIMITE 1
; P2.3 = DONNÉES REÇUES
; P2.4 = DONNÉES REÇUES LSB
; P2.5 = DONNÉES REÇUES LSB + 1
; P2.6 = LES DONNÉES REÇUES LSB + 2
; P2.7 = MSB DE DONNÉES REÇUES
;
; P3.0 =
; P3.1 =
; P3.2 = LCD RS
; P3.3 = LCD R/W
; P3.4 = LCD E
; 3.5 =
; P3.6 =
; 3,7 =
; Programme commence ici
ORG 0000H ; DÉBUT
MOV P0, #00 H
MOV P2, #OFOH
SETB P2.3
MOV DPTR, #COMM1 ; REGISTRE DE COMMANDE
UPI: CLR ; INITIALISER Le COMM1 STRING
MOVC A,
DPTR INC
CJNE A, # « $», COMMAND1
ICI :
MOV A, #80 H ; ADRESSE DE DÉPART DE LA LIGNE 1
UNAPPEL COMMANDE
MOV DPTR, #DATA 1 ; AFFICHER LES DONNÉES
LCALL LINE_DISPLAY_ROLL
HERE1 :
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA2
LCALL LINE_DISPLAY
LCALL CHECK_INPUT
CJNE A, #00 H, NEXT1
MOV P0, 05 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA3
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
COMMAND1 : COMMANDE D’UNAPPEL
AJMP UP1
NEXT1 :
CJNE A, #01 H, NEXT2
MOV P0, 0AH #
LCALL RETARD
LCALL RETARD
MOV A, 0C0H ## ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, # DONNÉES4
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT2 :
CJNE A, #02 H, NEXT3
MOV P0, 09 H
LCALL RETARD
LCALL RETARD
MOV A, #OCOH ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA5
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT3 :
CJNE A, #03 H, NEXT4
MOV P0, 06 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, # INNOCUITÉ6
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT4 :
CJNE A, #04 H, NEXT5
MOV P0, #10 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, # DONNÉE7
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT5 :
CJNE A, 05 H, NEXT6
MOV P0, #20 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, # ÉTUDE8
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT6 :
CJNE A, 06 H, NEXT7
MOV P0, #40 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA9
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT7 :
CJNE A, 07 H, NEXT8
MOV P0, #80 H
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA10
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT8 :
CJNE A, 08 H, NEXT9
SETB P2.0;(CONDITIONAL.. SI L’AJOUT DE FONCTIONNALITÉS SUPPLÉMENTAIRES)
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, #DATA11
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXT9 :
CJNE A, 09 H, NEXTA
CLR P2.0 ; (CONDITIONNEL... SI L’AJOUT DE FONCTIONNALITÉS SUPPLÉMENTAIRES)
LCALL RETARD
LCALL RETARD
MOV A, #0C0H ; ADRESSE DE DÉPART DE LA LIGNE 2
UNAPPEL COMMANDE
MOV DPTR, # DONNÉES12
LCALL LINE_DISPLAY
LCALL CHECK_KEY_RELEASE
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
NEXTA :
LJMP HERE1 ; BOUCLE ICI APRÈS L’AFFICHAGE
LINE_DISPLAY :
CLR A
MOVC A,
DPTR INC
CJNE A, # « $», NOM1
RET
NOM1 : UNAPPEL AFFICHAGE
AJMP LINE_DISPLAY
LINE_DISPLAY_ROLL :
LCALL RETARD
CLR A
MOVC A,
DPTR INC
CJNE A, # « $», DISPLAY11
RET
DISPLAY11 : UNAPPEL AFFICHAGE
AJMP LINE_DISPLAY_ROLL
DÉLAI : MOV R7, #0FFH
LOOP1 : MOV R6, #0FFH
BOUCLE : DJNZ R6, BOUCLE
DJNZ R7, LOOP1
RET
;************************************************************************************************
; COMMANDE DE STROBOSCOPE LCD
COMMANDE : UNAPPEL PRÊT ; ÉCRIRE QUAND L’AFFICHAGE N’EST PAS OCCUPÉ
MOV P1, A ; CARACTÈRE DE COMMANDE EN PORT P1
CLR P3.2 ; COMMANDE REGISTRE CHOISI
P3.3 CLR ; ÉCRIRE À ACTIVER
SETB P3.4 ; STROBOSCOPE CARACTÈRE D’AFFICHE
CLR P3.4
RET ; RETOUR
;************************************************************************************************
AFFICHAGE : UNAPPEL PRÊT
MOV P1, A ; RÉCUPÉRER DES DONNÉES À AFFICHER
SETB P3.2; PS = P3.2 = 1 AU REGISTRE DE DONNÉES SELECT
P3.3 CLR ; ÉCRIRE À ACTIVER
SETB P3.4 ; STROBOSCOPE CARACTÈRE D’AFFICHE
CLR P3.4
RET ; RETOUR
;************************************************************************************************
PRÊT : CLR P3.4 ; STROBOSCOPIQUE
MOV P1, #0FFH ; CONFIGURER LA P1 POUR L’ENTRÉE
CLR P3.2 ; REGISTRE DE COMMANDE SELECT
SETB P3.3 ; LU ENABLE
ATTENTE : CLR P3.4 ; STROBOSCOPIQUE
SETB P3.4
JB P1.7, ATTENTE ; LECTURE DE STATUT OCCUPÉ (BF = 0)
CLR P3.4 ; FIN AFFICHAGE STROBE.
RET ; RETOUR
; ************************************************************************************************
COMM1: DB 3CH, 0EH, 06, 01H, « $»
DATA1: DB « DE BEBIL-ROBOT, $»
DATA2: DB « INSTRUCTABLES, $»
DATA3: DB « AVANT $»
DATA4: DB « EN ARRIÈRE $»
RÉCENTES5: DB « LEFT $»
INNOCUITÉ6: DB « RIGHT $»
DONNÉE7: DB « CAMÉRA GAUCHE $»
ÉTUDE8: DB « CAMÉRA DROITE $»
DONNÉES9: DB « CAMERA $ »
DATA10: DB « CAMÉRA VERS LE BAS DE $»
DATA11: DB « OPTIONNEL $»
DONNÉES12: DB « OPTIONNEL $»
CHECK_INPUT :
MOV P2, #0F0H
SETB P2.3
JB P2.3, READ_INPUT
NOP
SJMP CHECK_INPUT
READ_INPUT :
MOV P0, #00 H
LCALL RETARD
MOV, P2
ANL, 0F0H #
SWAP A
RET
CHECK_KEY_RELEASE :
SETB P2.3
NOP
JB P2.3, CHECK_KEY_RELEASE
SETB P2.3
MOV P0, #00 H
RET