Chronomètre Assembleur 68000
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

Chronomètre Assembleur 68000



  1. #1
    invite59fa943d

    Chronomètre Assembleur 68000


    ------

    Bonjour à tous,

    J'ai un problème avec mon chronomètre en assembleur, quelqu'un pourrait m'aider s'il vous plaît ?
    Cordialement et merci beaucoup d'avance.

    Ce qu'il ne va pas ? Deux choses :
    - Quand on appuie sur les touches ça a souvent du mal...
    - Quand on appuie sur CTRL pour stopper les chronomètres ça ne fonctionne pas pourtant si on fait pas-à-pas ça marche très bien.

    Par contre :tout marche bien car j'ai un code qui m'affiche l'heure et il marche très bien donc affchiff, affheure etc fonctionnent bien.

    Voici les codes que j'ai écrit :

    Liens supprimés

    -----
    Dernière modification par JPL ; 26/12/2012 à 17h13.

  2. #2
    JPL
    Responsable des forums

    Re : Chronomètre Assembleur 68000

    Les liens vers des serveurs extérieurs ne sont pas acceptés pour les documents personnels. Merci d'utiliser les pièces jointes ou mieux, pour des programmes pas trop longs, l'insertion dans le message grâce à la balise Code (#).
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  3. #3
    invite59fa943d

    Re : Chronomètre Assembleur 68000

    Bonjour,

    Vous pouvez tester heure, il fonctionne bien donc affchiff, calcheure etc fonctionnent bien.

    Comme vous voudrez :

    Code:
    *-----------------------------------------------------------
    * Program    : heure
    * Written by : Étienne Wattebled et Hamida Sidi Saïd Omar
    * Date       :
    * Description:
    *------------- ----------------------------------------------
    	ORG	$1000
    START:
    	MOVE.L #$03000100,D1
    	JSR RESOLUTION
    HORLOGE:
    	JSR GET_TIME
    	JSR calcheure
    	JSR AFFHEURE
    	BRA HORLOGE
    	BRA FINPRG
    	include "affheure.X68"
    	include "biblio.X68"
    	include "calcheure.X68"
    	INCLUDE "bibgraph.X68"
    	INCLUDE "bibperiph.X68"
    	INCLUDE "affchiff.X68"
    UH: DS.W 1
    DH: DS.W 1
    UM: DS.W 1
    DM: DS.W 1
    US: DS.W 1
    DS: DS.W 1
    UC: DS.W 1
    DC: DS.W 1
    X1: DS.W 1
    Y1: DS.W 1
    X2: DS.W 1
    Y2: DS.W 1
    	END	START
    
    
    
    *-----------------------------------------------------------
    * Program    :
    * Written by :
    * Date       :
    * Description:
    *-----------------------------------------------------------
    	ORG	$1000
    START:				; first instruction of program
    
    
    	ORG	$1000
    START:
    	MOVE.L #$03000100,D1
    	JSR RESOLUTION
    MISEAZERO:
    	CLR.L TEMPSREPRISE
    	CLR.L D1
    	CLR.L D2
    	CLR.L D3
    	CLR.L D4
    	JSR AFFHEURE
    	JSR GET_TIME
    	MOVE.L D1,DEBUTCHRONO
    	CLR.L D1
    	JSR GET_MOUSE
    	AND.B #$01,D0
    	CMP.B #$00,D0
    	BNE CHRONO
    	BRA MISEAZERO
    CHRONO:
    	CLR.L TEMPSREPRISE
    	JSR GET_TIME
    	SUB.L DEBUTCHRONO,D1
    	JSR CALCHEURE
    	JSR AFFHEURE
    	CLR.L D0
    	CLR.L D1
    	CLR.L D2
    	CLR.L D3
    	CLR.L D4
    	JSR GET_MOUSE
    	AND.B #$02,D0
    	CMP.B #$00,D0
    	BNE STOP
    	BRA CHRONO
    STOP:
    	JSR GET_TIME
    	MOVE.L D1,TEMPSREPRISE
    STOPSECONDAIRE:
    	CLR.L D0
    	CLR.L D1
    	JSR GET_MOUSE
    	MOVE.B D0,D1
    	AND.B #$02,D0
    	CMP.B #$00,D0
    	BNE MISEAZERO
    	AND.B #$01,D1
    	CMP.B #$00,D1
    	BNE REPRISE		
    	BRA STOPSECONDAIRE
    REPRISE:
    	JSR GET_TIME
    	SUB.L TEMPSREPRISE,D1
    	MOVE.L D1,TEMPSREPRISE
    	MOVE.L DEBUTCHRONO,D1
    	ADD.L TEMPSREPRISE,D1
    	MOVE.L D1,DEBUTCHRONO
    	BRA CHRONO
    CFIN:
    	BRA FINPRG
    	include "bibperiph.X68"
    	include "biblio.X68"
    	include "affheure.X68"
    	include "calcheure.X68"
    	INCLUDE "bibgraph.X68"
    	INCLUDE "affchiff.X68"
    X1: DS.W 1
    Y1: DS.W 1
    X2: DS.W 1
    Y2: DS.W 1
    UH: DS.W 1
    DH: DS.W 1
    UM: DS.W 1
    DM: DS.W 1
    US: DS.W 1
    DS: DS.W 1
    UC: DS.W 1
    DC: DS.W 1
    DEBUTCHRONO: DS.L 1
    TEMPSREPRISE: DS.L 1
    	END	START
    
    
    *-----------------------------------------------------------
    * Program    : heure à un instant t
    * Written by :
    * Date       :
    * Description:
    *-----------------------------------------------------------
    CALCHEURE:	
    	; D1 nous servira pour les heures
    	; D2 nous servira pour les minutes
    	; D3 nous servira pour les secondes
    	; D4 nous servira pour les centièmes secondes
    	; On doit d'abord gérer les minutes à cause des dépassements car DIVU donne le résultat en 2*16bits.
    	DIVU #6000,D1
    	MOVE.L D1,D3
    	AND.L #$0000FFFF,D1
    	DIVU #60,D1
    	MOVE.L D1,D2
    	AND.L #$0000FFFF,D1
    	AND.L #$FFFF0000,D2
    	SWAP D2
    	AND.L #$FFFF0000,D3
    	SWAP D3
    	DIVU #100,D3
    	MOVE.L D3,D4
    	AND.L #$0000FFFF,D3
    	AND.L #$FFFF0000,D4
    	SWAP D4
    	RTS
    
    
    
    
    
    
    *-----------------------------------------------------------
    * Program    : bibperiph
    * Written by : Étienne et Hamida
    * Date       : Hardware
    * Description: bibliothèque périphériques
    *-----------------------------------------------------------
    			
    HARDWARE:
    	MOVE #32,D0
    	TRAP #15
    	RTS
    RESOLUTION:
    	MOVE #33,D0
    	TRAP #15
    	RTS
    GET_MOUSE:
    	MOVE #61,D0
    	TRAP #15
    	RTS
    MOUSE_IRQ:
    	MOVE #60,D0
    	TRAP #15
    	RTS
    
    
    
    
    
    *-----------------------------------------------------------
    * Program    : biblio
    * Written by : Étienne et Hamida
    * Date       : 05/11/2012
    * Description: AFFCAR + SAISCAR + FINPRG
    *-----------------------------------------------------------
    
    AFFCAR:
    	MOVE #6,D0
    	TRAP #15
    	RTS
    SAISCAR:
    	MOVE #5,D0
    	TRAP #15
    	RTS
    FINPRG:
    	MOVE #9,D0
    	TRAP #15
    	RTS
    GET_TIME:
    	MOVE #8,D0
    	TRAP #15
    	RTS
    POS_CURS:
    	MOVE #11,D0
    	TRAP #15
    	RTS
    GET_AFFCHAR:
    	MOVE #22,D0
    	TRAP #15
    	RTS
    
    
    *-----------------------------------------------------------
    * Program    : bibgraph
    * Written by : Étienne et Hamida
    * Date       : 20/11/2012
    * Description: bibliothèque de graphes
    *-----------------------------------------------------------
    SET_PEN_COLOR:
    	MOVE #80,D0
    	TRAP #15
    	RTS
    SET_FILL_COLOR:
    	MOVE #81,D0
    	TRAP #15
    	RTS
    DRAWPIX:
    	MOVE #82,D0
    	TRAP #15
    	RTS
    GET_PIX_COLOR:
    	MOVE #83,D0
    	TRAP #15
    	RTS
    DRAW_LINE:
    	MOVE #84,D0
    	TRAP #15
    	RTS
    DRAW_TO:
    	MOVE #85,D0
    	TRAP #15
    	RTS
    MOVE_TO:
    	MOVE #86,D0
    	TRAP #15
    	RTS
    DRAW_FILL_RECT:
    	MOVE #87,D0
    	TRAP #15
    	RTS
    DRAW_FILL_ELLIPSE:
    	MOVE #88,D0
    	TRAP #15
    	RTS
    POT_DE_PEINTURE:
    	MOVE #89,D0
    	TRAP #15
    	RTS
    DRAW_RECT:
    	MOVE #90,D0
    	TRAP #15
    	RTS
    DRAW_ELLIPSE:
    	MOVE #91,D0
    	TRAP #15
    	RTS
    WIDTH_PEN:
    	MOVE #93,D0
    	TRAP #15
    	RTS
    DRAW_STRING:
    	MOVE #95,D0
    	TRAP #15
    	RTS
    SWAP_SCREEN:
    	MOVE #94,D0
    	TRAP #15
    	RTS
    DRAW_MODE:
    	MOVE #92,D0
    	TRAP #15
    	RTS
    
    *-----------------------------------------------------------
    * Program    : Affichage heure
    * Written by : Étienne Wattebled Hamida Sidi Saïd Omar
    * Date       :
    * Description: affichage de l'heure
    *-----------------------------------------------------------
    AFFHEURE:
    	DIVU #10,D1
    	SWAP D1
    	DIVU #10,D2
    	SWAP D2
    	DIVU #10,D3
    	SWAP D3
    	DIVU #10,D4
    	SWAP D4
    	MOVE.W D1,UH
    	SWAP D1
    	MOVE.W D1,DH
    	MOVE.W D2,UM
    	SWAP D2
    	MOVE.W D2,DM
    	MOVE.W D3,US
    	SWAP D3
    	MOVE.W D3,DS
    	MOVE.W D4,UC
    	SWAP D4
    	MOVE.W D4,DC
    	MOVE.B #17,D1
    	JSR DRAW_MODE
    	MOVE.L #$00000000,D1
    	JSR SET_FILL_COLOR
    	JSR SET_PEN_COLOR
    	MOVE.W #$0055,D1
    	MOVE.W #$00BB,D2
    	MOVE.W X2,D3
    	MOVE.W Y2,D4
    	JSR DRAW_FILL_RECT
    	MOVE.L #$0055FF00,D1
    	JSR SET_PEN_COLOR
    	MOVE.W #$0055,X1
    	MOVE.W #$00BB,Y1
    	CLR X2
    	CLR Y2
    	MOVE.W X1,X2
    	ADD.W #40,X2
    	MOVE.W Y1,Y2
    	ADD.W #80,Y2
    	MOVE.W DH,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W UH,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W DM,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W UM,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W DS,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W US,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W DC,D0
    	JSR AFFCHIFF
    	ADD.W #50,X1 
    	ADD.W #50,X2
    	MOVE.W UC,D0
    	JSR AFFCHIFF
    	JSR SWAP_SCREEN
    	RTS
    
    
    
    *-----------------------------------------------------------
    * Program    : Afficher un chiffre
    * Written by : Étienne Wattebled et Hamida Sidi Saïd Omar
    * Date       :
    * Description:
    *-----------------------------------------------------------
    
    AFFCHIFF:
    	CMP #0,D0
    	BEQ ZERO
    	CMP #1,D0
    	BEQ UN
    	CMP #2,D0
    	BEQ DEUX
    	CMP #3,D0
    	BEQ TROIS
    	CMP #4,D0
    	BEQ QUATRE
    	CMP #5,D0
    	BEQ CINQ
    	CMP.B #6,D0
    	BEQ SIX
    	CMP #7,D0
    	BEQ SEPT
    	CMP #8,D0
    	BEQ HUIT
    	CMP #9,D0
    	BEQ NEUF
    	BRA DEUXPOINTS
    ZERO:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	MOVE.W X2,D1
    	MOVE.W Y2,D2
    	JSR DRAW_LINE
    	MOVE.W X1,D3
    	MOVE.W Y2,D4
    	JSR DRAW_LINE
    	MOVE.W X1,D1 
    	MOVE.W Y1,D2
    	JSR DRAW_LINE
    	BRA FIN
    UN:
    	MOVE.W X2,D1
    	MOVE.W Y2,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	BRA FIN
    DEUX:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W D1,D3
    	MOVE.W Y1,D4
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W X2,D1
    	MOVE.W X2,D3
    	SUB.W #40,D2
    	SUB.W #40,D4
    	JSR DRAW_LINE
    	BRA FIN
    TROIS:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W X2,D1
    	MOVE.W Y2,D2
    	MOVE.W X2,D3
    	MOVE.W Y2,D4
    	SUB.W #80,D4
    	JSR DRAW_LINE
    	BRA FIN
    QUATRE:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X1,D3
    	MOVE.W Y2,D4
    	SUB.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	ADD.W #40,D4
    	ADD.W #40,D2
    	JSR DRAW_LINE
    	BRA UN	
    CINQ:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W D3,D1
    	MOVE.W D4,D2
    	SUB.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X1,D3
    	MOVE.W Y1,D4
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	BRA FIN
    SIX:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X1,D3
    	MOVE.W Y2,D4
    	JSR DRAW_LINE
    	MOVE.W X2,D1
    	MOVE.W Y2,D2
    	MOVE.W X2,D3
    	MOVE.W Y2,D4
    	SUB.W #40,D2
    	JSR DRAW_LINE
    	BRA FIN	
    SEPT:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	JSR DRAW_LINE
    	BRA UN
    HUIT:	
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y1,D4
    	ADD.W #40,D2
    	ADD.W #40,D4
    	JSR DRAW_LINE
    	BRA ZERO
    NEUF:
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X1,D3
    	MOVE.W Y1,D4
    	ADD.W #40,D2
    	JSR DRAW_LINE
    	BRA TROIS
    DEUXPOINTS: 
    	MOVE.L #$00FFAA00,D1
    	JSR SET_FILL_COLOR
    	JSR SET_PEN_COLOR
    	MOVE.W X1,D1
    	MOVE.W Y1,D2
    	MOVE.W X2,D3
    	MOVE.W Y2,D4
    	ADD.W #20,D1
    	ADD.W #60,D2
    	SUB.W #10,D3
    	SUB.W #10,D4
    	JSR DRAW_FILL_ELLIPSE
    	SUB.W #40,D2
    	SUB.W #60,D4
    	JSR DRAW_FILL_ELLIPSE
    	MOVE.L #$0055FF00,D1
    	JSR SET_PEN_COLOR
    	BRA FIN	
    FIN:
    	RTS

Discussions similaires

  1. Assembleur 68000 aide pour devoir
    Par invitec1fb11ca dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 30/03/2009, 19h07
  2. chronométre
    Par invite87a94f89 dans le forum Électronique
    Réponses: 25
    Dernier message: 24/02/2009, 21h12
  3. [Livre] Architecture/programmation Motorola 68000 (HCS12)
    Par invite0e12517b dans le forum Électronique
    Réponses: 1
    Dernier message: 20/01/2009, 19h33
  4. cpu 68000
    Par zirga dans le forum Électronique
    Réponses: 0
    Dernier message: 21/10/2005, 16h54
  5. FAC D'ECO de Strasbourg (68000)
    Par invitee5b5b8d9 dans le forum Orientation après le BAC
    Réponses: 1
    Dernier message: 04/07/2005, 20h05