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

📄 new_test.asm

📁 检测红外探头的程序
💻 ASM
字号:
K1	BIT P1.0
K2	BIT P1.1
K3	BIT P1.2
K4	BIT P1.3
K5	BIT P1.4
K6	BIT P1.7
K37	BIT P3.7
K35	BIT P3.5
K34	BIT P3.4
;-------------------
         ORG 0000H
         JMP START
;-------------------
START:  
      CLR  K2
      SETB K4
      CLR  K3
      CLR  K5
      CLR  K6
      SETB K34
      SETB K37
      MOV  R0,#0   ;寄
      MOV  R1,#0   ;存
      MOV  R2,#0   ;器
      MOV  R3,#0   ;清
      MOV  R4,#0   ;零
      MOV  R5,#0   ;
      MOV  R6,#0   ;
      MOV  R7,#0   ;
      
      CALL DELAY
      JNB  K1,START
      CALL DELAY
L1:   MOV  R2,#5

L2:   CLR  A
      MOV  R1,#100

L3:   JZ   L5
      JNZ  L4

L4:   ADD  A,R6
      MOV  R6,A

L5:   JB   K1,L6    ;判断K1的值
      JNB  K1,L8

L6:   MOV  A,R4
      ADD  A,R7
      MOV  R7,A
      MOV  R4,#0
      CLR  C        ;判断K1=1和K1=0出现次数的总和是否是100
      MOV  R3,#100  ;如果是100,转移到L7,否则继续循环判断K1值
      MOV  A,R3
      SUBB A,R1    
      ADD  A,R7
      CLR  C
      SUBB A,#100
      JZ   L7
      CALL DELAY    ;延时10ms,共计延时100次,时间为1s
      DJNZ R1,L5

L7:   MOV  R7,#0
      MOV  A,#5     ;判断采样时间是否满足5s
      CLR  C
      SUBB A,R2
      ADD  A,R6
      MOV  R6,A
      MOV  A,#5
      CLR  C
      SUBB A,R6
      MOV  R2,A
      MOV  R6,#0
      JZ   L0
      DJNZ R2,L2
      JMP  L0
;-------------------------------------
L8:   MOV  R5,#5     ;K1=0共计出现的时间,如果K1连续为0达到5s
      CLR  A         ;跳转回START
L9:   MOV  R0,#100

L10:  MOV  R3,#100
      MOV  A,R3
      CLR  C
      SUBB A,R0
      MOV  R4,A
      MOV  A,#5
      CLR  C
      SUBB A,R5
      JB   K1,L3
      CALL DELAY
      DJNZ R0,L10
      DJNZ R5,L9
      JMP  START 
;=======================================
L0:	MOV R6,#0         ;保留原程序部分
	JNB K35,L03
	JB  K35,L0003
L0003:	CLR K34
	
	CALL DELAY
	SETB  K34
	SETB K3
	SETB K2

L03:	CLR  K37       ;外设的触发时间?
	SETB  K6
	
	CALL DELAY
L003:	
	SETB K3
	CLR  K2
	CLR  K37
	CALL DELAY
        CALL DELAY
;=========================================

L11:  CALL DELAY
      JB   K1,L11  
      MOV  R5,#5
L12:  MOV  R0,#100    ;只有当K1=0连续出现5s时:SETB K37
L13:  CALL DELAY      ;                       CLR  K6  
      JB   K1,L11
      DJNZ R0,L13
      DJNZ R5,L12
      
      SETB K37
      CLR  K6
      CALL DELAY
      JMP  START


	

	

DELAY:
      MOV  R4,#20 
   D2:MOV  R3,#100
   D1:NOP
      NOP
      NOP
      DJNZ R3,D1
      DJNZ R4,D2
     
      RET
      END
;==============================================
      









⌨️ 快捷键说明

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