本文目录一览:
临沂师范有哪些社团
社团注册名称
XSST004同新社[AAA]
XSST023大学生现代视觉文化研究会
XSST063大学生求知学社
XSST067大学生数学建模协会[AAA]
XSST005大学生科技协会[AA]
XSST024大学生联合社[A]
XSST006大学生保护母亲河协会 [AA]
XSST025大学生化工协会[A]
XSST028同舟社会实践协会
XSST058大学生舞蹈队
XSST059大学生合唱团
XSST060大学生民族管弦乐团[AA]
XSST012武术协会[AA]
XSST030舞蹈协会
XSST062大学生轮滑爱好者协会[A]
XSST032木球协会
XSST031兰亭书法协会[A]
XSST065大学生动漫爱好者协会
XSST043大学生公益协会
XSST044大学生墙绘协会
XSST007朝阳社工协会[AAAA]
XSST033沂蒙问题研究所
XSST034史苑协会[A]
XSST069大学生礼仪协会
XSST011凤凰文管协会
XSST013心理健康教育协会[A]
XSST014未来教育家协会[AA]
XSST036学探社
XSST035网络文化先锋社
XSST070大学生百艺新理念协会
XSST029青年电影人协会
XSST001净语剧社[AAAA]
XSST015闻心社[A]
XSST016燎原文学社[AAA]
XSST037弘文书画社
XSST026零度艺术社
XSST027播音主持艺术学会
XSST002青年志愿者协会[AAA]
XSST038法学与企业管理研究协会
XSST039女子俱乐部
XSST040科学发展观研究会
XSST041法制之家[A]
XSST046爱心社
XSST017经济沙龙协会[A]
XSST042轩辕商社[A]
XSST008语苑学社[AAAA]
XSST018新月社[AAA]
XSST045大学生外语演讲协会
XSST061时尚运动协会
XSST064女大学生关爱协会
XSST066大学生心理导航协会[A]
XSST068大学生职业导航协会
XSST019邓小平理论研究会[AA]
XSST047大学生学术研究会[A]
XSST048绿色家园协会
XSST009电脑爱好者协会[AA]
XSST049大学生职业生涯规划协会[A]
XSST050创业者协会
XSST003沂蒙环境保护协会[AAA]
XSST020大学生摄影协会[AA]
XSST051励新社
XSST052沂蒙文化旅游研究会
XSST010 IT协会[AA]
XSST021大学生科技创新协会[AA]
XSST055大学生汽车文化协会
XSST056爱心互助协会[A]
XSST022绿苑景观协会[AA]
XSST057大学生动物保护者协会[A]
单片机问题
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0 ;定时时间到控制位清零
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.7,TIME
CLR P3.0
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
有时、分、秒显示,可以定时驱动继电器来控制你的家用电器,具体使用方法看程序吧,程序懂了你就能做出来了
89s52给写个能定时7小时的程序
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.7,TIME
CLR P3.0
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
这个可以设定任意时间
急求基于单片机电脑时钟程序和原理图!
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0 ;定时时间1控制位清零
CLR P3.1 ;定时时间2控制位清零
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.6,TIME
CLR P3.0
JB P0.7,TIME
CLR P3.1
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
这个带定时的可以驱动继电器控制你的电器定时开关,原理图很简单啊
89c51 用汇编语言求一时钟程序,图如下
HOUR EQU 030H ;小时缓存
MINUTE EQU 031H ;分钟缓存
SECOND EQU 032H ;秒缓存
DHOUR EQU 040H ;定时小时缓存
DMINUTE EQU 041H ;定时分钟缓存
AJBZ EQU 042H ;按键次数标志
DSBZ EQU 022H ;定时开关标志
COUNT1 EQU 033H ;总计数到4000:拆分成40*100 总计数1
COUNT2 EQU 034H
SPL EQU 020H ;闪烁判断的依据
SET_BTN EQU 021H ;按键标志位
ORG 0000H
AJMP MAIN
ORG 001BH ;定时计数器T1中断入口地址
AJMP IT_1
ORG 040H
MAIN:MOV SPL,#00H ;闪烁标志清零
MOV DPTR,#TABLE ;码段首地址
MOV HOUR,#00H ;小时缓存清零
MOV MINUTE,#00H ;分缓存清零
MOV DHOUR,#00H ;定时小时缓存清零
MOV DMINUTE,#00H ;定时分缓存清零
MOV SECOND,#00H ;秒缓存清零
MOV AJBZ,#00H ;按键次数缓存清零
MOV COUNT1,#00H ;总计数1清零
MOV COUNT2,#00H ;总计数2清零
MOV DHOUR,#00H ;定时小时地址清零
MOV DSBZ,#00H ;定时开关标志清零
CLR P3.0 ;定时时间到控制位清零
MOV TMOD,#20H ;设置计数方式
MOV TH1,#06H ;定时计数器T1高八位初值
MOV TL1,#06H ;定时计数器低八位初值
MOV IE,#10001000B ;设置允许中断,并且打开两个定时器
SETB TR1
LOOP:JNB P0.0,JUST_TIME ;P0.0为零跳转(调时操作)
JB SET_BTN.0,JUST_TIME ;标志位为1跳转
JNB P0.1, SUBB_TIME ;减操作
JB SET_BTN.1,SUBB_TIME
JNB P0.2, ADD_TIME ;加操作
JB SET_BTN.2,ADD_TIME
JB P0.7,TIME
CLR P3.0
TIME1:JB SPL.3,DSXS ;转定时小时显示
JB SPL.4,DSXS ;转定时分钟显示
JB SPL.5,DSXS ;转定时开关显示
ACALL HOUR_SHOW ;小时显示
ACALL MINUTE_SHOW ;分钟显示
ACALL SECOND_SHOW ;秒显示
FHLOOP:AJMP LOOP
DSXS:ACALL DHOUR_SHOW ;定时小时显示
ACALL DMINUTE_SHOW ;定时分钟显示
ACALL DSECOND_SHOW ;定时开关显示
AJMP LOOP
JUST_TIME:
LJMP JUST_TIME1
SUBB_TIME:
JB SET_BTN.1,WAIT_BTN2_UP
ACALL DELAY2;
JB P0.1, TIME
SETB SET_BTN.1
JB SPL.1,SUBB_HOUR
JB SPL.2,SUBB_MIN
JB SPL.3,DSUBB_HOUR
JB SPL.4,DSUBB_MIN
JB SPL.5,GDS
AJMP TIME
ADD_TIME:
LJMP ADDTIME
SUBB_MIN:
MOV R1,MINUTE
CJNE R1,#00H,SUBB_MIN_OPT
MOV MINUTE,#3BH
AJMP TIME
SUBB_MIN_OPT:
DEC MINUTE
AJMP TIME
DSUBB_MIN:
MOV R1,DMINUTE
CJNE R1,#00H,DSUBB_MIN_OPT
MOV DMINUTE,#3BH
AJMP TIME
DSUBB_MIN_OPT:
DEC DMINUTE
AJMP TIME
SUBB_HOUR:
MOV R1,HOUR
CJNE R1,#00H,SUBB_HOUR_OPT
MOV HOUR,#17H
AJMP TIME
SUBB_HOUR_OPT:
DEC HOUR
AJMP TIME
DSUBB_HOUR:
MOV R1,DHOUR
CJNE R1,#00H,DSUBB_HOUR_OPT
MOV DHOUR,#17H
AJMP TIME
DSUBB_HOUR_OPT:
DEC DHOUR
AJMP TIME
WAIT_BTN2_UP:
JNB P0.1,TIME
CLR SET_BTN.1
AJMP TIME
TIME:LJMP TIME1
GDS:CLR DSBZ.0
LJMP TIME
ADDTIME:JB SET_BTN.2,WAIT_BTN3_UP
ACALL DELAY2
JB P0.2, TIME
SETB SET_BTN.2
JB SPL.1,ADD_HOUR
JB SPL.2,ADD_MIN
JB SPL.3,DADD_HOUR
JB SPL.4,DADD_MIN
JB SPL.5,KDS
LJMP TIME
ADD_MIN:MOV R1,MINUTE
CJNE R1,#3BH,ADD_MIN_OPT
MOV MINUTE,#00H
LJMP TIME
ADD_MIN_OPT:
INC MINUTE
LJMP TIME
DADD_MIN:
MOV R1,DMINUTE
CJNE R1,#3BH,DADD_MIN_OPT
MOV DMINUTE,#00H
LJMP TIME
DADD_MIN_OPT:
INC DMINUTE
LJMP TIME
ADD_HOUR:
MOV R1,HOUR
CJNE R1,#17H,ADD_HOUR_OPT
MOV HOUR,#00H
LJMP TIME
ADD_HOUR_OPT:
INC HOUR
LJMP TIME
DADD_HOUR:
MOV R1,DHOUR
CJNE R1,#17H,DADD_HOUR_OPT
MOV DHOUR,#00H
LJMP TIME
DADD_HOUR_OPT:
INC DHOUR
LJMP TIME
WAIT_BTN3_UP:
JNB P0.2,TIME
CLR SET_BTN.2
LJMP TIME
KDS:SETB DSBZ.0
LJMP TIME
JUST_TIME1:
JB SET_BTN.0,WAIT_UP
ACALL DELAY2
JB P0.0, TIME
SETB SET_BTN.0
MOV R1,AJBZ
CJNE R1,#05H,INC1
MOV AJBZ,#00H
MOV SPL,#00H
LJMP TIME
INC1:INC AJBZ
MOV R1,AJBZ
CJNE R1,#01H,JSFZ ;计时分钟
SETB SPL.1
LJMP TIME
JSFZ:CJNE R1,#02H,DSX ;定时小时
CLR SPL.1
SETB SPL.2
LJMP TIME
DSX:CJNE R1,#03H,DSFZ ;定时分钟
CLR SPL.2
SETB SPL.3
LJMP TIME
DSFZ:CJNE R1,#04H,DSKG ;定时开关
CLR SPL.3
SETB SPL.4
DSKG:CJNE R1,#05H,LJUMP_TIME ;返回显示状态
CLR SPL.4
SETB SPL.5
LJUMP_TIME:
LJMP TIME
WAIT_UP:JNB P0.0,LJUMP_TIME ;等待按键松开,松开后清零按键标志
CLR SET_BTN.0
LJMP TIME
WAIT2_DL1:
ACALL DELAY1
ACALL DELAY1
RET
HOUR_SHOW:
JNB SPL.1, HOUR_SHOW_HRER
JB SPL.0, HOUR_SHOW_HRER
ACALL WAIT2_DL1
RET
HOUR_SHOW_HRER: ;小时显示
SETB P2.6
SETB P2.7
CLR A
MOV A,HOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时各位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
MINUTE_SHOW:
JNB SPL.2, MINUTE_SHOW_HERE
JB SPL.0, MINUTE_SHOW_HERE
ACALL WAIT2_DL1
RET
MINUTE_SHOW_HERE:
SETB P2.5
SETB P2.4
CLR A
MOV A,MINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
SECOND_SHOW:
SETB P2.3
SETB P2.2
CLR A
MOV A,SECOND
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
JNB DSBZ.0,DYFH ;定时比较开始
JB P3.0,DYFH
MOV A,HOUR
CJNE A,DHOUR,DYFH
MOV A,MINUTE
CJNE A,DMINUTE,DYFH
SETB P3.0
DYFH:RET
DHOUR_SHOW: ;调整定时时间显示
JNB SPL.3,XSS
JB SPL.0, XSS
ACALL WAIT2_DL1
RET
XSS:SETB P2.6
SETB P2.7
CLR A
MOV A,DHOUR
MOV B,#0AH
DIV AB ;小时十位在A中,个位在B中
MOVC A,@A+DPTR
MOV P1,#00H ;P1口控制显示数据,此时显示小时十位数据
MOV P1,A
CLR P2.7 ;P2口控制位置(低电平有效;共阴显示)
;延时
ACALL DELAY1
SETB P2.7 ;熄灭小时
MOV P1,#00H
MOV A,B ;B中存放的小时个位数据放入A
MOVC A,@A+DPTR
MOV P1,A
CLR P2.6 ;显示小时个位数据
;延时
ACALL DELAY1
SETB P2.6
MOV P1,#00H
RET
;定时分钟显示
DMINUTE_SHOW:
JNB SPL.4,XSF
JB SPL.0, XSF
ACALL WAIT2_DL1
RET
XSF:SETB P2.5
SETB P2.4
CLR A
MOV A,DMINUTE
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P1,#00H
MOV P1,A
CLR P2.5
;延时
ACALL DELAY1
SETB P2.5
MOV P1,#00H
MOV A,B
MOVC A,@A+DPTR
MOV P1,A
CLR P2.4
;延时
ACALL DELAY1
SETB P2.4
MOV P1,#00H
RET
;定时开关显示
DSECOND_SHOW:
JNB SPL.5,XSM ;显示秒(定时开关)
JB SPL.0,XSM
ACALL WAIT2_DL1
RET
XSM:SETB P2.3
SETB P2.2
CLR A
MOV A,#00H
MOVC A,@A+DPTR
MOV P1,A
CLR P2.3
;延时
ACALL DELAY1
SETB P2.3
MOV P1,#00H
JNB DSBZ.0,GBZ ;关标志
MOV A,#0BH
AJMP XS
GBZ:MOV A,#0AH
XS:MOVC A,@A+DPTR
MOV P1,A
CLR P2.2
;延时
ACALL DELAY1
SETB P2.2
MOV P1,#00H
RET
;短延时 ;显示短延时
DELAY1:MOV R6,#03H
DL1:MOV R7,08H
DL2:DJNZ R7,DL2
DJNZ R6,DL1
RET
;按键延时
DELAY2:MOV R6,#0AH
DL21:MOV R7,0AH
DL22:DJNZ R7,DL22
DJNZ R6,DL21
RET
IT_1:PUSH ACC
PUSH B
PUSH PSW
INC COUNT1
MOV A,COUNT1
CJNE A,#28H,RETI_LABLE
INC COUNT2
MOV COUNT1,#00H
MOV A,COUNT2
MOV B,#32H
DIV AB
MOV A,B
JNZ C2_OPT
CPL P3.7 ;秒的闪烁
CPL SPL.0 ;调整闪烁
C2_OPT:MOV A,COUNT2
CJNE A,#64H,RETI_LABLE
INC SECOND
MOV COUNT2,#00H
MOV A,SECOND
CJNE A,#3CH,RETI_LABLE;
INC MINUTE
MOV SECOND,#00H
MOV A,MINUTE
CJNE A,#3CH,RETI_LABLE;
INC HOUR
MOV MINUTE,#00H
MOV A,HOUR
CJNE A,#18H,RETI_LABLE
MOV HOUR,#00H
RETI_LABLE:
POP PSW
POP B
POP ACC
RETI
;TABLE:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,40H ;共阴码表
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,8EH,0C8H ;共阳码表
; 0 1 2 3 4 5 6 7 8 9 F N
END
可以实现控制家用电器的定时。比如什么时候想烧水就定时到那个时间,等你用的时候水就开了,很方便的