|
想问问,如何检测是否写进去了和读出来了
我用lcd显示读出来的数据都是错误的 应该全是0xff
是不是那些脉冲要延时一下啊?不够宽啊?
但是我写的这几个程序是仿照书本的程序来的哦 我就是生产脉冲pulse_spi 送地址address_spi 送数据和接收数据 putdata_spi getdata_spi 这些程序独立出来 为了省rom 和比较好调用啊!
也发上主函数来吧 关于lcd的程序是没错的
MAIN:
MOV SP,#2FH
CALL INITIAL_LCD ;初始化lcd
CALL EWEN_SPI ;开写允许
;//++++++++++++++++++++++++++++++++++在lcd第一行显示原操作数 ‘这里是正确的’
CALL ISBUSY_LCD ;lcd是否为忙 不忙才返回
MOV R4,#80H
CALL WRITECOMMAND_LCD ;//lcd写命令
MOV R3,#09H
MOV DPTR,#DATA_CODE
DISPLAY_LCD_MAIN:
CALL ISBUSY_LCD
CLR A
MOVC A,@A+DPTR
MOV R5,A
INC DPTR
CALL WRITEDATA_LCD ;//函数参数 R5为数据
DJNZ R3,DISPLAY_LCD_MAIN
;//------------------------------------
;//++++++++++++++++++++++++++++++++++ 以0H为首地址写入
MOV R6,#09H
MOV DPTR,#DATA_CODE
MOV R4,#0H
WRITESPI_MAIN:
CLR A
MOVC A,@A+DPTR
;ADD A,#1 ;//简单变数据存储
MOV R5,A
CALL WRITE_SPI ;//函数参数 R4为地址 R5为数据
INC DPTR
INC R4
DJNZ R6,WRITESPI_MAIN
;//------------------------------------
;//++++++++++++++++++++++++++++++++++ 读数据 放在以DATA_BUFFER为首的ram中
MOV R6,#09H
MOV R0,#DATA_BUFFER
MOV R4,#0
READSPI_MAIN:
CALL READ_SPI ;//函数参数 R4为地址 R5为数据
MOV A,R5
MOV @R0,A
INC R0
INC R4
DJNZ R6,READSPI_MAIN
;//------------------------------------
;//++++++++++++++++++++++++++++++++++在lcd第二行显示读出来的数据
CALL ISBUSY_LCD
MOV R4,#0C0H
CALL WRITECOMMAND_LCD
MOV R3,#09H
MOV R0,#DATA_BUFFER
DISPLAY2_LCD_MAIN:
CALL ISBUSY_LCD
MOV A,@R0
MOV R5,A
INC R0
CALL WRITEDATA_LCD ;//函数参数 R5为数据
DJNZ R3,DISPLAY2_LCD_MAIN
;//------------------------------------
JMP $
|
|