学校做的,代码老师给的应该没问题。应该是板子焊错了,但不清楚哪里焊错了。
单片机源程序如下:
//定义区
DISPBUFF EQU 30H
//==============
ORG 0000H
LJMP MAIN
ORG 0030H
MAIN: MOV SP,#60H
CALL SERIALINI
MOV R0,#DISPBUFF
MOV R6,#07
CALL CLRDISP
;MOV R0,#DISPBUFF
;MOV R2,#06H
;MOV A,#06
;CALL INIBUF ;显示缓冲区清零
REDO: MOV R0,#DISPBUFF
MOV A,36H
INC 36H
ANL 36H,#0FH
MOV R2,#06H
CALL INIBUF ;显示缓冲区清零
MOV R3,#00
MOV R0,#DISPBUFF
REDO1: CALL DISP
INC R3
MOV P1,#07H
CALL DELAY
MOV A,@R0
CALL Transmit1
CJNE R3,#07,REDO1
MOV A,#0DH
CALL Transmit1
LJMP REDO
//====================
INIBUF: MOV @R0,A
INC R0
DJNZ R2,INIBUF
RET
//==================
//延时
DELAY: MOV R5,#100
DELY0: MOV R6,#250
DELY1: NOP
NOP
DJNZ R6,DELY1
DJNZ R5,DELY0
RET
//=======================
//显示缓冲区初始化
CLRDISP: MOV @R0,#00
INC R0
DJNZ R6,CLRDISP
RET
//串口初始化
SERIALINI: MOV TMOD,#20H
MOV SCON,#50H
MOV TH1,#0FDH
MOV TL1,#0FDH
SETB TR1
RET
//=======================
//串口发送
//入口条件: (A):发送字符
Transmit1: MOV SBUF,A
NOP
Sending1: JBC TI,Transed1
JMP Sending1
Transed1: RET
//=======================
//显示1位
DISP: MOV A,@R0
ANL A,#0FH
MOV DPTR,#SEG_TAB
MOVC A,@A+DPTR
MOV P0,A
MOV P1,R3
ACALL DELAY
RET
SEG_TAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,76H,73H
END
|