怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的

怎么用51单片机定时1个小时 好像是循环,具体汇编程序是怎样的,第1张

简单啊。

大致说来就是

你先开启个定时器,根据你选用的

晶振

,计算出你要用定时器定时的基准时间,

就假设是10毫秒吧。

然后给定时器的THx,TLx写入初值,开启中断,进行定时。

然后就等待中断。

在你响应中断的程序中,再次给单片机送入初值,

由于是10毫秒中断一次,因此我们设置几个“软件计数器”

比如每此中断,软甲计数器+1,

例如“软件计数器1”在中断程序中计数100次,则是10ms*100=1s

而“软件计数器2”在1的基础上继续计数100次,则是1S*100=100S

而“软件计数器3”在2的基础上继续计数36次,则是100S*36=3600S=1小时。

程序从20H开始查找数据,把首次出现的数据存放到40H开始的单元,并在60H开始的单元,存放该数据的个数,如果数据是重复出现的,就将其个数加一。

之后从60H单元开始找最大值的位置,然后从40H开始找到出现次数最多的数据,送到A及P1。

程序已经经过了验证,符合要求,如下:

ORG 0000H

MOV 20H, #12H 准备数据.

MOV 21H, #23H

MOV 22H, #32H

MOV 23H, #32H

MOV 24H, #32H

MOV 25H, #43H

MOV 26H, #32H

MOV 27H, #56H

MOV 28H, #56H

MOV 29H, #35H

-------------------------------------------------

MOV R0, #20H未知数据起始地址.

MOV R1, #40H筛选后的数据起始地址.

MOV 7FH, #1 现筛选出来1个数据: 00H

MOV 7EH, 7FH

INC 7EH

MOV R7, #10 共有10个未知数据,(最多可以有32个)

BBB:

MOV A, @R0 取出未知数据.

MOV R1, #40H从头和已筛选出的比较.

WWW:

MOV B, @R1

CJNE A, B, CCC不同就比较下一个.

RRR:

MOV A, R1 相同则个数加一.

ADD A, #20H

MOV R1, A

INC @R1

INC R0 转到下一个未知数据.

MOV 7EH, 7FH

INC 7EH

DJNZ R7, BBB

SJMP EEE 查找数据结束

-----------------------------------------------------

CCC:

INC R1

DJNZ 7EH, WWW 按照已知数据的个数循环.

-----------------------------------------------------

MOV A, #40H没有找到,那就存入这个数据.

ADD A, 7FH

MOV R1, A 计算出新数据应该存放的地址.

MOV A, @R0

MOV @R1, A 存放.

INC 7FH 已知数据个数加一.

MOV 7EH, 7FH

INC 7EH

SJMP RRR

-----------------------------------------------------

EEE: 从筛选后的个数中找最多数据的地址.

MOV 7EH, #0

MOV R0, #60H

YYY:

MOV A, @R0

CJNE A, 7EH, $+3

JC TTT

MOV 7EH, A

MOV B, R0

TTT:

INC R0

DJNZ 7FH, YYY

-----------------------------------------------------

MOV A, B 根据地址,再找到数据.

CLR C

SUBB A, #20H

MOV R0, A

MOV A, @R0

MOV P1, A 输出到P1

SJMP $

END

------------------------------------------------------

它们是51单片机片内RAM的最后两个单元。

对筛选出来的数据,需要统计个数,进行循环处理,还需要控制循环次数,7FH 7EH,就担任了这个任务。

用Rn也可,但是涉及互相传送的时候,不方便;7FH 7EH,基本是空闲的,可以利用。

51单片机汇编语言,用定时器中断实现数码管从0-F每秒进1且循环进行。

电路与程序如下:

由于条件不足,晶振频率不明,所以,本程序没有精确定时。

提问者采纳的答案是错误的。

题目要求显示 0~F,这就需要 16 个七段码。

而采纳答案中,并没有写全。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12137231.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存