stopwatch design problem

Status
Not open for further replies.

bragas

Newbie level 5
Joined
Sep 29, 2010
Messages
8
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,354
hi all.ı try to write asm code for up-down(0000-9999) stopwatch with 8052.but ı have some problems about down stopwatch.can you offer a powerful algorithm for this problem?ı attached .hex .asm .dsn(proteus) files.you can see problem.for example; when you see 0130 in displays,open "up-down switch".displays will crazy :-? ı wait your helps.

Code:
		 		 OFF     EQU 0FFH
		 INIT    EQU 0EEH
		 DIGITS  EQU 04H
		 DISP    EQU P0
		 SEGS    EQU P1
		 DIGIT_1 EQU 20H
		 DIGIT_2 EQU 21H
		 DIGIT_3 EQU 22H
		 DIGIT_4 EQU 23H
		 COUNT1  EQU 24H 
		 COUNT2  EQU 24H
		 
		 ORG 0000H
		 LJMP SWATCH
		 
		 ORG     000BH
		 LJMP INT
		 
		 
		 ORG  0100H
SWATCH:   MOV DIGIT_1,#09H
		 MOV DIGIT_2,#09H
		 MOV DIGIT_3,#09H
		 MOV DIGIT_4,#09H
		 MOV COUNT1,#00H
		 MOV COUNT2,#00H




MAIN:    
		 MOV  TMOD,#01H  ;;16 BIT TIMER MOD-1 
                 MOV  TH0,#0CCH
		 MOV  TL0,#12H
		 MOV  IE,#82H
		 JB   P2.1,TIMER_OFF  ;FOR PAUSE BUTTON
		 SETB TR0  	 
		 SJMP DISPLAY
TIMER_OFF: CLR TR0
		
DISPLAY: MOV     B,#INIT
        
		 MOV     R2,#DIGITS
		 MOV 	 R0,#DIGIT_1
NEXT:	 MOV 	 DISP,#OFF
		 MOV     A,@R0
		 LCALL   LOOK_UP
		 MOV     SEGS,A
		 INC     R0
		 MOV     DISP,B
		 LCALL   DELAY
		 MOV     A,B
		 RL      A
		 MOV     B,A
		 DJNZ    R2,NEXT
		 LJMP MAIN
   
DELAY:   MOV     R7,#0AH 
		 MOV     R6,#00H
LOOP2:	 DJNZ    R6,LOOP2
		 DJNZ    R7,LOOP2
		 RET   

LOOK_UP: MOV     DPTR,#TABLE
         MOVC    A,@A+DPTR
         RET
        
         ORG     0300H
TABLE:   DB      3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,3FH
         
         
         
INT:                     MOV  TH0,#0CCH
		         MOV  TL0,#12H
			 CLR TF0
			 
			 JB   P2.0,DOWN ;FOR UP-DOWN BUTTON
		 
			 
UP:		         INC COUNT1
			 MOV A,COUNT1
			 SUBB A,#03H
			 JNZ  END1
			 MOV COUNT1,#00H
			 
			 INC DIGIT_1
			 
			 
			 MOV A,DIGIT_1
			 SUBB A,#0AH
			 JNZ  END1
        	         MOV DIGIT_1,#00H
        	 
        	         INC DIGIT_2
			 
			 
			 MOV A,DIGIT_2
			 SUBB A,#0AH
			 JNZ  END1
        	         MOV DIGIT_2,#00H
        	 
        	         INC DIGIT_3
			 
			 
			 MOV A,DIGIT_3
			 SUBB A,#0AH
			 JNZ  END1
        	         MOV DIGIT_3,#00H
        	 
        	         INC DIGIT_4
			 
			 
			 MOV A,DIGIT_4
			 SUBB A,#0AH
			 JNZ  END1
        	         MOV DIGIT_4,#00H
			 LJMP END1
 
 DOWN:                   INC COUNT2
			 MOV A,COUNT2
			 SUBB A,#03H
			 JNZ  END1
			 MOV COUNT2,#00H
			 
			 
			 DEC DIGIT_1
			 MOV A,DIGIT_1
			 SUBB A,#00H
			 JNZ  END1
        	         MOV DIGIT_1,#0AH
        	 
        	         DEC DIGIT_2
			 MOV A,DIGIT_2
			 SUBB A,#00H
			 JNZ  END1
        	         MOV DIGIT_2,#0AH 
        	 
        	         DEC DIGIT_3
			 MOV A,DIGIT_3
			 SUBB A,#00H
			 JNZ  END1
        	         MOV DIGIT_3,#0AH
        	 
        	         DEC DIGIT_4
			 MOV A,DIGIT_4
			 SUBB A,#00H
			 JNZ  END1
        	         MOV DIGIT_4,#0AH
        	 
			 LJMP END1
        
END1:
        RETI
        
        END
 

Attachments

  • up-down.stopwatch.rar
    17.4 KB · Views: 45

Status
Not open for further replies.

Similar threads

Cookies are required to use this site. You must accept them to continue using the site. Learn more…