数码管显示,定时器的计时问题。

2019-07-15 19:38发布

个位大神我又来求助了。我将以前做过的数码管动态显示和计时器结合起来,想做一个定时1s的计时器(晶振12mhz) ,程序如下
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP LOOP
ORG 1000H
MAIN:
        MOV B,#14H
           ACALL I
LOOP1:   
    MOV DPTR,#TAB
    MOV R0,#00H                           ;R0个位段码
        MOV R1,#00H                           ;R1十位段码
        MOV R2,#00H                           ;R2百位段码
LOOP2:
       
    MOV R4,#07H                          ;R4位码
    MOV P1,R4                          ;P1显示位址
        MOV A,R0
        MOVC A,@A+DPTR
        MOV P0,A                          ;P0显示段码
        ACALL DELAY                          ;短延迟
        MOV P0,#00H
LOOP3:
        DEC R4
        MOV P1,R4
        MOV A,R1
        MOVC A,@A+DPTR
        MOV P0,A
        ACALL DELAY
        MOV P0,#00H
LOOP4:
        DEC R4
        MOV P1,R4
        MOV A,R2
        MOVC A,@A+DPTR
        MOV P0,A
        ACALL DELAY
        MOV P0,#00H
                          
        CJNE R0,#0AH,LOOP2
        MOV R0,#00H
        INC R1
        CJNE R1,#0AH,LOOP2
        MOV R1,#00H       
        INC R2
        CJNE R2,#0AH,LOOP2
        SJMP LOOP2

I:
        MOV TMOD,#01H
        MOV TH0,#3CH
        MOV TL0,#0B0H
        SETB EA
        SETB ET0
        SETB TR0
        RET
LOOP:
        MOV TH0,#3CH
        MOV TL0,#0B0H
        DJNZ B,LOOP5
        MOV B,#14H
        INC R0
       
LOOP5:
        REti

DELAY:        
        MOV R7,#50
DD1:
        MOV R6,#50
DD2:   
        DJNZ R6,DD2
        DJNZ R7,DD1
        RET


TAB: DB 03FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
         END                               

但是实际上跳一次的时间远远大于1s,我觉得除了显示程序中的延迟程序占了大量的时间之外,请问还有什么原因,该怎么解决,谢谢!


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
a422061641
1楼-- · 2019-07-15 21:50
 精彩回答 2  元偷偷看……
依然落叶飘零
2楼-- · 2019-07-16 00:48
本帖最后由 依然落叶飘零 于 2014-5-21 22:26 编辑

远远大于1s是多久跳一次?将进位的那段代码放在中断里面。
a422061641
3楼-- · 2019-07-16 04:32
依然落叶飘零 发表于 2014-5-21 22:21
远远大于1s是多久跳一次?将进位的那段代码放在中断里面。

将进位放在主程序中就是差不多7秒调一次,放在中断就一直没有跳了,
依然落叶飘零
4楼-- · 2019-07-16 09:34
a422061641 发表于 2014-5-21 23:04
将进位放在主程序中就是差不多7秒调一次,放在中断就一直没有跳了,

你的是不是普中的开发板?我下载进去是正常显示的。我改了一下位选。你的位选为什么这么奇怪的?刚才我就想问了,0x07,0x06,0x05?你的电路是怎样接的。
小白TU
5楼-- · 2019-07-16 13:30
C语言比较方便,为什么不用呢
a422061641
6楼-- · 2019-07-16 18:20
 精彩回答 2  元偷偷看……

一周热门 更多>