Nhiều PIC18 có bộ nhớ EEPROM, kích thước lên tới 1K. Thật không may, PIC18F46J50 bạn tham khảo không. Nếu EEPROM khả dụng, nó là lựa chọn tốt hơn nhiều nếu nó đủ lớn cho dữ liệu của bạn, vì EEPROM có tối thiểu 1.000.000 chu kỳ xóa / ghi và đèn flash chỉ 10.000.
PIC18, giống như hầu hết các bộ vi điều khiển khác, sử dụng kiến trúc được gọi là kiến trúc Harvard, nghĩa là có khu vực địa chỉ riêng biệt cho các chương trình và dữ liệu (nghĩa là bạn có thể có địa chỉ chương trình 4 và địa chỉ dữ liệu 4 và chúng không giống nhau). Do đó, bạn không thể đọc hoặc ghi bộ nhớ flash bằng các phương thức thông thường bằng ngôn ngữ C hoặc ngôn ngữ lắp ráp.
Thay vào đó, trong họ PIC18, bạn thiết lập một địa chỉ bắt đầu trong một thanh ghi 22 bit có tên TBLPTR. Để đọc byte từ flash, bạn sử dụng lệnh TBLRD. Có một tùy chọn để tự động tăng hoặc giảm địa chỉ sau khi đọc bạn không phải thực hiện thủ công.
Để ghi vào bộ nhớ flash, trước tiên bạn phải xóa một hoặc nhiều khối bộ nhớ flash 64 byte sẽ được ghi lại. Sau khi thiết lập lại địa chỉ bắt đầu trong TBLPTR và các giá trị trong một số thanh ghi khác để khởi tạo thao tác xóa, các ngắt bị vô hiệu hóa và sau đó bạn phải ghi 0x55 ngay sau 0xAA vào một thanh ghi; điều này mở khóa lệnh xóa và cần thiết để ngăn chặn mã errant vô tình xóa sạch bộ nhớ. Cuối cùng, lệnh thực sự xóa được thực thi, tiếp theo là kích hoạt lại các ngắt.
Ghi vào bộ nhớ flash tương tự như xóa, ngoại trừ kích thước khối nhỏ hơn. Việc ghi thực sự được thực thi bằng cách sử dụng lệnh TBLWT, cũng cho phép tăng / giảm tự động như lệnh TBLRD.
Ngoài việc lưu dữ liệu cấu hình, ghi vào bộ nhớ flash cho phép một người cập nhật chương trình cơ sở của họ trong trường bằng cách sử dụng "chương trình cơ sở qua không trung". Bạn cần có một khối chương trình cơ sở cố định, thường là khi bắt đầu bộ nhớ chương trình, có thể nhận được bản cập nhật từ mô-đun Bluetooth, Wi-Fi, mô-đun di động hoặc thậm chí là kết nối có dây và cập nhật đèn flash trên một điểm nhất định trong chương trình (ví dụ "hàng rào") với mã mới. Sau khi cập nhật hoàn tất, thiết lập lại được bắt đầu và mã mới được đưa vào sử dụng.
Nhiều bộ vi điều khiển khác ngoài họ PIC có khả năng cập nhật bộ nhớ flash; hầu hết sử dụng một số kết hợp các thanh ghi cấu hình, một con trỏ địa chỉ và các hướng dẫn đặc biệt để thực hiện tác vụ.