⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 shizhong中断.txt

📁 用数码管做的一个时钟
💻 TXT
字号:
Z0 EQU 30H
Z1 EQU 31H
Z2 EQU 32H
Z3 EQU 33H
Z4 EQU 34H
Z5 EQU 35H
Z6 EQU 36H
Z7 EQU 37H


S1 BIT P2.0
S2 BIT P2.1
M1 BIT P2.2
M2 BIT P2.3
H1 BIT P2.4
H2 BIT P2.5

ORG 0000H      ;正确,查表法,中断
LJMP MAIN
ORG 000BH
LJMP INT_T0
ORG 0100H

MAIN: ; MOV PSW,#00H 
              MOV 30H,#00H
              MOV 31H,#00H
              MOV 32H,#10
              MOV 33H,#08H
              MOV 34H,#00H
              MOV 35H,#10
              MOV 36H,#08H
              MOV 37H,#00H      ;时钟初始定值
       MOV DPTR,#TAB
       MOV 10H,#0FEH 
       MOV R1,#37H 
       MOV R2,#0 
       MOV R3,#0       
       MOV R4,#0       

       MOV TMOD,#01H
       MOV TH0,#0F8H
       MOV TL1,#30H
       SETB TR0
       SETB ET0
       SETB EA
LP1: 
     JB S1,NS2     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB S1,NS2   ;再次判断,是转NK1,不是秒位加一
     JNB S1,$ 
     INC Z0
     MOV A,Z0
     CJNE A,#10,NS2
     MOV Z0,#00H
   ; JMP LP0

 NS2:
     JB S2,NM1     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB S2,NM1   ;再次判断,是转NK1,不是秒位加一
     JNB S2,$ 
     INC Z1
     MOV A,Z1
     CJNE A,#6,NM1
     MOV Z1,#00H
     ;JMP LP0

 NM1:
     JB M1,NM2     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB M1,NM2   ;再次判断,是转NK1,不是秒位加一
     JNB M1,$ 
     INC Z3
     MOV A,Z3
     CJNE A,#10,NM2
     MOV Z3,#00H
     ;JMP LP0

 NM2:
     JB M2,NH1     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB M2,NH1   ;再次判断,是转NK1,不是秒位加一
     JNB M2,$ 
     INC Z4
     MOV A,Z4
     CJNE A,#6,NH1
     MOV Z4,#00H
   ;  JMP LP0

 NH1:
     JB H1,NH2     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB H1,NH2   ;再次判断,是转NK1,不是秒位加一
     JNB H1,$ 
     INC Z6
     MOV A,Z6
     CJNE A,#10,NH2
     MOV Z6,#00H
    ; JMP LP0

 NH2:
     JB H2,HUI     
     LCALL DELY10MS    ;延时10MS,用于键盘消抖
     JB H2,HUI   ;再次判断,是转NK1,不是秒位加一
     JNB H2,$ 
     INC Z7
     MOV A,Z7
     CJNE A,#3,HUI
     MOV Z7,#00H
HUI: JMP LP1

DELY10MS:           ;延时10MS
  MOV 13H,#10
  D2: MOV 14H,#248
    DJNZ 14H,$
    DJNZ 13H,D2
   RET  

INT_T0:MOV TH0,#0F8H  
       MOV TL0,#30H  
       
       INC R2       
  
     MOV A,10H  
     MOV P3,A          
     MOV A,@R1
     MOVC A,@A+DPTR
     MOV P1,A    
   
     MOV A,10H    
     RL A      
     MOV 10H,A       
     DEC R1
   CJNE R2,#8,HUI1
      MOV R1,#37H
      MOV R2,#00H
 HUI1: INC R3     ;T2SCNTA初值为0,递加1
   MOV A,R3
   CJNE A,#100,DONE    ;扫描100次(内循环)
   MOV R3,#00H    ;为T2SCNTA清零
   INC R4
   MOV A,R4
   CJNE A,#05H,DONE    ;扫描500次
   MOV R4,#00H      ;清零

   INC Z0
   MOV A,Z0 
    CJNE A,#10,DONE
    MOV Z0,#0

    INC Z1
    MOV A,Z1
    CJNE A,#6,DONE
    MOV Z1,#0 
          
   INC Z3
   MOV A,Z3
   CJNE A,#10,DONE
   MOV Z3,#0

   INC Z4
   MOV A,Z4
   CJNE A,#6,DONE
   MOV Z4,#0           ;数字逢9或5加一

   INC Z6
   MOV A,Z7
   CJNE A,#2,LOP1
  
   MOV A,Z6
   CJNE A,#4,DONE
    SJMP LOP3              ;判断是否到24点

LOP1:  MOV A,Z6
       CJNE A,#10,DONE
         MOV Z6,#0             

LOP2: INC Z7
      MOV A,Z7
      CJNE A,#3,DONE
  ; DONE:  LJMP DONE
LOP3:   MOV 30H,#00H
        MOV Z1,#00H
        MOV Z2,#10
        MOV Z3,#00H
        MOV Z4,#00H
        MOV Z5,#10
        MOV Z6,#00H
        MOV Z7,#00H           ;时钟归零,从零时记起
  
DONE:  RETI   
    
 

TAB: DB 03FH,06H,05BH,04FH,66H,06DH,07DH,07H,07FH,06FH,40H

    


END





⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -