延时一小时,这么长,应该要用定时器,不能用循环的方式。
ORG 00H
AJMP MAIN
ORG 0BH
AJMP T0INT0
ORG 30H
MAIN:
MOV SP,#60H
MOV R4,#20
MOV TMOD,#01H
MOV TH0,#3CH ;12M晶振时定时初值取#3CB0H,还可细调如 TL=#0B7H,可以更准
MOV TL0,#0B7H
SETB EA
SETB ET0
SETB TR0
AJMP $
T0INT0:
MOV TH0,#3CH ;定时中断子程序。重装定时常数
MOV TL0,#0B7H
DJNZ R4,RTI ;未1S,跳出中断
MOV R4,#20
INC 26H ;秒+1
MOV A,26H
CJNE A,#60,RTI
MOV 26H,#0
INC 27H ;分+1
MOV A,27H
CJNE A,#60,RTI
MOV 27H,#0
INC 28H ;时+1
MOV A,28H
CJNE A,#24,RTI
MOV 28H,#0
RTI:
RETI
END
追问定时器肯定用的,还有这段代码你用软件仿真过了,正确?如果没问题的话,我还可以多加20分
追答应该是没错的。1小时太长我也没仿真,我只试过满60秒分钟能+1,试了3分钟正常。
本回答被提问者和网友采纳