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
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
