學校做的,代碼老師給的應該沒問題。應該是板子焊錯了,但不清楚哪里焊錯了。
單片機源程序如下:
//定義區
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
|