找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1435|回复: 4
打印 上一主题 下一主题
收起左侧

如果想要单片机计数的时长超过100s应该怎么改动汇编程序?

[复制链接]
跳转到指定楼层
楼主
ID:708783 发表于 2020-3-26 19:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;定义数据RAM空间
        LMS EQU 37H                 ;定义一个变量存放计数值毫秒
        LMIAO EQU 38H         ;定义一个变量存放计数值秒
                ;数据存放
                ORG 0100H
TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H
                                        ;表:共阳数码管 0-9
                ORG 0000H
                LJMP MAIN
                ORG 000BH                 ;中断入口
                LJMP TIMER
                ORG 0200H
MAIN: MOV TMOD,#01H     ;设置定时器11模式,即16位计算模式
        MOV TH0,#0D8H     ;给计数寄存器赋值,10毫秒时间
        MOV TL0,#0F0H
        MOV IE,#82H             ;开总中断和T0中断
        CLR A
        MOV LMS,A                 ;计数缓冲清0
        MOV LMIAO,A
        SETB TR0 ;
M1:         MOV A,LMS
        CJNE A,#100,M2         ;10毫秒计数,100次即为1
        MOV LMS,#0
        MOV A,LMIAO
        INC A
        MOV LMIAO,A
        CJNE A,#100,M2         ;如果加到100秒,则清0
        MOV LMIAO,#0
M2:         LCALL DISPLAY         ;显示
        SJMP M1
TIMER: INC LMS                 ;定时中断产生,以10毫秒计数加1
        MOV TH0,#0D8H         ;重新装入定时器值10毫秒
        MOV TL0,#0F0H
        RETI
DISPLAY:  MOV DPTR,#TABLE ;数码管显示子程序
        MOV A,LMIAO
        MOV B,#10
        DIV AB
        SETB P3.4
        SETB P3.3                 ;千位数码管
        MOVC A,@A+DPTR
        MOV P1,A
        MOV P1,#0FFH
        CLR P3.3                         ;百位数码管
        MOV A,B
        MOVC A,@A+DPTR
        ANL A,#0X7F                 ;加入小数点
        MOV P1,A
        MOV P1,#0FFH
        MOV A,LMS
        MOV B,#10
        DIV AB
        CLR P3.4
        SETB P3.3                 ;十位数码管
        MOVC A,@A+DPTR
        MOV P1,A
        MOV P1,#0FFH
        CLR P3.3                     ;个位数码管
        MOV A,B
        MOVC A,@A+DPTR
        MOV P1,A
        MOV P1,#0FFH
        RET
        END

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:123289 发表于 2020-3-27 07:02 | 只看该作者
在中断服务子程序中,加一个计数器,计数不满时,立即返回。计数计满时再执行你的主服务内容!
如此10000秒也行、这么简单事,如何就想不到呢?
回复

使用道具 举报

板凳
ID:401564 发表于 2020-3-27 08:20 | 只看该作者
如果你定时器中断不改变的话,100S的延时要用3个地址在存放时间数据
在定时器中使用DJNZ来实现
回复

使用道具 举报

地板
ID:708783 发表于 2020-3-27 10:10 | 只看该作者
yzwzfyz 发表于 2020-3-27 07:02
在中断服务子程序中,加一个计数器,计数不满时,立即返回。计数计满时再执行你的主服务内容!
如此10000 ...

呃呃,对不起,我刚刚学习,学的不精。其实我之前改过显示分秒的,是在原来的加一个分钟中断,和显示,然后计数超过一百秒,没有要求上限,我有点😵
回复

使用道具 举报

5#
ID:708783 发表于 2020-3-27 10:12 | 只看该作者
Y_G_G 发表于 2020-3-27 08:20
如果你定时器中断不改变的话,100S的延时要用3个地址在存放时间数据
在定时器中使用DJNZ来实现

对对,我之前改分秒显示就是这样改的,加一个存储单元,加一个d'j'n'z
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表