1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
| * (gestion du carrefour PROGRAMME JOUR)
* pour 68HC811E2 ou E9
* EEPROM (adr $F800 à $FFFF), RAM de $0000 à $00FF (interne au 68HC11)
* Définition de la partie opérative
* PortC: Pc7 Pc6 Pc5 Pc4 Pc3 Pc2 Pc1 Pc0
* J N R2 O2 V2 R1 O1 V1
* J et N correspondent aux informations de l'inter 3 positions (Jour / Manuel / Nuit)
* J N = 0 1 indique position jour (J et N actifs à l'état bas)
* J N = 1 1 indique position manuelle
* J N = 1 0 indique la position nuit
* Les lampes représentatives des feux R2, O2, V2, R1, O1, V1 sont actives à l'état haut
* Pour la suite /IRQ sera utilisé pour le mode pas à pas
**************** CONSTANTES ***********
PortC equ $1003 ;Port C
DDRC equ $1007 ;Direction du port C
NT1 equ $2D6B ;Valeur tempo
NT2 equ $0006 ;
************** PROGRAMME PRINCIPAL *********************
ORG $F000 ; programme en EPROM
DEBUT Lds #$00FF ;Pile à la fin de la RAM
LDAA $3F
STAA DDRC
JOUR LDX #SEQ1
LDAA ,X ;Prend donnée pointée N1
SUIT1 STAA PortC ;COMMANDE DES DELS
INX
LDAB ,X ;LECTURE DE LA DUREE N2
PSHX ;sauvegarde de X car utilisé dans TEMPO
JSR TEMPO
PULX ;rappel du pointeur de donnée X
INX
LDAA $0,X
BNE SUIT1 ;FIN DE SEQUENCE SI OCTET NUL
BRA JOUR
;**********************************************************
TEMPO LDX #NT1 ;TEMPO DE DUREE (B = N2 secondes)
Bouc1 LDY #NT2
Bouc2 DEY
CPY #$0000
BNE Bouc2
DEX
CPX #$0000
BNE Bouc1
DECB
BNE TEMPO
RTS
;***********************************************************
SEQ1 fdb $2402 ;SEQUENCE DE JOUR
fdb $0C20
fdb $1403
fdb $2402
fdb $2120
fdb $2203
fcb $0000
;****************** vecteurs interruptions **************
RESET ORG $FFFE
FDB DEBUT
end |
Partager