我的程序的结果怎么是这样 ;的啊!那为大侠帮我看看
下面的程序是实现LCD的字符左移,但是我在proteus上仿真的结果不对.结果如下图:
EN EQU P3.0
RW EQU P3.1
RS EQU P3.2
LCD EQU P1
;===================================
ORG 0
INITIALIZE:
MOV SP,#70H;
;
START: MOV A,#00111000B
CALL WR_INST
MOV A,#00001000B
CALL WR_INST
MOV A,#00000001B
CALL WR_INST
MOV A,#00001111B
CALL WR_INST
MOV A,#00000110B
CALL WR_INST
;======================================
LOOP:
MOV A,#10000000B
CALL WR_INST
MOV DPTR,#LINE1
CALL WR_RAM;=======
MOV R3,#40
LOOP2: CALL WR_STRING
CALL LSHIFT
DJNZ R3,LOOP2
CALL DELAY2
;======================================
MOV A,#11000000B
CALL WR_INST
MOV DPTR,#LINE2
CALL WR_RAM;=======
MOV R3,#40
LOOP3: CALL WR_STRING
CALL LSHIFT
DJNZ R3,LOOP3
CALL DELAY2
;======================================
MOV A,#10000000B
CALL WR_INST
MOV DPTR,#LINE3
CALL WR_RAM;=======
MOV R3,#40
LOOP4: CALL WR_STRING
CALL LSHIFT
DJNZ R3,LOOP4
CALL DELAY2
;======================================
MOV A,#11000000B
CALL WR_INST
MOV DPTR,#LINE4
CALL WR_RAM;=======
MOV R3,#40
LOOP5: CALL WR_STRING
CALL LSHIFT
DJNZ R3,LOOP5
CALL DELAY2
JMP LOOP
;======================================
WR_INST:
CALL CHECK_BF
CLR RS
CLR RW
SETB EN
MOV LCD,A
CLR EN
RET
;=====================================
CHECK_BF:
PUSH ACC
BUSY: CLR RS
SETB RW
SETB EN
MOV A,LCD
CLR EN
; JB ACC.7,BUSY
CALL DELAY
POP ACC
RET
;===================================== 把 ROM 读到RAM中 R7==0,R4=27H,R1=57H
WR_RAM:
MOV R1,#30H
MOV R4,#0
MOV R7,#40
NEXT1: MOV A,R4
MOVC A,@A+DPTR
MOV @R1,A
INC R1
INC R4
DJNZ R7,NEXT1
RET
;==========================================左移 R1=57H,R2=57H,R7=0,R6=X
LSHIFT:
MOV R7,#39
MOV R0,#30H
MOV R1,#31H
MOV R6,30H
LOOP1: MOV A,@R1
MOV @R0,A
INC R0
INC R1
DJNZ R7,LOOP1
MOV 57H,R6
RET
;========================================== R2=0,R1=57H
WR_STRING:
MOV R2,#40
MOV R1,#30H
NEXT: MOV A,@R1
CALL WR_DATA
INC R1
DJNZ R2,NEXT
RET
;=====================================
WR_DATA:
CALL CHECK_BF
SETB RS
CLR RW
SETB EN
MOV LCD,A
CLR EN
RET
;===================================== R6,R7,=0
DELAY:
MOV R6,#15
D1: MOV R7,#200
DJNZ R7,$
DJNZ R6,D1
RET
;======================================;R5,R6,R7=0
DELAY2:
MOV R5,#20
D3: MOV R6,#200
D2: MOV R7,#250
DJNZ R7,$
DJNZ R6,D2
DJNZ R5,D3
RET
;=======================================
LINE1: DB ''0123456789ABCDEFGHIJ0123456789ABCDEFGHIJ0123456789''
LINE2: DB ''YU KANGLONG KUI NI HU ZHONGDE %323445438934953234 ''
LINE3: DB ''hjh8&((*)(()(%#%$^^&**&*&*&*&**&(*()*()_(*)(*((*( ''
LINE4: DB '' 799++++---------------hHDHSDJFHUERIFDFHSDFWEIFDFD''
;=======================================
END
发表时间:2006年12月17日15:53:15