DispTime1: MOV R0,#buffer ;写入时间缓存区
MOV A,TIME+6
LCALL BcdToAscii
MOV A,#0C4H ;年C4EA
MOV @R0,A
INC R0
MOV A,#0EAH
MOV @R0,A
INC R0
MOV A,TIME+5
LCALL BcdToAscii ;BCD转ASCII
MOV A,#0D4H ;月D4C2
MOV @R0,A
INC R0
MOV A,#0C2H
MOV @R0,A
INC R0
MOV A,TIME+3
LCALL BcdToAscii
MOV A,#0C8H ;日C8D5
MOV @R0,A
INC R0
MOV A,#0D5H
MOV @R0,A
INC R0
MOV A,#' ' ;星期
MOV @R0,A
INC R0
MOV A,TIME+4
DEC A
RL A
RL A
MOV DPTR,#DAYCHA ;星期转换
ADD A,DPL
MOV DPL,A
JNC DispTime11
INC DPH
DispTime11: CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
JNZ DispTime11
MOV A,#88H
MOV R0,#buffer
CALL Disp_LineR
RET
DAYCHA: DB 'MON',00H,'TUE',00H,'WED',00H
DB 'THU',00H,'FRI',00H,'SAT',00H
DB 'SUN',00H
这是大部分的代码,而我对下面部分该如何用C语言改写存在疑问(具体是不懂单片机中ACC、DPTR和CY该如何在C51中具体实现)请大神们解惑。
MOV A,TIME+4
DEC A
RL A
RL A
MOV DPTR,#DAYCHA ;星期转换
ADD A,DPL
MOV DPL,A
JNC DispTime11
INC DPH
DispTime11: CLR A
MOVC A,@A+DPTR
MOV @R0,A
INC R0
INC DPTR
JNZ DispTime11
MOV A,#88H
MOV R0,#buffer
CALL Disp_LineR
RET