51单片机,求用汇编语言编写延时1小时的子程序,要精确到秒级别

 我来答
zhxiufan
2016-11-14 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38388
国家科技进步奖

向TA提问 私信TA
展开全部
这个可以做到,如果晶振是12M的话,一下方法可以实现延时1小时,精确度在秒级别。
DELAY1H:
MOV R7,#180 ;1/1000000
DLY1H:
LCALL DELAY_20S ;180*19.960603s +2*180
DJNZ R7,DLY1H ;2*180/1000000
RET 2/1000000
共延时时间:3592.9s误差为7.1秒,如果再精确的话,再加一点延时就可以了。

DELAY_20S: ;Total=19.960603s
MOV R2,# ;1
DLY1:
MOV R3,#200 ;1*200
DLY2:
MOV R4,#248 ;1**200*200
DJNZ R4,$ ;2**248*200*200
DJNZ R3,DLY2 ;2*200*200
DJNZ R2,DLY1 ;2*200
RET ;2
47okey
推荐于2018-03-13 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5900
采纳率:75%
帮助的人:2426万
展开全部
延时一小时,这么长,应该要用定时器,不能用循环的方式。
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分钟正常。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
做而论道
高能答主

2012-01-02 · 把复杂的事情简单说给你听
知道大有可为答主
回答量:3万
采纳率:80%
帮助的人:8327万
展开全部
单片机时钟,时分秒。
时,即每隔一小时,加一次一。
利用这种程序即可,不用单独编写子程序。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式