篮球计时计分器24秒部分 各位高手指教

2020-01-20 19:06发布

我在用51做一个篮球计分计时器,网上找了一个程序实现了几分功能,是用c编程的,还想加一个计时功能,找了一个汇编编程的,想把汇编转成c,哪位高手帮个忙。下面是程序:
Time      EQU  24
T0IntCnt   Data  30H
DispTime  Data   31H
KeyStart   Bit    P2.4
KeyPause  Bit    P2.5
         ORG 0000H
         AJMP        MAIN
         ORG 000BH
         AJMP        T0Int
         ORG 0030H
MAIN:
SETB         00H
MOV         SP,              #70H
MOV         DPTR,                #TAB                  ;DPTR指向表首地址
MOV         DispTime,         #Time                ;显示24S时间
MOV         T0IntCnt, #20            ;中断20次
;初始化Timer0
MOV         TMOD,     #01H                  ;T0方式1
MOV         TH0,          #3CH                  ;计数初值3CB0
MOV         TL0, #0B0H
SETB         ET0
SETB         TR0
SETB         EA
         ;初始化化串行口
         MOV         SCON,       #00H
         ACALL       Display
LOOP:
         SETB         KeyStart
         JB     KeyStart, OO
         MOV         DispTime,         #24
         MOV         TH0,          #3CH                  ;计数初值3CB0
         MOV         TL0, #0B0H
         ACALL       Display
OO:
         SETB         KeyPause
         JB     KeyPause,         UU
         CPL  00H
         MOV         C,     00H
         MOV         TR0, C
UU:
         JNB  F0,             LOOP
         CLR  F0
         ACALL       Display
         AJMP        LOOP
;显示程序
;具备前0消隐
Display:
         MOV         A,     DispTime ;分解时间
         MOV         B,     #10
         DIV  AB
         MOV         R7,   A                ;保存十位
         MOV         R6,   B                ;保存个位
          MOV         A,     B                ;显示个位
HH:
         MOVC      A,     @A+DPTR
         MOV         SBUF,        A
         JNB  TI,    $
         CLR  TI
ZZ:
         MOV         A,     R7              ;取出十位
         CJNE         A,#00,  WW
         MOV         A,     #10
WW:
         MOVC      A,     @A+DPTR                  ;显示十位
         MOV         SBUF,        A
         JNB  TI,    $
         CLR  TI
ret
;T0中断服务程序
T0Int:
         DJNZ         T0IntCnt, OUT
         MOV         T0IntCnt, #20
         SETB         F0
         DEC DispTime
         MOV         A,               DispTime
         CJNE         A,#0ffh,    OUT
         MOV         DispTime,         #Time
OUT:
         MOV         TH0,                   #3CH                  ;计数初值3CB0
         MOV         TL0,           #0B0H
reti
;串行显示
Tab:
         DB 03H,9FH,25H,0DH,99H
         DB 49H, 41H,1FH,01H,09H
         DB 0FFH
;并行显示
;Tab:
         DB 0c0H,0f9H,0a4H,0b0H,99H
        DB 92H,  82H,0f8H,80H,90H
        DB 0FFH                       
END
下边图一张是24秒的,两外两张是局部放大图。按下面的键暂停,再按一下继续计时,按上面的键复位,恢复24秒继续计时  接上电源直接就显示24秒计时

24秒图 (原文件名:未命名.jpg)


24秒局部放大图 (原文件名:未命名1.jpg)


24秒局部放大图 (原文件名:未命名2.jpg)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。