篮球计时计分器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)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
Ricman.only
1楼-- · 2020-01-20 21:47
正在做这个   改天请教  谢谢了
Stone_up
2楼-- · 2020-01-21 02:29
楼主能不能描述下 大概的功能?


error_dan
3楼-- · 2020-01-21 03:25
开一个小于等于一秒的定时器中断进去对一个自减变量计数,然后主程序就循环扫描按键和刷显示,这是前后台系统。
如果时间取的很短的话可以分成几个部分,分别完成扫描按键,计数(也就是计时),和刷显示的任务,这勉强能算分时系统。
ayuanshop
4楼-- · 2020-01-21 06:54
这是某个专业的课程设计吧.....静下心来琢磨一下,是可以搞定的.
bg6agf
5楼-- · 2020-01-21 10:05
 精彩回答 2  元偷偷看……
.Alan.
6楼-- · 2020-01-21 11:09
我是用C在51写的      正在解决5V的单片机给12V的数码管供电

一周热门 更多>