Change autogen.sh script and rename test_files directory
[emu8051.git] / test-files / timer.asm
diff --git a/test-files/timer.asm b/test-files/timer.asm
new file mode 100644 (file)
index 0000000..aac4885
--- /dev/null
@@ -0,0 +1,179 @@
+;*******************************************************************************
+;*                Système d'Injection et d'Allumage Électronique               *
+;*                Version     : 01                                             *
+;*                Auteur      : Hugo Villeneuve                                *
+;*                                                                             *
+;*                10 mars 1999                                                 *
+;*******************************************************************************
+
+        $MOD52                  ; Micro-contrôleur Atmel AT89S8252
+
+
+;*******************************************************************************
+;*      Définition des constantes                                              *
+;*******************************************************************************
+
+TOS             EQU     60h     ; Adresse du dessus de la pile.
+CR              EQU     0Dh    ; Code ASCII pour un retour de chariot.
+LF              EQU     0Ah    ; Code ASCII pour un changement de ligne
+
+
+;*******************************************************************************
+;*      Définition des variables                                               *
+;*******************************************************************************
+                BSEG
+                ORG     20h
+C_FLAG:         DBIT    1
+Z_FLAG:         DBIT    2
+N_FLAG:                DBIT    3       ; Utilisé par la sous-routine MULT8_16
+SIGNE:         DBIT    4       ; Utilisé pour l'interpolation.
+
+                DSEG
+                ORG     30h
+PERIODE2:      DS      1       ; Période pour une rotation du vilebrequin, sur 24 bits.
+PERIODE1:       DS      1
+PERIODE0:       DS      1
+POSITION_VILB: DS      1       ; Renseignement sur la position actuelle du vilebrequin (zones 0,1 ou 2).
+VITESSE_RPM:   DS      2       ; Vitesse de rotation du moteur en RPM.
+INDEX_RPM:     DS      1       ; Index de 8 bits pour l'adressage des colonnes de la table d'allumage.
+INDEX_MAP:     DS      1       ; Index de 8 bits pour l'adressage des lignes de la table d'allumage.
+ANGLE:         DS      1       ; Angle d'allumage calculé à partir de la table.
+BAT:            DS      2       ; Voltage de la batterie.
+MAT:            DS      2       ; Manifold Air Temperature.
+CLT:            DS      2       ; Coolant Temperature.
+TPS:            DS      2       ; Throttle Position Sensor.
+MAP:            DS      2       ; Manifold Absolute Pressure.
+EGO:            DS      2       ; Exhaust Gas-Oxygen Sensor.
+CAN6:           DS      2       ; Canal #6 du convertisseur AN.
+CAN7:           DS      2       ; Canal #7 du convertisseur AN.
+GAMMA:          DS      2       ; Rapport Air/Carburant.
+LSB_CAN:        DS      1       ; Octet de poids faible de la conversion Analogique-Numérique.
+MSB_CAN:        DS      1       ; Octet de poids fort de la conversion Analogique-Numérique.
+NOMBRE4:        DS      1       ; Stockage des codes ASCII pour les conversions.
+NOMBRE3:        DS      1
+NOMBRE2:        DS      1
+NOMBRE1:        DS      1
+NOMBRE0:        DS      1
+C3:             DS      1       ; Accumulateur C de 32 bits pour les calculs mathématiques.
+C2:             DS      1
+C1:             DS      1
+C0:             DS      1
+D3:            DS      1       ; Accumulateur D de 32 bits pour les calculs mathématiques.
+D2:            DS      1
+D1:             DS      1
+D0:             DS      1
+TMP6:           DS      1       ; Variables temporaires utilisées pour les calculs mathématiques.
+TMP5:           DS      1      ; FAIRE LE MÉNAGE VARIABLES NON UTILISEES!!!
+TMP4:           DS      1
+TMP3:           DS      1
+TMP2:           DS      1
+TMP1:           DS      1
+TMP0:           DS      1
+VAR0:          DS      1
+VAR1:          DS      1
+VAR2:          DS      1
+
+
+;*******************************************************************************
+;*      Définition des régistres spécifiques au AT89S8252                      *
+;*******************************************************************************
+SPCR            DATA    0D5h            ; SPCR - SPI Control Register
+SPSR            DATA    0AAh            ; SPSR - SPI Status Register
+SPIF            EQU     10000000b       ; Masque pour le drapeau SPI.
+WCOL            EQU     01000000b       ; Masque pour le drapeau Write Collision.
+SPDR            DATA    086h            ; SPDR - SPI Data Register
+
+
+;*******************************************************************************
+;*      Vecteurs d'interruptions                                               *
+;*******************************************************************************
+        CSEG
+
+        ORG     0000h   ; Vecteur d'interruption du RESET.
+        JMP     DEBUT
+
+        ORG     0003h   ; Vecteur pour l'interruption EXTERNE 0.
+        JMP     VILEBREQUIN
+
+        ORG     000Bh   ; Vecteur pour l'interruption du TIMER 0.
+        JMP     DEBUT
+
+        ORG     0013h   ; Vecteur pour l'interruption EXTERNE 1.
+        JMP     DEBUT
+
+        ORG     001Bh   ; Vecteur pour l'interruption du TIMER 1.
+        JMP     DEBUT
+
+        ORG     0023h   ; Vecteur pour l'interruption du Port série.
+        JMP     DEBUT
+
+        ORG     002Bh   ; Vecteur pour l'interruption du TIMER 2.
+        JMP     DEBUT
+
+
+;*******************************************************************************
+;*      Début du programme principal                                           *
+;*******************************************************************************
+        ORG     0033h
+
+DEBUT:
+        MOV     SP,#TOS         ; Initialisation de la pile.
+        CALL    INITIALISATION
+        ; il ne faut pas modifier la valeur de P1.0!!!
+
+ICI:
+       NOP
+       NOP
+       NOP
+       NOP     
+
+        JMP     ICI
+
+
+;*******************************************************************************
+;*      Délai                                                                  *
+;*******************************************************************************
+DELAI:          MOV     TMP0,#016h      ; Délai de 1/2 seconde.
+B3:            MOV     A,#0    
+B2:            MOV     B,#0
+B1:            DJNZ    B,B1
+               DJNZ    ACC,B2  
+                DJNZ    TMP0,B3  
+                RET
+
+
+
+;*******************************************************************************
+;*      INTERRUPTION                                                           *
+;*******************************************************************************
+VILEBREQUIN:
+       RETI
+
+
+;*******************************************************************************
+;*      Initialisation                                                         *
+;*******************************************************************************
+INITIALISATION: MOV     SPCR,#01000100b ; Interruption SPI désactivée;
+                                       ; Activation du port SPI;
+                                       ; Ordre des transferts : MSB en premier;
+                                       ; Opération en mode escalve (SLAVE);
+                                        ; Polarité de l'horloge : niveau bas si inactif.
+                                       ; Phase de l'horloge : transfert sur front montant.
+       MOV     TH0,#2
+       MOV     TL0,#55h
+       SETB    TCON.4          ; Timer 0 ON.
+       SETB    TCON.6          ; Timer 1 ON.
+       MOV     TMOD,#00010001B ; Initialisation des timers 0 et 1 en timers de
+                               ; 16 bits, incrémentés par l'horloge interne
+                               ; Chaque timer est incrémenté tant que le bit correspondant de
+                               ; TCON est à 1 (TCON.4 et TCON.6).
+       RET
+
+
+
+        END
+
+
+
+
+