第二部,添加隐拿一个计时器timer,一个文字标胡携升签label
第三部,输入代裤老码,代码如下
Private Sub Form_Load()
picClock.Move (Me.ScaleWidth - 8 * 210) / 2, (Me.ScaleHeight - 315) / 2, 8 * 210, 315
Dim i&
For i = 0 To 7
picClock.PaintPicture picNumber.Picture, i * 210, 0, 210, 315, IIf((i = 2) Or (i = 5), 12, 10) * 210, 0, 210, 315
Next i
End Sub
Private Sub Timer1_Timer()
Dim cNow$, i&
cNow = Format(Now, "hh:mm:ss")
For i = 0 To 7
If Mid(cNow, i + 1, 1) <>":" Then
picClock.PaintPicture picNumber.Picture, i * 210, 0, 210, 315, Val(Mid(cNow, i + 1, 1)) * 210, 0, 210, 315
End If
Next i
End Sub
望采纳
上面的代码错了,下面是正确代码
Private Sub Form_Load()
Timer1.Enabled = True
Timer1.Interval = 300
End Sub
Private Sub Timer1_Timer()
Label1 = Now
End Sub
源程序如下: ORG 0000H 程序开始入口LJMP START
ORG 0003H 外中断0中断程序入口
RETI
ORG 000BH 定升颤时器T0中断程序入口
LJMP INTT0 跳至INTTO执行
ORG 0013H 外中断1中断程序入口
RETI
ORG 001BH 定时器T1中断程序入口
LJMP INTT1
ORG 0023H 串行中断程序入口地址
RETI
---------------主程序----------------------
START:MOV R0,#70H 70给R0,清70-7FH显示内存
MOV R7,#0FH
CLEARDISP:MOV @R0,#00H0给R0中的数为地址的内存中存放(70H)
INC R0
DJNZR7,CLEARDISP
MOV 78H,#2 默认时间吵亮败为12:00,闹钟5:00
MOV 79H,#1
MOV 74H,#2 防止上电时数码管显示00小时
MOV 75H,#1
MOV 66H,#1 中断退出时66H为1时,分、时计时单元数据移入显存标志
MOV 68H,#1 上电默认闹钟开状态
MOV 7DH,#6 闹钟时十位
MOV 7CH,#3
MOV 69H,#0
MOV 7AH,#0AH放入"熄灭符"数据
MOV TMOD,#11H 设T0、T1为16位定时器
MOV TL0,#0B0H 50MS定时键脊初值(T0计时用)
MOV TH0,#3CH
SETBEA 总中断开放
SETBET0 允许T0中断
SETBTR0 T0定时器开始计时
MOV R4,#14H 1秒定时用初值(50MS×20)
START1:LCALL DISPLAY 显示子程序
LCALL BEEP闹钟查询
JNB P1.7,SETTIMEP1.7口为0时转时间调整程序
JMP START1 P1.7口为1时跳回START1
-----------------------时间闹钟调整系统--------------------------
NFLAG:MOV A,68H 设置闹钟开关状态
CJNE A,#1,BEE68
MOV 68H,#0
JMP E6
BEE68:MOV 68H,#1
E6:MOV 66H,#8 中断退出66H不为1时分、时计时单元数据移入显存标志
MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
LCALLDDL
LCALLDDL
MOV 72H,68H
MOV 73H,69H
MOV 74H,7AH
MOV 75H,7AH
LCALLDDL
LCALLDDL
MOV 66H,#1
LJMP START1
SETTIME:LCALLDDL
JB P1.7,NFLAG 键按下时间小于1秒,设置闹钟开关状态并查看闹钟时间,不关走时,确保准确,大于1秒调时
MOV TL1,#0B0H T1闪烁定时初值
MOV TH1,#3CH
MOV R2,#06H进入调时状态,赋闪烁定时初值
MOV 66H,#8 调闹钟时保持走时,关闭时钟显示数据
SETB ET1允许T1中断
SETB TR1开启定时器T1
SET1:LCALLDISPLAY调用显示,防止键按下无显示
JNB P1.7,SET1 P1.7口为0等待键释放
MOV R5,#00H清设置类型闪烁标志
SETN1:INC R5 闹钟分调整
SET5:LCALLDISPLAY
JB P1.7,SET5
SEETN1:LCALLDDL有键按下大于1秒分时间连续加(0.5秒加1),小于1秒转调时状态
JB P1.7,SET6 键释放查询,键释放自动转调时
MOV R0,#7CH
LCALL ADD1
MOV A,R3
CLR C
CJNEA,#60H,HHN1
HHN1:JCSEETN1
LCALL CLR0
JMP SEETN1
SET6:INC R5 闹钟时调整
SEET6:LCALLDISPLAY
JB P1.7,SEET6
SEETNH1:LCALLDDL
JB P1.7,SETF
MOV R0,#7EH
LCALLADD1
MOV A,R3
CLR C
CJNEA,#24H,HOUU1
HOUU1:JC SEETNH1
LCALL CLR0
JMP SEETNH1
SETF:LCALLDISPLAY
JB P1.7,SETF
LCALLDDL
JNB P1.7,SETOUT 短按调时,长按退出
CLR ET0
CLR TR0
MOV 70H,#00H设定后的时间从00秒开始走时
MOV 71H,#00H
INC R5
SET3:LCALLDISPLAY
JB P1.7,SET3
SETMM:LCALLDDL
JB P1.7,SET4
MOV R0,#77H
LCALL ADD1
MOV A,R3
CLR C
CJNEA,#60H,MMH
MMH:JC SETMM
LCALL CLR0
AJMP SETMM
SET4:INC R5
SEET4:LCALLDISPLAY
JB P1.7,SEET4
SETHH:LCALLDDL
JB P1.7,SETOUT1
MOV R0,#79H
LCALLADD1
MOV A,R3
CLR C
CJNEA,#24H,HOUU
HOUU:JC SETHH
LCALL CLR0
AJMP SETHH
SETOUT1:SETB ET0
SETB TR0 计时开始
SETOUT:MOV R5,#00H 清设置类型闪烁标志
CLRTR1 关闭T1
CLRET1 关T1中断
MOV 66H,#1
SETOUT2:LCALLDISPLAY
JNB P1.7,SETOUT2
LJMPSTART1
--------------------------延时1秒钟-----------------------
DDL:MOV 18H,#36
DDL0:MOV 17H,#239
DDL1:LCALLDISPLAY
DJNZ 17H,DDL1
DJNZ 18H,DDL0
RET
----------------------------T0中断程序------------------------
INTT0: PUSH ACC 打包
PUSH PSW
CLR ET0
CLR TR0
MOV A,#0B7H
ADD A,TL0
MOV TL0,A
MOV A,#3CH
ADDC A,TH0
MOV TH0,A
SETB TR0
DJNZ R4, OUTT0 20次中断未到中断退出
ADDSS: MOV R4,#14H 20次中断到(1秒)重赋初值
MOV R0,#71H 指向秒计时单元(70-71H)
ACALL ADD1 调用加1程序(加1秒 *** 作)
MOV A,R3 秒数据放入A(R3为2位十进制数组合)
CLR C 清进位标志
CJNE A,#60H,ADDMM
ADDMM: JC OUTT01小于60秒退出
ACALL CLR0 等于或大于60秒清0
MOV R0,#77H 指向分计时单元(76H-77H)
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#60H,ADDHH
ADDHH: JC OUTT0
ACALL CLR0
MOV R0,#79H 指向小时计时单元(78H-79H)
ACALL ADD1
MOV A,R3
CLR C
CJNE A,#24H,HOUR
HOUR: JCOUTT0
ACALL CLR0
OUTT0: MOV A,66H 查询标志
CJNE A,#1,OUTT01
MOV 72H,76H 中断退出时将分、时计时单元数据移入对应显示单元
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
OUTT01:POP PSW 出栈
POP ACC
SETB ET0 开放T0
RETI中断返回
---------------------------加1程序--------------------------
ADD1: MOV A,@R0 取当前计时单元数据到A
DEC R0 指向前一地址
SWAP A A中数据高四位与低四位交换
ORL A,@R0 前一地址中数据放入A中低四位
ADD A,#01H A加1 *** 作
DA A 十进制调整
MOV R3,A 移入R3寄存器
ANL A,#0FH 高四位变0
MOV@R0,A 放回前一地址单元
MOV A,R3 取回R3中暂存数据
INCR0 指向当前地址单元
SWAP A A中数据高四位与低四位交换
ANL A,#0FH 高四位变0
MOV @R0,A 数据放入当削地址单元中
RET
CLR0: CLR C
CLR A 清累加器
MOV @R0,A 清当前地址单元
DEC R0 指向前一地址
MOV @R0,A 前一地址单元清0
RET 子程序返回
-------------------------调时闪烁程序----------------------
INTT1: PUSHACC
PUSHPSW
MOV TL1,#0B0H
MOV TH1,#3CH
DJNZR2,INTT1OUT0.3秒未到退出中断(50MS中断6次)
MOV R2,#06H 重装0.3秒定时用初值
CPL 02H0.3秒定时到对闪烁标志取反
JB 02H,FLASH1 02H位为1时显示单元"熄灭"
MOV A,R5
CJNEA,#01H,NL
JMP NNN1
NL:CJNEA,#02H,NL1
LJMPNNN1
NL1:CJNEA,#03H,NL2
LJMPNLL
NL2:CJNEA,#04H,INTT1OUT
LJMPNLL
NLL:MOV 72H,76H
MOV 73H,77H
MOV 74H,78H
MOV 75H,79H
AJMPINTT1OUT
NNN1:MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7DH
MOV 75H,7EH
INTT1OUT:POP PSW 恢复现场
POP ACC
RETI 中断退出
FLASH1:MOV A,R5
CJNEA,#01H,ML
LJMPMNN1
ML:CJNEA,#02H,ML1
LJMPMNN2
ML1:CJNEA,#03H,MN
LJMPMLL
MN:CJNEA,#04H,INTT1OUT
LJMPMHL
MLL:MOV 72H,7AH
MOV 73H,7AH 显示单元(72-73H),将不显示分数据
MOV 74H,78H
MOV 75H,79H
AJMPINTT1OUT
MHL:MOV 72H,76H
MOV 73H,77H
MOV 74H,7AH 显示单元(74-75H),小时数据将不显示
MOV 75H,7AH
AJMPINTT1OUT
MNN1:MOV 72H,7AH
MOV 73H,7AH 显示单元(72-73H),将不显示闹钟分数据
MOV 74H,7DH
MOV 75H,7EH
AJMPINTT1OUT
MNN2:MOV 72H,7BH
MOV 73H,7CH
MOV 74H,7AH
MOV 75H,7AH 显示单元(74-75H),闹钟小时数据将不显示
AJMPINTT1OUT
-------------------------显示-------------------------------
DISPLAY:MOVDPTR,#DISDATA
MOVA,70H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.0
NOP
NOP
NOP
SETB P1.0
MOVA,71H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.1
NOP
NOP
NOP
SETB P1.1
MOVA,72H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.2
NOP
NOP
NOP
SETB P1.2
MOVA,73H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.3
NOP
NOP
NOP
SETB P1.3
MOVA,74H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.4
NOP
NOP
NOP
SETB P1.4
MOVA,75H
MOVC A,@A+DPTR
MOVP3,A
CLRP1.5
NOP
NOP
NOP
SETB P1.5
RET
BEEP:MOV A,68H 查询标志
CJNE A,#1,BEERE
MOV A,78H 查询闹钟时个位
CJNE A,7DH,BEERE
MOV A,79H 查询闹钟时十位
CJNE A,7EH,BEERE
MOV A,76H 查询闹钟分个位
CJNE A,7BH,BEERE
MOV A,77H 查询闹钟分十位
CJNE A,7CH,BEERE
BB:CLR P1.6
LCALL DDL
SETB P1.6
LCALL DDL
JNB P1.7,BEERR
BEERE:RET
BEERR:SETB P1.6
MOV 68H,#0
LCALL DISPLAY
JNB P1.7,BEERR
JMP BEERE
DISDATA:DB 0C0H,0F9H,64H,70H,59H,52H,42H,0F8H,40H,50H,0FFH 0123456789空白
END
键咐掘 1、首先我们要把万年历翻过来,即是背面要对向自身。
2、紧接着按一下“设置”键(进入时间设置状态,同时年份“闪烁”,可按“上调”或“流水(下调)”键修改年份。
3、修改好后按“设置”键将闪烁位移到公历“月”,按“上调”或“流水(下调)”键修改月份。需要注意的是按钮上面简此是双箭头的,这时电子钟的年份数字就会开始闪烁稿核。
4、然后我们再按一下就轮到月份的数字闪烁,像这样依次年月日时分选择。
5、然后再按“+”的按钮,旁边写着“修改/闹铃”那个。(按“+”按钮只能是往上加,没有减的)。
6、最后按一下“复位”按钮,最回到正常时间状态即可调好时间了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)