篮球24秒计时器,可以用c语言编译下吗?
MAIN: MOV P0,#3FH ;初始化赋值MOV P1,#0FFH
MOV P2,#3FH
MOV R0,#00H
MOV R1,#24
MOV DPTR,#TAB
KEY: JB P3.0,$ ;判断启动键是否按下
ACALL DELAY30MS
JNB P3.0,$
ACALL START
SJMP KEY ;
START: MOV TMOD,#01H ;启动程序
MOV TH0,#0D8H
MOV TL0,#0EFH
SETB ET0
SETB EA
SETB TR0
STOP: JB P3.2,ZTJX ;判断复位键是否程序
ACALL DELAY30MS
JNB P3.2,$
SJMP MAIN ;复位程序
ZTJX : JB P3.1,XS ;判断暂停键是否按下
ACALL DELAY30MS
JNB P3.1,$
ZT: CLR TR0 ;K2按下后暂停计数,并关中断
CLR ET0
CLR EA
JB P3.1,$ ;K2再次按下继续计数
ACALL DELAY30MS
JNB P3.1,$
JX: SETB ET0 ;第二次按下暂停键后继续倒计时(继续启动)
SETB EA
SETB TR0
XS: MOV A,R1 ;显示子程序
MOV B,#10
DIV AB
MOVC A, @A+DPTR
MOV P0,A ; 显示秒十位
MOV A,B
MOVC A, @A+DPTR
MOV P2,A ;显示秒个位
CJNE R0,#100,STOP ;1S时间到否,未到直接转数码管显示
MOV R0,#00H ;1S时间到,R0重赋初值
MOV A,R1 ;R1减1,不为0转数码管显示,为0则重新开始
CLR C
SUBB A,#1
MOV R1,A
JNC STOP ;计数未到0继续判断暂停键和停止键
MOV R1,#24 ;计数到0停止计数并关中断,
CLR ET0
CLR EA
CLR TR0
SJMP SND ;跳到报警程序
SJMP KEY ; 跳回开始检测启动键
RET
DELAY30MS: MOV R6,#150 ;延时程序子程序
AAA: MOV R7,#100
DJNZ R7,$
DJNZ R6,AAA
RET
T0_ISR: CLR TR0 ;中断程序子程序
MOV TH0,#0D8H
MOV TL0,#0EFH
INC R0
SETB TR0
RETI
SND: CLR P1.0 ;报警程序子程序(红色发光二极管亮一下就灭)
MOV R7,#0FFH
DL: MOV R6,#0FFH
DL1: DJNZ R6,DL1
DJNZ R7,DL
SETB P1.0
RET
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END