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

📄 f24timer1.asm

📁 这是我用汇编语言编写的计时器程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;*******************************
;04.12.1 山东招标
;增加中断计时和切换箱开路设定报警灯取消
;JKn 用常闭触点
;*******************************
spk         bit    P1.4
JK1         BIT    P1.3
JK2         BIT    P1.2
JK3         BIT    P1.1
JK4         BIT    P1.0
DSPDATA     BIT    P3.6;36
DSPCLK      BIT    P3.7;37
DSPSTR      BIT    P3.5;;35
;00H-07H normal /08h-0fh seri_pc
;10h-17h disptmb/18-1fh  noused
BIT_HF      BIT    20H.0
BIT_JS      BIT    20H.1
BIT_SPK     BIT    20H.2
BIT_TIMECH    BIT    20H.3
BIT_TDOWNSTAR BIT    20H.4
 spk_ST       BIT    20H.5
 bit_end      BIT    20H.6
 bit_yuanbj   bit    20h.7
BIT_CT2DA      BIT    21H.0
BIT_CT2DB      BIT    21H.1
BIT_CT2DC      BIT    21H.2
;30H--3fH noused
;40H--5FH used for seri_pc
DISPT1      EQU    60H
DISPT2      EQU    61H
DISPT3      EQU    62H
DISPT4      EQU    63H
DISPT5      EQU    64H
SO_HEAD_PC  EQU    65H
TIMEJS      EQU    66H
TIME60      EQU    67H
DISPB1      EQU    68H
DISPB2      EQU    69H
DISPB3      EQU    6AH
DISPB4      EQU    6BH
DISPB5      EQU    6CH
TIMEH       EQU    6DH
TIMEL       EQU    6EH
TIMESPK     EQU    6FH
keybuf      equ    70h
delbuf0     equ    71h
delbuf1     equ    72h
;-------------------------
      ORG   0000H
      LJMP  START
      ORG   000BH
      LJMP  T50MS
      ORG   001BH
      RETI
      ORG   0023H
      LJMP  SERI_PC
;-------------------------
      ORG   0100H
     START:      MOV SP,#80H

		MOV R0,#01H
	        CLR  A
	CLRAM1: MOV @R0,A
		INC R0
		CJNE R0,#7FH,CLRAM1

        	MOV R0,#90H
	CLRAM2: CLR A
		MOV @R0,A
		INC R0
		CJNE R0,#0FFH,CLRAM2

		LCALL INITILY
           SETB  EA
;----------------
MAIN:     LCALL  SPEAKER
          LCALL  PC_COM
          LCALL  CHECK_BJ
          LCALL  CALCULATETM
          LCALL  HFLOCK
          lcall  allkey
          SJMP   MAIN
;***************************
;初始化控制状态字
;***************************
INITILY:MOV  SO_HEAD_PC,#40H

        SETB  BIT_HF
        CLR   BIT_JS
        CLR   spk_ST
        clr     bit_end
        clr     bit_yuanbj
        CLR   BIT_TDOWNSTAR
        CLR   BIT_CT2DA
        CLR   BIT_CT2DB
        CLR   BIT_CT2DC
        MOV   P0,#0FFH
        MOV   P1,#0FBH
        CLR    spk;p1.5
        CLR    JK1; baojingjiance
        CLR    JK2; dianyuan

        CLR     DSPDATA;36
        CLR     DSPCLK;37
        SETB    DSPSTR;35
        MOV	DISPT3,#10
	LCALL   FATCH_DISPB
	LCALL   DISPTMB		;清显示

          MOV SCON,#050H
          MOV TMOD,#21H
          MOV TH1,#0E8H  ;1200
          MOV TL1,#0E8H
         MOV	TH0,#42H ;50MS
	 MOV	TL0,#0A0H;
         SETB ES
         SETB TR1
         CLR  ET1
         SETB TR0
         SETB  ET0
         RET
;*****************************
;timer0 intrupt
;*****************************
   T50MS:PUSH	ACC
        PUSH    PSW
	MOV	TH0,#42H ;50MS
	MOV	TL0,#0A0H

    T_0:JNB BIT_JS,T_1
        INC TIMEJS
        MOV A,TIMEJS
        CJNE      A,#100,T01
    T01:JC     T_1
        SETB   BIT_HF;5S
        CLR    BIT_JS

    T_1:INC TIME60
        MOV A,TIME60
        CJNE      A,#19,T11
    T11:JC     T_2
        MOV    TIME60,#0
        SETB   BIT_TIMECH;1S

    T_2:JNB spk_ST,T_3
        INC TIMESPK
        MOV A,TIMESPK
        CJNE      A,#200,T21
    T21:JC     T_3
        CLR   BIT_SPK
        CLR   spk_ST

    T_3:NOP
	POP	PSW
	POP	ACC
        RETI
;*****************************
;serial with pc
;*****************************
SERI_PC:PUSH ACC
      PUSH PSW
      SETB RS0
      CLR RS1
     JNB RI,SBI1
     CLR RI
      mov a,sbuf
      jb bit_end,pcint1
      cjne a,#0feh,pcintt1
      sjmp  pcint6
 pcintt1:cjne a,#0b0h,pcintt2
      sjmp  pcint6
 pcintt2:cjne a,#0b1h,pcint4
 pcint6:mov so_head_pc,#40h
      setb bit_end
pcint1:MOV R0,SO_HEAD_PC
      MOV @R0,A
      mov a,so_head_pc
      inc a
      cjne a,#5ah,pcint2
pcint2:jc pcint3
      clr bit_end
      mov a,#40h
pcint3:mov so_head_pc,a
pcint4:sjmp sbi2

SBI1: JNB TI,SBI2
;      CLR TI
SBI2: POP PSW
      POP ACC
      RETI
;------------------------
PC_COM:MOV A,SO_HEAD_PC;PC_COM
      CJNE A,#43H,PC_COM1
PC_COM1:JNC PC_COM2
      RET
PC_COM2:MOV    A,40H
       ANL     A,#0F0H
       XRL     A,#0B0H
       JNZ     PC_COMA
;=============
PC_COMB:MOV        A,#42H
        ADD        A,41H
        MOV        B,A
        MOV       A,SO_HEAD_PC
        CJNE      A,B,pc_comb1
 pc_comb1:JNC      pc_comb2
        RET
 pc_comb2:MOV A,40H ;AXH
      ANL A,#0FH
      MOV B,#3
      MUL AB
      MOV DPTR,#PCCOMB_L
      JMP  @A+DPTR
PCCOMB_L:LJMP      PCCOMB0
        LJMP       PCCOMB1

;-------
PCCOMB0: MOV    A,50H
         JZ    PCCOMB01
         SETB    BIT_CT2DA
         SJMP   PCCOMB011
 PCCOMB01:CLR    BIT_CT2DA
 PCCOMB011:MOV    A,51H
         JZ    PCCOMB02
         SETB    BIT_CT2DB
         SJMP   PCCOMB021
 PCCOMB02:CLR    BIT_CT2DB
 PCCOMB021:MOV    A,52H
         JZ    PCCOMB03
         SETB    BIT_CT2DC
         SJMP   PCCOMB031
 PCCOMB03:CLR    BIT_CT2DC
 PCCOMB031:;clr    bit_end
         ;MOV SO_HEAD_PC,#40H
         ;RET
;-------
PCCOMB1:CLR    BIT_HF
         SETB   BIT_JS
         MOV    TIMEJS,#0
         clr    JK2;lamp off
         clr    bit_end
         clr    bit_yuanbj
         MOV SO_HEAD_PC,#40H
         RET
;=============
pc_coma:MOV        A,#43H
        ADD        A,42H
        MOV        B,A
        MOV       A,SO_HEAD_PC
        CJNE      A,B,pc_coma1
 pc_coma1:JNC      pc_coma2
        RET
     pc_coma2: MOV A,40H  ;FEH
      INC   A
      INC   A
      JZ   pc_coma3
      MOV SO_HEAD_PC,#40H
      clr     bit_end
      RET
pc_coma3:MOV A,41H ;AXH
      ANL A,#0F0H
      XRL A,#0A0H
      JZ    pc_coma4
      MOV SO_HEAD_PC,#40H
      clr     bit_end
      RET
pc_coma4:clr     bit_end
      MOV A,41H ;AXH
      ANL A,#0FH
      MOV B,#3
      MUL AB
      MOV DPTR,#PCCOMA_L
      JMP  @A+DPTR
PCCOMA_L:LJMP      PCTIMERSTART
        LJMP       PCFATCHFLAG
        LJMP       PCUNLOCK
        LJMP       PCYUANORR
        LJMP       PCTIMERstop
;----------
PCTIMERSTART:SETB       BIT_TDOWNSTAR
             LCALL      S1DEALWITHTIME
             MOV        A,43H;fen
             SWAP       A
             ANL        A,#0FH
             MOV        B,#10
             MUL        AB
             MOV        B,A
             MOV        A,43H;fen
             ANL        A,#0FH
             ADD        A,B
             MOV        TIMEH,A
             MOV        A,44H;miao
             SWAP       A
             ANL        A,#0FH
             MOV        B,#10
             MUL        AB
             MOV        B,A
             MOV        A,44H;miao
             ANL        A,#0FH
             ADD        A,B
             MOV        TIMEL,A
           MOV    A,TIMEL
           MOV    B,#10
           DIV    AB
           MOV    DISPT4,A
           MOV    DISPT5,B
           MOV    A,TIMEH
           MOV    B,#10
           DIV    AB
           MOV    DISPT1,A
           MOV    DISPT2,B
           ;MOV    DISPT3,#10
           LCALL  FATCH_DISPB
           LCALL  DISPTMB
           MOV    TIME60,#0
           CLR  BIT_TIMECH
          MOV SO_HEAD_PC,#40H
             RET
;--------
PCFATCHFLAG:MOV   A,43H
            JZ    PCFATCHFLAG0
            MOV SO_HEAD_PC,#40H
            RET
PCFATCHFLAG0:MOV   A,P0
            SWAP  A
            RL    A
            ANL   A,#0E0H
            MOV   B,A
            MOV   SBUF,#0FEH
            JNB   TI,$
            CLR   TI
            MOV   SBUF,#0A1H
            JNB   TI,$
            CLR   TI
            MOV   SBUF,#2
            JNB   TI,$
            CLR   TI
            MOV   SBUF,#0H
            JNB   TI,$
            CLR   TI
            MOV   SBUF,B
            JNB   TI,$
            CLR   TI
        MOV SO_HEAD_PC,#40H
        RET
;--------
PCUNLOCK:MOV   A,43H

⌨️ 快捷键说明

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