[ PedjaZ @ 03.01.2014. 08:46 ] @
Mozda nekom zatreba...

Ovo radi sa 23K256
ali ako neko ima proteusov model za 23LC1024 bio bih mu zahvalan ako okaci ovde.



Code:

    
    DEFINE OSC 20


'                REGISTERS AND PINOUT ( 1 = IN; 0 = OUT )
' ================================================================
              '76543210   
    TRISD   = %00100000     'mora ovo zbog nCS
    TRISC   = %00010000             '0 set PORTC I/O
    TRISE   = %00000000
    TRISB   = %00000000

    ADCON1  = 7             ' Set PORTA and PORTE to digital

'    SSPEN VAR SSP1CON1.5    ' SSP Enable bit       5
'    CKP   VAR SSP1CON1.4    ' Clock Polarity Select   4
'    SMP   VAR SSP1STAT.7    ' Data input sample phase
'    CKE   VAR SSP1STAT.6    '  Clock Edge Select bit
'    SSPIF VAR PIR1.3        ' SPI interrupt flag      -strana 126
    
    SSPEN2 VAR SSP2CON1.5    ' SSP Enable bit       5
    CKP2   VAR SSP2CON1.4    ' Clock Polarity Select   4
    SMP2   VAR SSP2STAT.7    ' Data input sample phase
    CKE2   VAR SSP2STAT.6    '  Clock Edge Select bit
    SSPIF2 VAR PIR3.7        ' SPI interrupt flag     -strana 128 


'                        VARIABLES & COSTANTS
' ================================================================
'    DataInHigh  VAR BYTE
'    DataInLow VAR BYTE
'    UkupnoIn var byte
    n var word
    DataSram var byte
    
'    nCS     VAR PORTD.0 
    nCS2     VAR PORTD.1
    
'    SSPEN   = 1         '1 enable SPI pins    1
'    CKP     = 1         '0 clock idle low     0
'    CKE     = 0         '0 transmit on idle to active transition
'    SSPIF   = 0         '0 clear buffer full status
'    SMP     = 0         '0 sample in middle of data

    SSPEN2  = 1         '1 enable SPI pins    1
    CKP2    = 1         '0 clock idle low     0
    CKE2    = 0         '0 transmit on idle to active transition
    SSPIF2  = 0         '0 clear buffer full status
    SMP2    = 0         '0 sample in middle of data
    
           

'                           PROGRAM INIT
' ================================================================

    Pause 500         ' Wait for LCD to start up
           
goto sram


'--------------------------------------------------------------------------

sram:

    ' PISI
  lcdout $fe, 1,"start"
  for n=1 to 30000 
    nCS2      = 0
    SSP2BUF   = %00000010       'instrukcija - pisi
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = %00000000       'nema u proteusu taj nego moram ovaj 23K256
    SSPIF2   = 0                       ' a za njega je 16-bitna adresa 
    WHILE SSPIF2=0 : WEND 

'    SSP2BUF   = %00000000      '24-bitna adresa  23LC1024
'    SSPIF2   = 0               
'    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = %00000111       
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = %10101010       '8-bit data
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 
    
    nCS2      = 1 
  next n  


    
    'PROCITAJ
  for n=1 to 30000
    nCS2      = 0
    SSP2BUF   = %00000011       'instrukcija - procitaj
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = %00000000       '16-bitna za 23K256 
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 

'    SSP2BUF   = %00000000      '24-bitna adresa za 23LC1024
'    SSPIF2   = 0              
'    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = %00000111       ' 
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 

    SSP2BUF   = 0               '8-bit data
    SSPIF2   = 0              
    WHILE SSPIF2=0 : WEND 
    DataSram = SSP2BUF
    
    nCS2      = 1     
    
    PORTE=DataSram
    'pause 300
   next n
    
   LCDOUT $FE,$C0, "stop"
    
    
    
    
    'goto sram
    
    
   End