82
__bis_SR_register(GIE); // Enable Interrupts
FCTL1 = FWKEY; // Lock
FCTL3 = FWKEY + LOCK; // Set Lock bit
}
void Flash_Write_Char(unsigned int address, char value)
{
char *FlashPtr = (char *)address;
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
FCTL3 = FWKEY; // Clear Lock bit
__bic_SR_register(GIE); // Disable Interrupts
*FlashPtr = value; // Save Data
while((FCTL3 & BUSY) == BUSY); // Busy
__bis_SR_register(GIE); // Enable Interrupts
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Set LOCK bit
}
char Flash_Read_Char(unsigned int address)
{
char value = 0x00;
char *FlashPtr = (char *)address;
value = *FlashPtr;
return value;
}
void Flash_Write_Word(unsigned int address, unsigned int value)
{
unsigned int *FlashPtr = (unsigned int *)address;
FCTL1 = FWKEY + WRT; // Set WRT bit for write operation
FCTL3 = FWKEY; // Clear Lock bit
__bic_SR_register(GIE); // Disable Interrupts
*FlashPtr = value; // Save Data
while((FCTL3 & BUSY) == BUSY); // Busy
__bis_SR_register(GIE); // Enable Interrupts
FCTL1 = FWKEY; // Clear WRT bit
FCTL3 = FWKEY + LOCK; // Set LOCK bit
}
unsigned int Flash_Read_Word(unsigned int address)
{
unsigned int value = 0x0000;
unsigned int *FlashPtr = (unsigned int *)address;
value = *FlashPtr;
return value;
}