|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
file:///C:/DOCUME%7E1/USER-R%7E1/LOCALS%7E1/Temp/moz-screenshot.jpgfile:///C:/DOCUME%7E1/USER-R%7E1/LOCALS%7E1/Temp/moz-screenshot-1.jpg 已实现倒计时免费源码,帮忙加暂停功能!请大侠拔刀相助!小女子感激不尽!!!!
可悬赏和提供Proteus7.12仿真软件及各电子资料!
小女子的邮箱kgylah@21cn.com
MSN:kgylah@hotmail.com
Proteus仿真本电路的图片见附件!
需加功能:1.按Power/start键3秒开机,6秒后进入待机状态;
2.按function/pause键切换15分钟/4分钟倒计时;
3.当倒计时为0时,显示00:00
ORG 0000H
AJMP MAIN
; ORG 0003H
; LJMP FUNCTIONPAUSE
ORG 000BH
LJMP T_0
ORG 0013H
LJMP MOD_M
ORG 0100H
;-------主程序变量初始化--------------
MAIN: MOV SP,#60H
MOV DPTR,#TAB
S EQU R2
MODE EQU R3 ;模式
M2 EQU 22H ;M为分钟
M1 EQU 23H
S2 EQU 24H ;S为秒
S1 EQU 25H
PAUSE BIT P3.4
BELL BIT P3.6 ; 蜂鸣器
FLG BIT P1.0
MOV S,#00H ;初始时间为12:00:00
MOV MODE,#00H
MOV M2,#8
MOV M1,#4
MOV S2,#9
MOV S1,#9
;------------中断初始化-------------------
MOV TMOD,#11H ;两个定时器都是方式1
MOV TL0,#78H ;定时器0
MOV TH0,#0ECH
SETB EA ;开总中断
; CLR PT0 ;定时器中断高优先级
SETB ET0 ;开定时器中断0
SETB TR0 ;开定时器
SETB IT1 ;边沿触发方式
SETB IT0
SETB EX1 ;开外部中断1
SETB EX0 ;开外部中断0
CLR FLG
START1: LCALL DISP
JNB PAUSE,SETMM1
SJMP START1
SETMM1: LJMP SETMM
;----------主程序------------
LOOP: ACALL DISP
SJMP LOOP
;---------定时器中断程序-------------
T_0: CLR EA
MOV TH0,#0ECH
MOV TL0,#78H
INC S
CJNE S,#200,STOPT
MOV S,#0
ACALL COUN
STOPT: SETB EA
RETI
;-----------计算显示值---------------
COUN1:OP A
; POP PSW
COUN: INC S1
MOV A,S1
CJNE A,#0AH,STOP
MOV S1,#00H
INC S2
MOV A,S2
CJNE A,#0AH,STOP
MOV S2,#04H
INC M1
MOV A,M1
CJNE A,#0AH,STOP
MOV M1,#00H
INC M2
MOV A,M2
CJNE A,#06H,STOP
MOV M2,#0AH
; INC TEMP
; CJNE TEMP,#24,NEXT
; MOV TEMP,#00H
;NEXT: MOV H1,TEMP
; MOV A,H1
; MOV B,#10
; DIV AB
; MOV H1,B
; MOV H2,A
STOP: NOP
RET
;-------显示子程序-----------
DISP: MOV R0,#20H
MOV R1,#0DFH
LOOPD: MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
MOV A,R1
CJNE A,#0EFH,NEXTL1
CJNE MODE,#03H,GONO
CLR P1.7
SJMP GONO
NEXTL1: CJNE A,#0FBH,NEXTL2
CJNE MODE,#02H,GONO
CLR P1.7
SJMP GONO
NEXTL2: CJNE A,#0FEH,GONO
CJNE MODE,#01H,GONO
CLR P1.7
GONO: MOV P2,A
RR A
MOV R1,A
ACALL DEALY
MOV P2,#0FFH
MOV P1,#0FFH
INC R0
CJNE R0,#26H,LOOPD
MOV R1,#0DFH
RETI
;---------延时子程序,5MS------------
DEALY: MOV TH1,#0ECH
MOV TL1,#78H
SETB TR1
JNB TF1,$
CLR TR1
CLR TF1
;KEYDLY: CLR BELL ; 按键消抖动专用延时程序,
; ACALL DISP ; 在消除抖动的同时发出按键提示音
; SETB BELL
RET
;---------设置-------------
MOD_M: CLR EA
INC MODE
CJNE MODE,#04H,STOP1
MOV MODE,#00H
STOP1: SETB EA
RETI
;--------暂停计时--------
SETMM:CLR EA
CLR ET0 ; 关中断
PUSH ACC ; 保护现场
PUSH PSW
PUSH DPL
PUSH DPH
MOV PSW,#08H ; 选用寄存器组1
CLR TR0 ; 暂停计时
JNB PAUSE,SETMM4
SETMM4:SETB TR0 ; 恢复计时
POP DPH ; 恢复现场
POP DPL
POP PSW
POP ACC
SETB EA
RETI
; LCALL DS20MS;延时20毫秒
; JB PAUSE,SET2;是干扰则返回
CLR ET0;不允许定时器T0溢出中断
; PUSH PSW;
;
; PUSH A;
; MOV R2,#06H;定时器T1溢出中断次数
; SETB ET1;允许定时器T1溢出中断
; SETB TR1;启动定时器T1
; LCALL DL1S;延时1秒
; LCALL DL1S;再延时1秒
SET1:
; LCALL DISP;调用显示
; JNB PAUSE,SET1;检测启动信号输入
; LCALL DS20MS;延时20毫秒
; JB PAUSE,SET1;是干扰则返回
; SETB TR0;停止定时器T1
; SETB ET0;不允许定时器T1溢出中断
; MOV 30H,#0FEH;返回正常显示
; LJMP COUN1;返回主程序重新计时
SET2: LJMP START1
;FUNCTIONPAUSE:CLR EA
; ACALL DISP ; 调用显示
; JB PAUSE,JUDGE ; 按键扫描
;JUDGE:;ACALL KEYDLY ; 延时消抖动
; JB PAUSE,JUDGE ; 无键按下转向判断是否到点
CLR ET0 ; 功能键被按下,则
CLR TR0
RET ; 暂停计时
STOP_: SETB EA
RETI
;--------共阳极LED_7字形码------------
;TAB: DB 0c0H,0f9H,0a4H,0b0H,99H,92H,82H,0f8H,80H,90H
TAB: DB 90H,80H,0f8H,82H,92H,99H,0b0H,0a4H,0f9H,0c0H
END |
-
-
倒计时.rar
13.2 KB, 下载次数: 12
, 下载积分:
资产 -2 信元, 下载支出 2 信元
Proteus仿真本电路的图片见附件
|