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

📄 计时器78.asm

📁 计时器的设计
💻 ASM
字号:
ORG 0000H
   SETB EX1;外部中断允许
   CLR IT0 ;外部中断低电平有效
   SETB PX1;优先级为高
   MOV P0,#0C0H
   LCALL 2000H
ORG 0013H
       SETB  P2.5
START: MOV A,P1 ;读取p0口的数据
       JB  ACC.0,JS ;计时
       JB  ACC.1,TZ ;停止
       JB  ACC.2,QL ;清零
       SJMP START
;=================================================
;===================清零子程序====================
;=================================================
QL:    MOV   R0,#0
       MOV   R1,#0
       MOV   R2,#0
       MOV   R3,#0
       MOV   R4,#0
       MOV   P0,#0C0H
       MOV   P2,#0FFH
       SJMP  START
;=================================================
;===================停止子程序====================
;=================================================
TZ:    MOV     DPTR,#NUMTAB;百分之一秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.4
       CLR     P2.0
       MOV     P0,A
       CALL    DELAY2
    ;-----------------
       MOV     DPTR,#NUMTAB;十分之一秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.3
       CLR     P2.4
       MOV     P0,A
       CALL    DELAY2
    ;-----------------
       MOV     DPTR,#NUMTAB;秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.2
       CLR     P2.3
       MOV     P0,A
       CALL    DELAY2
    ;-----------------
       MOV     DPTR,#NUMTAB;十秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.1
       CLR     P2.2
       MOV     P0,A
       CALL    DELAY2
     ;--------------------
       MOV     DPTR,#NUMTAB;分显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.0
       CLR     P2.1
       MOV     P0,A
       CALL    DELAY2
       SJMP    TZ
DELAY2:    MOV  R6,#500
       DL1:MOV  R7,#2
           DJNZ  R7,$
           DJNZ  R6,DL1
           RET
;==============================================
;================开始子程序====================
;==============================================
JS:    MOV R0,#00H ;百分之一秒
       MOV R1,#00H ;十分之一秒
       MOV R2,#00H ;秒
       MOV R3,#00H ;十秒
       MOV R4,#00H ;分
;----------------------------
    L1:MOV     DPTR,#NUMTAB;百分之一秒显示   2个周期即2us
       MOV     A,R0                        ;          1us
       MOVC    A,@A+DPTR                   ;          2us
       SETB    P2.4
       CLR     P2.0                        ;          1us
       MOV     P0,A                        ;          1us
       CALL    DELAY                       ;  共      7us
    ;-----------------
       MOV     DPTR,#NUMTAB;十分之一秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.3
       CLR     P2.4
       MOV     P0,A
       CALL    DELAY
    ;-----------------
       MOV     DPTR,#NUMTAB;秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.2
       CLR     P2.3
       MOV     P0,A
       CALL    DELAY
    ;-----------------
       MOV     DPTR,#NUMTAB;十秒显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.1
       CLR     P2.2
       MOV     P0,A
       CALL    DELAY
     ;--------------------
       MOV     DPTR,#NUMTAB;分显示
       MOV     A,R0
       MOVC    A,@A+DPTR
       SETB    P2.0
       CLR     P2.1
       MOV     P0,A
       CALL    DELAY
       SJMP    L1
;------------------------------------
DELAY:    MOV  R6,#20  ;      1us
     DL2: MOV  R7,#0F8H   ;
          DJNZ  R7,$
          DJNZ  R6,DL2  ;      2us*495=990us
          INC R0        ;      1us
          CJNE R0,#10,L2;      2us 共4+7+990=1001us约为1ms
          INC R1
          MOV R0,#0
          CJNE R1,#10,L2
          INC R2
          MOV R1,#0
          CJNE R2,#10,L2
          INC R3
          MOV R2,#0
          CJNE R3,#10,L2
          INC R4
          SETB P2.5
          MOV R3,#0
          CJNE R4,#10,L2
          MOV R4,#0
       L2:CJNE R3,#5,L9
          CJNE R2,#9,L9
          CLR  P2.5
       L9:RET
  ;段数码管各划的数字排列表
NUMTAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;显示内容的对应代码
           ;0    1     2    3   4   5   6   7    8   9  ;显示内容

;--------------------------------------
ORG 2000H
L3: MOV     P2,#00H
  SETB      P2.0
  CLR       P2.4
    MOV     P0,A
    CALL    DELAY1
  SETB      P2.1
  CLR       P2.0
    MOV     P0,A
    CALL    DELAY1
  SETB      P2.2
  CLR       P2.1
    MOV     P0,A
    CALL    DELAY1
  SETB      P2.3
  CLR       P2.2
    MOV     P0,A
    CALL    DELAY1
  SETB      P2.4
  CLR       P2.3
    MOV     P0,A
    CALL    DELAY1
  SJMP L3
DELAY1:    MOV  R6,#10
       DL3:MOV  R7,#100
           DJNZ  R7,$
           DJNZ  R6,DL3
           RET

⌨️ 快捷键说明

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