注释的要尽量详细些,最好每行都有注释,兄弟是答辩用的,可是上学的时候没努力,有了程序竟也是看不懂,谢谢!
LCD串口写子程序:
;DA_IN: 数据或指令
;RS_STU: 数据指令选择
;WR_COUNT1: 计数器1
;WR_COUNT2: 计数器2
SERIAL_WR: PUSH ACC
MOV A,DA_IN
SETB CS
MOV WR_COUNT1,#05H
SETB STD ;1
SERIAL_WR1: CLR SCLK
SETB SCLK
DJNZ WR_COUNT1,SERIAL_WR1
CLR STD ;RW
CLR SCLK
SETB SCLK
JNB RS_STU,CLR_RS
SETB STD ;写数据
SJMP SETB_RS
CLR_RS: CLR STD ;写指令
SETB_RS: CLR SCLK
SETB SCLK
CLR STD ;0
CLR SCLK
SETB SCLK
MOV WR_COUNT1,#02H
SERIAL_WR2: MOV WR_COUNT2,#04H
SERIAL_WR21:RLC A
MOV STD,C
CLR SCLK
SETB SCLK
DJNZ WR_COUNT2,SERIAL_WR21
MOV WR_COUNT2,#04H
CLR STD ;0
SERIAL_WR22:CLR SCLK
SETB SCLK
DJNZ WR_COUNT2,SERIAL_WR22
DJNZ WR_COUNT1,SERIAL_WR2
CLR SCLK
CLR CS
LCALL DELAY
POP ACC
RET
另一个
SUB1:JB BUSY,SUB1
MOV P0,A
NOP
SETB REQ
HE3:JNB BUSY,HE3
CLR REQ
RET
HANZI:
MOV A,#0F0H
ACALL SUB1
MOV A,#02H
ACALL SUB1
MOV A,#00H
ACALL SUB1
MOV A,#10H
ACALL SUB1
MOV A, #01H
ACALL SUB1
RET
ASC:
MOV A,#0F1H
LCALL SUB1
MOV A,50H
LCALL SUB1
MOV A,51H
LCALL SUB1
MOV A,52H
LCALL SUB1
RET
A\D转换
程序设计
AD: MOV 20H,#00H
MOV 21H,#00H
CLR CLK
MOV R7,#0AH
CLR CS
NOP
LP01: MOV C,DAT
MOV A,20H
RLC A
MOV 20H,A
MOV A,21H
RLC A
MOV 21H,A
SETB CLK
CLR CLK
DJNZ R7,LP01
SETB CS
MOV 22H,20H
MOV 23H,21H
RET
change: LCALL AD
MOV 40H,20H
MOV 41H,21H
;1
MOV A,41H
RRC A
MOV 41H,A
MOV A,40H
RRC A
MOV 40H,A
; 2
MOV A,41H
RRC A
MOV 41H,A
MOV A,40H
RRC A
MOV 40H,A
MOV 41H,40H
MOV 40H,#00H
LCALL AD
MOV 40H,20H
MOV 41H,21H
MOV 40H,20H
MOV 41H,21H
MOV 41H,40H
MOV 40H,#00H
MOV A,#5
MOV B,41H
mul ab
mov 33h,b
ret
总共应该是三段,谢过了诸位先!我感觉100分有点少,但是分数悬赏的时候100分是最多了.有劳了!
里面可能也会有错误,请帮忙指正,谢谢