51单片机编写按键程序

编写程序,按键a,启动秒表,从0开始显示时间秒,每秒+1,循环显示范围0-59


        ORG 0000H
        AJMP MAIN
        ORG 0003H
        AJMP KEY1
        ORG 0013H
        AJMP KEY2
        ORG 001BH
        AJMP TIMER1
        ORG  0100H
MAIN:     
        LCALL INIT
MAIN1:  
        LCALL BCD
        LCALL DISPLAY
        AJMP MAIN1
        
INIT:    MOV TMOD,#10H   
        MOV TH1,#HIGH(-10000)
        MOV TL1,#LOW(-10000)
        SETB TR1
        SETB IT0      
        SETB IT1
        MOV IE,#8DH  
        
        MOV R7, #0    
        MOV 40H,#59 
        MOV 41H,#50
        RET
        
KEY1:    CLR TR1
        INC 40H
        MOV A,40H
        CJNE A,#60,KEND1
        MOV 40H,#0
KEND1:    
        LCALL DELAY1  
        SETB TR1 
        RETI
        
KEY2:    CLR TR1 
        INC 41H
        MOV A,41H
        CJNE A,#60,KEND2
        MOV 41H,#0
KEND2:    
        LCALL DELAY1
        SETB TR1
        RETI
        
TIMER1:    
        INC R7
        MOV TH1,#HIGH(-10000)
        MOV TL1,#LOW(-10000)
        
        CJNE R7,#100,CLEND  
        MOV R7,#0          
        
        INC 41H
        MOV A,41H
        
        CJNE A,#60,CLEND    
        MOV 41H,#0            
        INC 40H         
        MOV A,40H
        CJNE A,#60,CLEND
        MOV 40H,#0        
CLEND:  RETI

BCD:    MOV A,40H 
        MOV B,#10
        DIV AB
        MOV 30H,A
        MOV 31H,B
        
        MOV A,41H ;S
        MOV B,#10
        DIV AB
        MOV 32H,A
        MOV 33H,B
        RET
        
DISPLAY:
        MOV DPTR,#TAB
        MOV R0,#30H  
        MOV R1,#0EFH 
        MOV R2,#4    
DLOOP:
        MOV A,@ R0
        MOVC A,@ A+DPTR
        
        CJNE R0,#31H,NEXT
        ORL A,#80H 
        
NEXT:    
        MOV P0,A
        MOV P1,R1
        LCALL DELAY
        MOV P1,#0FFH
        
        INC R0  
        MOV A,R1
        RL A
        MOV R1,A
        DJNZ R2,DLOOP
        RET

DELAY:
        MOV R6,#50
        DJNZ R6,$
        RET    
DELAY1:
        MOV R6,#250
DE1:
        MOV R7,#250
        DJNZ R7,$
        DJNZ R6,DE1
        RET        
TAB: 
        DB 3fH,06H,5bH,4fH,66H,6dH,7dH,07H,7fH,6fH,40H

        END
-