The code is attached...
#include "msp430xG46x.h"
RST equ 02h; P8.1 is Chip Select, PIN 1 => address 02h in P8OUT/P8DIR
RSEG CSTACK ; Define stack segment
RSEG CODE ; Assemble to Flash memory
;-----------------------------------------------------------------------------
RESET mov.w #SFE(CSTACK),SP ;#02100h,SP; Initialize stackpointer
main nop
StopWDT mov.w #WDTPW+WDTHOLD+WDTNMI+WDTTMSEL+WDTSSEL,&WDTCTL ; Stop WDT
setupSVS mov.b #018h,&SVSCTL ;Vth = 1.9V
setupRTC mov.b #30h,&RTCCTL
bis.b #RTCBCD,&RTCCTL
;----------------------------------------------------------------
;CONFIGURE PORT8 FOR CHIP SELECT(as GPIO-active low)
;----------------------------------------------------------------
SetupP8 mov.b #00h,&P8SEL ;CONFIGURE AS GPIO
mov.b #00000010b,&P8DIR ;CONFIGURE P8.1 as OUTPUT for CS of FLASH
;----------------------------------------------------------------
;Configure port 7 for SPI
;----------------------------------------------------------------
SetupP7 bis.b #0Eh,&P7SEL ; P7.3,2,1 option select as USCI_A0
;----------------------------------------------------------------
;SETUP MSP430 FOR RTC INTERFACE on SPI
;----------------------------------------------------------------
SetupSPI bis.b #UCSWRST,&UCA0CTL1
;Initialize all USCI registers with UCSWRST=1
bis.b #UCMST+UCSYNC+UCMSB,&UCA0CTL0;3-pin, 8-bit SPI master,MSB first
bis.b #UCSSEL_2,&UCA0CTL1 ; SMCLK=1 MHz
mov.b #255,&UCA0BR0 ; SMCLK/255
clr.b &UCA0BR1 ;
clr.b &UCA0MCTL ; No modulation
;Clear UCSWRST
bic.b #UCSWRST,&UCA0CTL1 ; Initialize USCI state machine
;----------------------------------------------------------------------------
;WRITE INCREMENTED DATA TO PAGE 001000 IN FLASH => WRITE ENABLE+BULK ERASE then Write Enable +PAGE PROGRAM , THEN READ
;----------------------------------------------------------------------------
; WRITE ENABLE INSTRUCTION CODE
bic.b #RST,&P8OUT ;MAKE CS LOW BY SETTING P8.1 LOW, SELECT SLAVE - RST = 00h
mov.b #00000110b,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
TX bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TX
mov.b #11011000b,&UCA0TXBUF ; SECTOR INSTRUCTION CODE1101 1000
;mov.b #11000111b,&UCA0TXBUF ; BULK ERASE INSTRUCTION CODE
;3 byte Address for Sector Erase- 00 00 01 - Sector 1 any address inside the sector
mov.b #00h,&UCA0TXBUF ;
SE1 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz SE1
mov.b #00h,&UCA0TXBUF ;
SE11 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz SE11
mov.b #01h,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
SE111 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz SE111
bis.b #RST,&P8OUT ;MAKE CS HI
; WAIT for Bulk erase(nop/monitor write in progress bit of status register)
mov.w #100h,R11 ; Add time between transmissions to
Delay dec.w R11 ; make sure slave can keep up
jnz Delay
; PAGE PROGRAM INSTRUCTION CODE
bic.b #RST,&P8OUT ;MAKE CS LOW
mov.b #00000110b,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
mov.b #00000010b,&UCA0TXBUF ; PAGE PROGRAM INSTRUCTION CODE
TR bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TR
;3 byte Address for Page Address- 00 10 00
mov.b #00h,&UCA0TXBUF ;
TX1 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TX1
mov.b #10h,&UCA0TXBUF ;
TX11 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TX11
mov.b #00h,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
TX111 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TX111
; Txn of data
mov.b #05h,NO_OF_BYTES ; down counter NO_OF_BYTES_WRITE
mov.b #00h,R5; Incremented Data to be txd
Mainloop mov.b R5,&UCA0TXBUF
TX2 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz TX2
inc.b R5;
dec.b NO_OF_BYTES ;Tx 256 characters
jnz Mainloop
STOP bis.b #RST,&P8OUT ; CS high to terminate transmission
;----------------------------------------------------------------------------
;READ FROM FLASH - PAGE 001000 SAY 1ST BYTE
;----------------------------------------------------------------------------
bic.b #RST,&P8OUT ; CS Low to start transmission
; READ DATA BYTE INSTRUCTION CODE
mov.b #03h,&UCA0TXBUF ; READ DATA BYTE INSTRUCTION CODE
loop bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz loop
;3 byte Address for location(000000) to be read
mov.b #00h,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
RX1 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz RX1
mov.b #10h,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
RX11 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz RX11
mov.b #00h,&UCA0TXBUF ; WRITE ENABLE INSTRUCTION CODE
RX111 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
jz RX111
; START READING DATA
mov.b #05h,NO_OF_BYTES ; down counter
Mainloop1 mov.b #01h,&UCA0TXBUF ;dummy byte for reception
;TX_2 bit.b #UCA0TXIFG,&IFG2 ;TX Buffer ready
;jz TX_2
RX2 bit.b #UCA0RXIFG,&IFG2 ;RX Buffer ready
jz RX2
mov.b &UCA0RXBUF,R9
dec.b NO_OF_BYTES ;Tx 256 characters
jnz Mainloop1
bis.b #RST,&P8OUT ; CS high to terminate transmission
;------------------------------------------------------------------------------
COMMON INTVEC ; Interrupt Vectors
;------------------------------------------------------------------------------
ORG RESET_VECTOR ; MSP430 RESET Vector
DW RESET ;
END
Thanks.........