RAM 地址 0x0200 中读取一个 long 数据,并烧写至地址为 0x1800 的 Flash 中。
 
代码:
 
 
#include“io430.h”
 
void main(void)
 
{
 
// 初始化 RAM 信息段的指针
 
unsigned long * RAM_ptr = (unsigned long *) 0x0200;
 
// 初始化 Flash 信息段的指针
 
unsigned long * Flash_ptr = (unsigned long *) 0x1800;
 
 
// 存放数据的变量
 
unsigned long value;
 
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
 
P4DIR |= BIT2; // 设置 P4.2 为输出端口,连接 LED 作为指示
 
while(FCTL3 & BUSY); // 判断是否处于忙碌状态
 
FCTL3 = FWKEY; // 清除 LOCK 标志
 
FCTL1 = FWKEY + ERASE; // 选择段擦除,置位 ERASE
 
*Flash_ptr = 0; // 将指针所指向的地址写 0,启动擦除
 
FCTL1 = FWKEY + BLKWRT; // 写允许,长字
 
// 读 RAM 信息到 value 变量
 
value = *RAM_ptr;
 
*Flash_ptr = value; // 写 Flash
 
while(FCTL3 & BUSY); // 判断是否处于忙碌状态
 
FCTL1 = FWKEY; // 清楚 WRT 位
 
FCTL3 = FWKEY + LOCK; // 置位 LOCK 标志
 
while(1)
 
{
 
P4OUT ^= BIT2; // 烧写完成,点亮绿指示灯
 
__delay_cycles(1000000);
 
}
 
}
 
题目二
 
从 RAM 地址 0x0200 开始读取一个长度为 8 的字符数组,并烧写至地址为 0x1800 的 Flash 中。
 
#include“io430.h”
 
# define NumToWrite 8
 
void main(void)
 
{
 
// 初始化 RAM 信息段的指针
 
unsigned char * RAM_ptr = (uint8_t *) 0x0200;
 
// 初始化 Flash 信息段的指针
 
unsigned char * Flash_ptr = (uint8_t *) 0x1800;
 
// 存放数据的变量
 
unsigned char value[NumToWrite];
 
int i;
 
WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗
 
P4DIR |= BIT2; // 设置 P4.2 为输出端口,连接 LED 作为指示
 
while(FCTL3 & BUSY); // 判断是否处于忙碌状态
 
FCTL3 = FWKEY; // 清除 LOCK 标志
 
FCTL1 = FWKEY + ERASE; // 选择段擦除,置位 ERASE
 
*Flash_ptr = 0; // 将指针所指向的地址写 0,启动擦除
 
FCTL1 = FWKEY + BLKWRT; // 写允许,长字
 
// 读 RAM 信息到 value 变量
 
for (i=0;i
 
value[i] = *RAM_ptr++;
 
// 将数组写入 Flash
 
for (i=0;i
 
*Flash_ptr++ = value[i];
 
while(FCTL3 & BUSY); // 判断是否处于忙碌状态
 
FCTL1 = FWKEY; // 清楚 WRT 位
 
FCTL3 = FWKEY + LOCK; // 置位 LOCK 标志
 
while(1)
 
{
 
P4OUT ^= BIT2; // 烧写完成,点亮绿指示灯
 
__delay_cycles(1000000);
 
}
 
}