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

📄 f24timer1.asm

📁 这是我用汇编语言编写的计时器程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
         JZ    PCUNLOCK0
         MOV SO_HEAD_PC,#40H
         RET
 PCUNLOCK0:CLR    BIT_HF
         SETB   BIT_JS
         MOV    TIMEJS,#0
         clr    JK2;lamp off
         MOV SO_HEAD_PC,#40H
         RET
;--------
PCYUANORR:MOV   A,43H
         JNZ    PCYUANORR1
         CLR    JK2;lamp off
         clr       bit_yuanbj
         MOV SO_HEAD_PC,#40H
         RET
 PCYUANORR1:SETB    JK2;orr;lamp on
         setb       bit_yuanbj
         MOV SO_HEAD_PC,#40H
         RET
;--------
PCTIMERstop:CLR       BIT_TDOWNSTAR
        MOV     DISPT1,#0
        MOV     DISPT2,#0
        MOV     DISPT4,#0
        MOV     DISPT5,#0
        LCALL   FATCH_DISPB
	LCALL   DISPTMB		;清显示
        MOV SO_HEAD_PC,#40H
             RET
;*****************************
;calculate time and display
;*****************************
CALCULATETM:JB  BIT_TDOWNSTAR,_TDOWNSTAR
           RET
 _TDOWNSTAR:JB   BIT_TIMECH,CALTMCHANGE
           RET
CALTMCHANGE:CLR  BIT_TIMECH
           ;MOV  TIME60,#0
           ;JNB   BIT_TIMEDOWN,CALTMCHANGEUP
;-----------
CALTMCHANGEDOWN:MOV      A,TIMEH
           JNZ   CALTM_DOWN0
           MOV      A,TIMEL
           JNZ   CALTM_DOWN0
           SETB  BIT_SPK
           SETB  SPK_ST
           MOV   TIMESPK,#0
           CLR   BIT_TDOWNSTAR
           RET
 CALTM_DOWN0:MOV  A,TIMEL
           JZ     CALTM_DOWN1
           DEC    TIMEL
           MOV    A,TIMEL
           MOV    B,#10
           DIV    AB
           MOV    DISPT4,A
           MOV    DISPT5,B
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           RET
CALTM_DOWN1:MOV TIMEL,#59
           MOV    A,TIMEL
           MOV    B,#10
           DIV    AB
           MOV    DISPT4,A
           MOV    DISPT5,B
           DEC    TIMEH
           MOV    A,TIMEH
           MOV    B,#10
           DIV    AB
           MOV    DISPT1,A
           MOV    DISPT2,B
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           RET
;----------
 CALTMCHANGEUP:MOV      A,TIMEL
           CJNE   A,#59,CALTM_UP0
  CALTM_UP0:JNC   CALTM_UP1
           INC    TIMEL
           MOV    A,TIMEL
           MOV    B,#10
           DIV    AB
           MOV    DISPT4,A
           MOV    DISPT5,B
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           RET
  CALTM_UP1:MOV TIMEL,#0
            INC TIMEH
            MOV A,TIMEH
           CJNE A,#59,CALTM_UP2
  CALTM_UP2:JNC   CALTM_UP3
            INC   TIMEH
           MOV    A,TIMEH
           MOV    B,#10
           DIV    AB
           MOV    DISPT1,A
           MOV    DISPT2,B
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           RET
  CALTM_UP3:MOV TIMEH,#0
            MOV TIMEL,#0
           MOV    DISPT1,#0
           MOV    DISPT2,#0
           LCALL  FATCH_DISPB
           MOV    DISPT4,#0
           MOV    DISPT5,#0
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           RET
;--------------------------
;fatch dispma in dispb index dispt
;--------------------------
FATCH_DISPB:MOV  R0,#DISPT1
            MOV  R1,#DISPB1
            MOV  R7,#5
 FATCHDISPBL:MOV  A,@R0
            MOV  DPTR,#DISPBMB
            MOVC A,@A+DPTR
            MOV  @R1,A
            INC  R0
            INC  R1
            DJNZ R7,FATCHDISPBL
            RET

DISPBMb:;fdgeacbdp yang
       DB 21H,0F9H,85H,91H,59H,
       DB 13H,3H,0F1H,1H,11H,0DFH
;--------------------------
;display time in dispb1-5
;xx-xx
;--------------------------
DISPTMB: PUSH    PSW
         PUSH    ACC
        SETB    RS1
        CLR     RS0
        MOV	R3,#5			;4*8=32/2=16路继电器
	MOV	R1,#DISPB1		;存放的起始地址
DISPTMB11:MOV	A,@R1
	MOV     	R2,#8			;每字节8个数据位
DISPTMB12:RLC     	A
        MOV	DSPDATA,C
	SETB	DSPCLK
	NOP
	NOP
	NOP
	NOP
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	CLR	DSPCLK
        NOP
	NOP
	NOP
	NOP
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	DJNZ    R2,DISPTMB12
	INC     R1
	DJNZ    R3,DISPTMB11
	CLR     DSPSTR			;加载位
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	NOP
        NOP
        NOP
	SETB     DSPSTR			;加载位
         POP     ACC
         POP     PSW
         RET
;*******************************
;DELAY SPEAKER HFLOCK
;*******************************
DELY:
DELY2:	MOV	B,#0F0H
DELY1:	DJNZ	B,DELY1
  	RET
;-------
SPEAKER:JB     BIT_SPK,SPEAKER0
        CLR     spk
        RET
SPEAKER0:;CLR    BIT_SPK
        SETB     spk_ST
        SETB     spk
        LCALL    DELY
        RET
;-------
HFLOCK:JNB      BIT_HF,HFLOCKS
       CLR      JK1;P1.3 on
       RET
HFLOCKS:SETB    JK1;P1.3  off
        RET
;-------
CHECK_BJ:;JB    BIT_CHSTAR,CHECK_BJST
         ;RET
CHECK_BJST:MOV   A,P0
         MOV   R0,A
         LCALL DELAY10MS
         LCALL DELAY10MS
         LCALL DELAY10MS
         LCALL DELAY10MS
         MOV   A,P0
         XRL   A,R0
         JZ    CHECKBJ
         RET;CPL   A
  CHECKBJ:MOV      A,R0
         ANL    A,#07H
         JZ    CHECK_BJ0
 CHECK_BJ1:JB  BIT_CT2DA,CHECK_BJ2
         JNB    ACC.0,CHECK_BJ2
         SETB    JK2;wrong lamp on
         RET
 CHECK_BJ2:JB  BIT_CT2DB,CHECK_BJ3
         JNB    ACC.1,CHECK_BJ3
         SETB    JK2;wrong lamp on
         RET
 CHECK_BJ3:JB  BIT_CT2DC,CHECK_BJ0
         JNB    ACC.2,CHECK_BJ0
         SETB    JK2;wrong lamp on
         RET
 CHECK_BJ0:jb   bit_yuanbj,CHECK_BJ4
         CLR    JK2;lamp off
         RET
 CHECK_BJ4:SETB    JK2;wrong lamp on
         RET
;-------
S1DEALWITHTIME:MOV        A,44H;S
             JNZ        DEALWITHTIME0
             MOV        A,43H;M
             JNZ        DEALWITHTIME1
             RET
 DEALWITHTIME0:MOV      30H,#01H
           MOV   35H,44H
           MOV   R0,#30H
           MOV   R1,#35H
           MOV   R2,#1
           LCALL BCDS;@R1-@R0->@R1
           MOV   44H,35H
           RET
 DEALWITHTIME1:MOV      44H,#59H
           MOV   30H,#01H
           MOV   35H,43H
           MOV   R0,#30H
           MOV   R1,#35H
           MOV   R2,#1
           LCALL BCDS;@R1-@R0->@R1
           MOV   43H,35H
           RET
;-----------------
       BCDS:MOV A,R0;@R1-@R0->@R1
		ADD A,R2
		MOV R0,A
		DEC R0
		MOV A,R1
		ADD A,R2
		MOV R1,A
		DEC R1
		SETB  C
        BCDSL:  CLR   A
		ADDC  A,#99H
		SUBB  A,@R0
		ADD   A,@R1
		DA    A
		MOV   @R1,A
		DEC   R0
		DEC   R1
		DJNZ  R2,BCDSL
		RET
;-----------------
DELAY10MS: MOV    delbuf0,#0BH;
LL1:       MOV    delbuf1,#0E4H;
LL0:       NOP
           NOP;
           DJNZ   delbuf1,LL0;
           DJNZ   delbuf0,LL1;
           RET;v
;-----------------
allkey:mov     p0,#0ffh
       nop
       nop
       mov      a,p0
       cpl      a
       anl      a,#0e0h
       jnz      allkey0
       ret
allkey0:lcall   delay10ms
        lcall   delay10ms
        mov      a,p0
        cpl     a
        anl      a,#0e0h
        jnz      allkey1
        ret
allkey1:mov     a,p0
        mov     keybuf,a
        jb     acc.5,keyb
    keya:jnb   acc.0,keyret
        clr    BIT_CT2DA
        CLR    BIT_HF
         SETB   BIT_JS
         MOV    TIMEJS,#0
         clr    JK2;lamp off
        ret

   keyb:jb     acc.6,keyc
    keyb0:jnb   acc.1,keyret
        clr    BIT_CT2DB
        CLR    BIT_HF
         SETB   BIT_JS
         MOV    TIMEJS,#0
         clr    JK2;lamp off
        ret

   keyc:jb     acc.7,keyret
    keyc0:jnb   acc.2,keyret
        clr    BIT_CT2DC
        CLR    BIT_HF
         SETB   BIT_JS
         MOV    TIMEJS,#0
         clr    JK2;lamp off
  keyret:ret

;*******************************
END
;*******************************

⌨️ 快捷键说明

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