导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→我的程序的结果怎么是这样 ;的啊!那为大侠帮我看看[konglong_722]

 *第45134篇: 我的程序的结果怎么是这样 ;的啊!那为大侠帮我看看

  
楼 主:konglong_722 2006年12月17日15:53
 我的程序的结果怎么是这样 ;的啊!那为大侠帮我看看
下面的程序是实现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 


>>>>>>对该主题发表你的看法

本主题贴数1,分页: [第1页]


[上一篇主题]:PCI网卡的CBE3-0B引脚有的用处。

[下一篇主题]:字符收发不正常?[求助]