I am trying to connect the SPI SRAM 23K256 with PIC16LF877a, double checked everything about the connection and the codes,still no result...
The following is the test code I am using..I appreciate if anyone could find out what's the potential problem:
PIC16LF877A 23K256(32Kbyte RAM)
CLEAR
DEFINE OSC 4 ; System speed
DEFINE LOADER_USED 1 ;
; Define LCD registers and bits
DEFINE LCD_DREG PORTD ;
DEFINE LCD_BITS 4 ;width of data path
DEFINE LCD_DBIT 4 ;data starts on bit 4
DEFINE LCD_RSREG PORTE ;
DEFINE LCD_RSBIT 0 ;
DEFINE LCD_EREG PORTE ;
DEFINE LCD_EBIT 1 ;
INCLUDE "MODEDEFS.BAS" ;
CS VAR PORTA.5 ; Chip select pin
SCK VAR PORTC.3 ; Clock pin
SI VAR PORTC.4 ; Data in pin
SO VAR PORTC.5 ; Data out pin
ADDR VAR WORD ; Address
B0 VAR BYTE ; Data
BI VAR BYTE
bi=0
b0=0
TRISA.5 = 0 ; Set CS to output
ADCON1 = 7 ; Set PORTA and PORTE to digital
LOW PORTE.2 ; LCD R/W line low (W)
PAUSE 100 ; Wait for LCD to start up
'b0=100
FOR ADDR = 0 TO 100 ; Loop 100 times
B0 = 2 ; B0 is data for SRAM
GOSUB EEWRITE ; Write to SRAM
pause 10
NEXT ADDR
LOOP:
FOR ADDR = 0 TO 100 ; Loop 100 times
GOSUB EEREAD ; Read from SRAM
LCDOUT $FE, 1, DEC ADDR,": ",DEC Bi ; Display
PAUSE 200 ;
NEXT ADDR ;
GOTO LOOP ;
; Subroutine to read data from addr in RAM
EEREAD: CS = 0 ; Enable RAM
SHIFTOUT So, SCK, MSBFIRST, [$03, ADDR.BYTE1, ADDR.BYTE0] ; Send read cmd and address
SHIFTIN Si, SCK, MSBPRE, [BI] ; Read data
CS = 1 ; Disable
RETURN ;
; Subroutine to write data at addr in serial RAM
EEWRITE: CS = 0 ; Enable serial RAM
shIFTOUT So, SCK, MSBFIRST, [$02, ADDR.BYTE1, ADDR.BYTE0, B0] ; Send address and data
CS = 1 ; Disable
RETURN ;
END