?? new_test.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 + -