发表于:2008/5/27 2:19:00
#0楼
谢谢大家,我是做毕业设计,板子焊接好了,程序在
1820资料中找了一下,拼在一起,但是。。。不知道
哪里出了问题,显示一直是00.0
DQ接的是P3.3,显示部分是3位一体的LED,P0做段选
,P2.0P2.1P2.2做位选。我的想法是按照程序说的
是读出的温度是存在36H和35H中,然后我想把这个数
经过一下处理,让显示出来的是‘XY.Z’的形式。就
是让50H存小数,51存个位,52存十位。但是好像那
个结果不是存在36和35里面导致根本怎么算都是0.请
帮我看看是什么问题,非常感谢!
ORG 0010H
TEMPER_L EQU 36H
TEMPER_H EQU 35H
FLAG1 BIT 00H
DQ BIT P3.3
AAA:LCALL GET_TEMPER
LCALL DISPLAY
LJMP AAA
NOP
GET_TEMPER:
SETB P3.3
LCALL INIT_1820
JB 00H,S22
RET
S22:LCALL DELAY1
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
NOP
LCALL DELAY
LCALL DELAY
LCALL INIT_1820
LCALL DELAY1
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_18200
RET
READ_1820:
MOV R2,#8
RE1:
CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE1
RET
WRITE_1820:
MOV R2,#8
CLR C
WR1:
CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
READ_18200:
MOV R4,#2
MOV R1,#36H
RE00:
MOV R2,#8
RE01:
CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
DISPLAY:
MOV A,36H
MOV B,#10
DIV AB
MOV 51H,A
MOV 52H,B
MOV A,35H
SWAP A
ADD A,51H
MOV B,#10
DIV AB
MOV 50H,A
MOV 51H,B
MOV R2,#03H
MOV R0,#50H
MOV R1,#01H
START2: MOV A,R0
CJNE A,#51H,NEXT
MOV DPTR,#TAB2
SJMP NEXT1
NEXT: MOV DPTR,#TAB1
NEXT1: MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV A,R1
MOV P2,A
ACALL DL1
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R2,START2
SJMP DISPLAY
TAB1: DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,
7CH
TAB2: DB
0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0
EFH,0F7H,0FCH
DL1: MOV R7,#02H
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#80H
TSR1:
DJNZ R0,TSR1
SETB DQ
MOV R0,#25H
TSR2:
DJNZ R0,TSR2
JNB DQ,TSR3
LJMP TSR4
TSR3:
SETB FLAG1
LJMP TSR5
TSR4:
CLR FLAG1
LJMP TSR7
TSR5:
MOV R0,#06BH
TSR6:
DJNZ R0,TSR6
TSR7:
SETB DQ
RET
RE_CONFIG:
JB FLAG1,RE_CONFIG1
RET
RE_CONFIG1:
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#4EH
LCALL WRITE_1820
MOV A,#00H
LCALL WRITE_1820
MOV A,#00H
LCALL WRITE_1820
MOV A,#7FH
LCALL WRITE_1820
RET
DELAY:MOV R7,#00H
MIN:DJNZ R7,YS500
RET
YS500:LCALL YS500US
LJMP MIN
YS500US:MOV R6,#00H
DJNZ R6,$
RET
DELAY1:MOV R7,#20H
DJNZ R7,$
RET
END
1820资料中找了一下,拼在一起,但是。。。不知道
哪里出了问题,显示一直是00.0
DQ接的是P3.3,显示部分是3位一体的LED,P0做段选
,P2.0P2.1P2.2做位选。我的想法是按照程序说的
是读出的温度是存在36H和35H中,然后我想把这个数
经过一下处理,让显示出来的是‘XY.Z’的形式。就
是让50H存小数,51存个位,52存十位。但是好像那
个结果不是存在36和35里面导致根本怎么算都是0.请
帮我看看是什么问题,非常感谢!
ORG 0010H
TEMPER_L EQU 36H
TEMPER_H EQU 35H
FLAG1 BIT 00H
DQ BIT P3.3
AAA:LCALL GET_TEMPER
LCALL DISPLAY
LJMP AAA
NOP
GET_TEMPER:
SETB P3.3
LCALL INIT_1820
JB 00H,S22
RET
S22:LCALL DELAY1
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#44H
LCALL WRITE_1820
NOP
LCALL DELAY
LCALL DELAY
LCALL INIT_1820
LCALL DELAY1
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#0BEH
LCALL WRITE_1820
LCALL READ_18200
RET
READ_1820:
MOV R2,#8
RE1:
CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE1
RET
WRITE_1820:
MOV R2,#8
CLR C
WR1:
CLR DQ
MOV R3,#6
DJNZ R3,$
RRC A
MOV DQ,C
MOV R3,#23
DJNZ R3,$
SETB DQ
NOP
DJNZ R2,WR1
SETB DQ
RET
READ_18200:
MOV R4,#2
MOV R1,#36H
RE00:
MOV R2,#8
RE01:
CLR C
SETB DQ
NOP
NOP
CLR DQ
NOP
NOP
NOP
SETB DQ
MOV R3,#7
DJNZ R3,$
MOV C,DQ
MOV R3,#23
DJNZ R3,$
RRC A
DJNZ R2,RE01
MOV @R1,A
DEC R1
DJNZ R4,RE00
RET
DISPLAY:
MOV A,36H
MOV B,#10
DIV AB
MOV 51H,A
MOV 52H,B
MOV A,35H
SWAP A
ADD A,51H
MOV B,#10
DIV AB
MOV 50H,A
MOV 51H,B
MOV R2,#03H
MOV R0,#50H
MOV R1,#01H
START2: MOV A,R0
CJNE A,#51H,NEXT
MOV DPTR,#TAB2
SJMP NEXT1
NEXT: MOV DPTR,#TAB1
NEXT1: MOV A,@R0
MOVC A,@A+DPTR
MOV P0,A
MOV A,R1
MOV P2,A
ACALL DL1
INC R0
MOV A,R1
RL A
MOV R1,A
DJNZ R2,START2
SJMP DISPLAY
TAB1: DB
3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,
7CH
TAB2: DB
0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0
EFH,0F7H,0FCH
DL1: MOV R7,#02H
DL: MOV R6,#0FFH
DL6: DJNZ R6,DL6
DJNZ R7,DL
RET
INIT_1820:
SETB DQ
NOP
CLR DQ
MOV R0,#80H
TSR1:
DJNZ R0,TSR1
SETB DQ
MOV R0,#25H
TSR2:
DJNZ R0,TSR2
JNB DQ,TSR3
LJMP TSR4
TSR3:
SETB FLAG1
LJMP TSR5
TSR4:
CLR FLAG1
LJMP TSR7
TSR5:
MOV R0,#06BH
TSR6:
DJNZ R0,TSR6
TSR7:
SETB DQ
RET
RE_CONFIG:
JB FLAG1,RE_CONFIG1
RET
RE_CONFIG1:
MOV A,#0CCH
LCALL WRITE_1820
MOV A,#4EH
LCALL WRITE_1820
MOV A,#00H
LCALL WRITE_1820
MOV A,#00H
LCALL WRITE_1820
MOV A,#7FH
LCALL WRITE_1820
RET
DELAY:MOV R7,#00H
MIN:DJNZ R7,YS500
RET
YS500:LCALL YS500US
LJMP MIN
YS500US:MOV R6,#00H
DJNZ R6,$
RET
DELAY1:MOV R7,#20H
DJNZ R7,$
RET
END