标题: 求助:定时器电子时钟1602显示,只能显示到5就死机,求原因 [打印本页]

作者: lspcdzx2012    时间: 2012-7-22 17:05
标题: 求助:定时器电子时钟1602显示,只能显示到5就死机,求原因
RS BIT P3.5
RW BIT P2.7
EN BIT P3.4
LCD EQU P0
TEMP EQU 40H
TEMP1 EQU 41H
TEMP2 EQU 42H
SEC EQU 43H
MIN EQU 44H
HOUR EQU 45H
SECGE EQU 46H
SECSHI EQU 47H
MINGE EQU 48H
MINSHI EQU 49H
HOURGE EQU 4AH
HOURSHI EQU 4BH
FLAG BIT 20H.0
BUSYFLAG BIT P0.7
ORG 0000H
AJMP MAIN
ORG 000BH
AJMP TIMER0
ORG 0030H
MAIN:
MOV R5,#200
DJNZ R5,$
MOV SP,#50H
MOV TEMP,#00
CLR FLAG
SETB P2.6
MOV P0,#00H
CLR P2.6
SETB P2.7
MOV P0,#0FFH
CLR P2.7
CLR P2.4
MOV DPTR,#TAB
MOV TMOD,#00000001B
MOV TH0,#3CH
MOV TL0,#0B0H
SETB ET0
SETB TR0
SETB EA
ACALL LCD_INIT
LOOP6:
JNB FLAG,LOOP5
CLR FLAG
INC SEC 
MOV A,SEC
CJNE A,#60,LOOP2
MOV A,#00
MOV SEC,A
INC MIN
MOV A,MIN
CJNE A,#60,LOOP3
MOV A,#00
MOV MIN,A
INC HOUR
MOV A,HOUR
CJNE A,#24,LOOP4
MOV A,#00
MOV HOUR,A
LOOP4:
MOV B,#10
DIV AB
MOV HOURGE,B
MOV HOURSHI,ACC
LOOP3:
MOV B,#10
DIV AB
MOV MINGE,B
MOV MINSHI,ACC
LOOP2:
MOV B,#10
DIV AB
MOV SECGE,B
MOV SECSHI,ACC
LOOP5:
ACALL TEST_BUSY
MOV TEMP1,#80H
ACALL WR_COM
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,HOURSHI
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,HOURGE
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,#10
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,MINSHI
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,MINGE
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,#10
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,SECSHI
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL TEST_BUSY
MOV A,SECGE
MOVC A,@A+DPTR
MOV TEMP2,A
ACALL WR_DAT
MOV R7,#5
ACALL DELAY_1MS
ACALL LOOP6 /////////////////////////////////////////////// 
LCD_INIT:
MOV R7,#15
ACALL DELAY_1MS
MOV TEMP1,#38H
ACALL WR_COM
MOV R7,#5
ACALL DELAY_1MS
MOV TEMP1,#38H
ACALL WR_COM
MOV R7,#5
ACALL DELAY_1MS
MOV TEMP1,#38H
ACALL WR_COM
ACALL TEST_BUSY
MOV TEMP1,#38H
ACALL WR_COM
ACALL TEST_BUSY
MOV TEMP1,#08H
ACALL WR_COM
ACALL TEST_BUSY
MOV TEMP1,#01H
ACALL WR_COM
ACALL TEST_BUSY
MOV TEMP1,#06H
ACALL WR_COM
ACALL TEST_BUSY
MOV TEMP1,#0CH
ACALL WR_COM
RET
WR_COM:
CLR EN
SETB RS
SETB RW
NOP
CLR RS
CLR RW
NOP
MOV LCD,TEMP1
NOP
NOP
SETB EN
NOP
NOP
NOP
CLR EN
RET
WR_DAT:
CLR EN
SETB RS
SETB RW
NOP
CLR RW
MOV LCD,TEMP2
NOP
NOP
SETB EN
NOP
NOP
NOP
CLR EN
RET
TEST_BUSY:
SETB BUSYFLAG
SETB RS
SETB RW
CLR EN
NOP
CLR RS
NOP
SETB EN
NOP
NOP
JB BUSYFLAG,$
RET
TIMER0:
MOV TH0,#3CH
MOV TL0,#0B0H
CLR EA
PUSH ACC
SETB EA
MOV A,TEMP
INC A
CJNE A,#20,N3
SETB FLAG
MOV A,#00
N3:MOV TEMP,A
CLR EA
POP ACC
SETB EA
RETI
DELAY_1MS:
N2:MOV R5,#100
N1:MOV R6,#5
DJNZ R6,$
DJNZ R5,N1
DJNZ R7,N2
RET
ORG 0B00H
TAB:DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,3AH
END
[此贴子已经被作者于2012-9-22 9:08:32编辑过]

作者: lspcdzx2012    时间: 2012-7-22 17:13

找到原因了,问题解决了

改ACALL LOOP6为AJMP LOOP6

[此贴子已经被作者于2012-9-22 9:08:01编辑过]





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1