帮我看看这程序出错在哪

2019-07-16 05:26发布

本帖最后由 cccdddfff 于 2012-6-19 15:38 编辑

   ORG  0000H
LJMP   MAIN
ORG  0003H
LJMP  BREAK0


MAIN:   
SETB IT0 ;设置中断
SETB EX0
MOV TMOD,#01H ;设置定时器0方式1
MOV TH0,#0D8H ;初D8F0定时10ms
MOV TL0,#0F0H


  CLR A
MOV R0,#0H
MOV R1,#0H
MOV R4,#0H
MOV R5,#0H
CALL KEY
MOV R0,A
MOV A,#0E0H ;输出显示十位
MOV P2,A
MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CALL KEY
MOV R1,A ;输入个位
SETB EA  ;设置中断允许

WAIT: CALL SHOW ;等待开始
JMP WAIT

BEGIN: SETB EA  ;设置中断允许
JP0: CALL SHOW
DEC R5
CJNE R5,#0FFH,JP0
DEC R4
MOV R5,#9H
CJNE R4,#0FFH,JP0
DEC R1
MOV R4,#5H
CJNE R1,#0FFH,JP0
DEC R0
MOV R1,#9H
CJNE R0,#0FFH,JP0
JMP BEEP

  
SHOW: MOV R3,#25H
LOOP: MOV R2,#0D0H  ;设置分输出个位
MOV P2,R2
MOV A,R1  ;取分个位数值
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A  ;输出
CALL DY12  
MOV R2,#0E0H  ;设置输出分十位
MOV P2,R2
MOV A,R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CALL DY12
MOV R2,#70H  ;设置输出秒个位
MOV P2,R2
MOV A,R5
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CALL DY12
MOV R2,#0B0H  ;设置输出秒十位
MOV P2,R2
MOV A,R4
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV P1,A
CALL DY12
DJNZ R3,LOOP  
RET

BREAK0: SETB EA
CALL KEY0  ;中断程序
SETB EA
RET

STOP: SETB C
MOV P3.7,C
SETB EA
JMP WAIT

BEEP: SETB EA
CLR C
MOV P3.7,C
MOV R1,#2H
MOV R0,#0H
MOV R4,#0H
MOV R5,#0H
JP1: CALL SHOW
SETB EA
DEC R5
CJNE R5,#0FFH,JP1
DEC R4
MOV R5,#9H
CJNE R4,#0FFH,JP1
DEC R1
MOV R4,#5H
CJNE R1,#0FFH,JP1
DEC R0
MOV R1,#9H
CJNE R0,#0FFH,JP1
JMP MAIN



KEY0: CLR A
SETB RS1
ACALL KEY2   ;处理特殊键
CJNE A,#0AH,KK
CLR RS1
JMP BEGIN
KK: CJNE A,#0BH,KEND
CLR RS1
AJMP STOP

KEY2: ACALL KS1
JNZ LK11
AJMP KEND
LK11: ACALL DY12
ACALL KS1
JNZ LK2
AJMP KEY2

KEY: CLR A
SETB RS1
ACALL KEY1   ;处理特殊键
CJNE A,#0AH,KKK
CLR RS1
JMP BEGIN
KKK: CJNE A,#0BH,KEND
CLR RS1
AJMP STOP

KEY1: ACALL KS1   ;键盘程序
JNZ LK1   
AJMP KEY1
LK1: ACALL DY12
ACALL KS1
JNZ LK2
AJMP KEY1
LK2: MOV R2,#0FEH
MOV R4,#00H
LK4: MOV A,R2
MOV P2,A
MOV A,P0
JB ACC.0,LONE
MOV A,#00H
AJMP LKP
LONE: JB ACC.1,LTWO
MOV A,#04H
AJMP LKP
LTWO: JB ACC.2,LTHR
MOV A,#08H
AJMP LKP
LTHR: JB ACC.3,NEXT
MOV A,#0CH
LKP: ADD A,R4
PUSH ACC
LK3: ACALL KS1
JNZ LK3
POP ACC
KEND: CLR RS1
RET
NEXT: INC R4
MOV A,R2
JNB ACC.7,KND
RL A
MOV R2,A
AJMP LK4
KND: AJMP KEY1
KS1: MOV A,#0E0H
MOV P2,A
MOV A,P0
CPL A
ANL A,#0FH
RET


DY12: MOV R7,#25
DY1: MOV R6,#200
DY2: DJNZ R6,DY2
DJNZ R7,DY1
RET

DY10: MOV TH0,#0D8H ;重装初值D8F0定时10ms
MOV TL0,#0F0H
SETB TR0 ;启动定时器
DYWAIT: JBC TF0,DYEND
JMP DYWAIT
DYEND: CLR TR0
RET


TAB: DB 3FH,06H,5BH,4FH,66H,6DH
DB 7DH,07H,7FH,6FH
JMPTAB: JMP BEGIN
JMP STOP
END



LO  EQU  30H
SI  EQU  31H
TC  EQU  32H
ORG  0000H
JMP  BEGIN
ORG  000BH
JMP  TOINT
BEGIN:
MOV SP, #60H
        MOV TMOD, #00H
        MOV IE, #82H
WAIT :
MOV C,P1.4
JC RUN
JMP WAIT
RUN :
       ACALL SOUNDON
       ACALL PLAYSONG
       ACALL SOUNDOFF
       JMP WAIT
PLAY :
MOV C,P1.4
JC PLAY0
ACALL SOUNDOFF
JMP    WAIT

PLAY0:
ACALL  LOADVALUE
L1 :
MOV R5, #30
ACALL DELAY
DJNZ R3, L1
ACALL SOUNDOFF
MOV  R5, #3
ACALL DELAY
ACALL   SOUNDON
RET
PLAYSONG:
        MOV    TC, #0
X0:
        MOV    DPTR, #SONG
        MOV    A, TC
        MOVC   A, @A+DPTR
        MOV    R4, A
        CJNE   A, #0FFH, X1
        RET
X1:
        MOV   DPTR, #LEN
        MOV   A, TC
MOVC A, @A+DPTR
        MOV   R3, A
        ACALL  PLAY
        INC   TC
        JMP   X0
        RET
SOUNDON:
        SETB  TR0
        RET
SOUNDOFF:
        CLR  TR0
        RET
LOADVALUE:
MOV   DPTR, #SILIST
MOV A,R4
MOVC  A,@A+DPTR
MOV   SI,A
MOV   DPTR, #LOLIST
MOV   A,    R4
MOVC  A,    @A+DPTR
MOV   LO,   A
RET
TOINT :
MOV   TL0, LO
MOV   TH0, SI
CPL   P3.4
REti
DELAY :
MOV   R6, #35
D1 :
MOV   R7,  #70
DJNZ   R7, $
DJNZ   R6, D1
DJNZ   R5, DELAY
RET
SILIST:
DB  196,202,208,211,216,220,224
DB  226,229,232,233,236,238,240
DB  241,242,244,244,246,247,248
LOLIST:
DB  4,28,21,7,5,16,12
DB  4,13,10,20,3,8,6
           
SONG:
DB  
12,15,13,12,12,10,12,13,15,12,12,13,12,10,9,9,10,12,10,9,10,8
DB
12,15,13,15,12,10,12,9,10,12,10,12,13,15,12,13,12,10,12,8,10,9
DB

10,9,8,9,10,13,12,10,12,13,12,15,13,12,10,12,9,12,9,10,9,8,0F
FH
LEN:
DB 2,1,1,2,2,1,1,1,1,2,2,2,1,1,2,2,2,1,1,1,1,3
DB 2,2,1,1,2,1,1,1,1,2,1,1,1,1,1,1,1,1,1,1,1,2
DB 1,1,1,1,2,1,1,1,1,2,1,1,1,1,1,1,2,1,1,1,1,2,0FFH
END
音乐定时器
图在附件
http://pan.baidu.com/netdisk/singlepublic?fid=411529_615487490  或者 {MOD}下载
23333333333333.DSN 下载积分: 积分 -1 分
51.86 KB, 下载次数: 0, 下载积分: 积分 -1 分
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。