标题:
单片机计时提醒器程序
[打印本页]
作者:
daming
时间:
2014-12-30 15:50
标题:
单片机计时提醒器程序
1-9为数字键,p2.0为小数点,p2.3为确认键,p2,4为取消键,可以定时范围0-99分钟 ,时间到达后亮灯或者蜂鸣,O(∩_∩)O哈哈~
ORG 00H
START:
MOV P0, #00H
MOV R0, #2;
CLR P2.7 ;
SETTING:
CHK_0:
JB P1.0, CHK_1;
CALL FILTER
JNB P1.0, $
MOV R1, #0
JMP TIMERSET
CHK_1:
JB P1.1, CHK_2;
CALL FILTER
JNB P1.2, $
MOV R1, #1
JMP TIMERSET
CHK_2:
JB P1.2, CHK_3;
CALL FILTER
JNB P1.2, $
MOV R1, #2
JMP TIMERSET
CHK_3:
JB P1.3, CHK_4;
CALL FILTER
JNB P1.3, $
MOV R1, #3
JMP TIMERSET
CHK_4:
JB P1.4, CHK_5;
CALL FILTER
JNB P1.4, $
MOV R1, #4
JMP TIMERSET
CHK_5:
JB P1.5, CHK_6;
CALL FILTER
JNB P1.5, $
MOV R1, #5
JMP TIMERSET
CHK_6:
JB P1.6, CHK_7;
CALL FILTER
JNB P1.6, $
MOV R1, #6
JMP TIMERSET
CHK_7:
JB P1.7, CHK_8;
CALL FILTER
JNB P1.7, $
MOV R1, #7
JMP TIMERSET
CHK_8:
JB P2.1, CHK_9;
CALL FILTER
JNB P2.1, $
MOV R1, #8
JMP TIMERSET
CHK_9:
JB P2.2, CHK_AGAIN;
CALL FILTER
JNB P2.2, $
MOV R1, #9
JMP TIMERSET
CHK_AGAIN:
JMP CHK_0
TIMERSET:
DJNZ R0, LSB
JMP MSB
LSB:
MOV 30H, R1
JMP SETTING
MSB:
MOV A , R1
SWAP A
ADD A ,30H
MOV 31H, A
MOV P0, A
CONFIRM:
OK:
JB P2.3, CANCEL
CALL FILTER
JNB P2.4, $
MOV A, #00H
JMP TIMING
CANCEL:
JB P2.4, OK
CALL FILTER
JNB P2.4 , $
RESTART:
JMP START
TIMING:
MOV P0 , A
MIN:
MOV R0, #60
SEC:
MOV R1, #10
SEC_10:
MOV R2, #200
CALL DELAY
DJNZ R1, SEC_10
CPL P2.0
DJNZ R0, SEC
ADD A, #1
DA A
CJNE A, 31H,TIMING
BEEP:
MOV R2, #5;
REPEAT:
SETB P2.7
CALL LONGDELAY
CLR P2.7
CALL LONGDELAY
DJNZ R2,REPEAT
JMP START
DELAY:
MOV R3, #248
JNB P2.4, RESTART
DJNZ R3, $
DJNZ R2, DELAY
RET
FILTER:
MOV R6, #60
F1:
MOV R7, #248
DJNZ R7, $
DJNZ R6, F1
RET
LONGDELAY:
MOV R3, #50
DL1:
MOV R4, #20
DL2:
MOV R5, #248
DJNZ R5,$
DJNZ R4, DL2
DJNZ R3 , DL1
RET
END
复制代码
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1