5.6.2 Linear Data Memory
The linear data memory is the region from FSR address 0x2000 to FSR address 0x2FEF. This region is a virtual region that points back to the 80-byte blocks of GPR memory in all the banks. Refer to Figure 5-10 for the Linear Data Memory Map.
Bank # | {bank:offset} | Linear address | PIC16(L)F18425 | PIC16(L)F18445 |
---|---|---|---|---|
0 | 0x020-0x06F | 0x2000-0x204F | 80 | 80 |
1 | 0x0A0-0x0EF | 0x2050-0x209F | 80 | 80 |
2 | 0x120-0x16F | 0x20A0-0x20EF | 80 | 80 |
3 | 0x1A0-0x1EF | 0x20F0-0x213F | 80 | 80 |
4 | 0x220-0x26F | 0x2140-0x218F | 80 | 80 |
5 | 0x2A0-0x2EF | 0x2190-0x21DF | 80 | 80 |
6 | 0x320-0x36F | 0x21E0-0x222F | 80 | 80 |
7 | 0x3A0-0x3EF | 0x2230-0x227F | 80 | 80 |
8 | 0x420-0x46F | 0x2280-0x22CF | 80 | 80 |
9 | 0x4A0-0x4EF | 0x22D0-0x231F | 80 | 80 |
10 | 0x520-0x56F | 0x2320-0x236F | 80 | 80 |
11 | 0x5A0-0x5EF | 0x2370-0x23BF | 80 | 80 |
12 |
0x620-0x64F 0x620-0x66F |
0x23C0-0x23EF 0x23C0-0x240F |
48
|
80 |
13 | 0x6A0-0x6EF | 0x2410-0x245F | 80 | |
14 | 0x720-0x76F | 0x2460-0x24AF | 80 | |
15 | 0x7A0-0x7EF | 0x24B0-0x24FF | 80 | |
16 | 0x820-0x86F | 0x2500-0x254F | 80 | |
17 | 0x8A0-0x8EF | 0x2550-0x259F | 80 | |
18 | 0x920-0x96F | 0x25A0-0x25EF | 80 | |
19 | 0x9A0-0x9EF | 0x25F0-0x263F | 80 | |
20 | 0xA20-0xA6F | 0x2640-0x268F | 80 | |
21 | 0xAA0-0xAEF | 0x2690-0x26DF | 80 | |
22 | 0xB20-0xB6F | 0x26E0-0x272F | 80 | |
23 | 0xBA0-0xBEF | 0x2730-0x277F | 80 | |
24 | 0xC20-0xC6F | 0x2780-0x27CF | 80 | |
25 | 0xCA0-0xCBF | 0x27D0-0x27EF | 32 |
Unimplemented memory reads as 0x00. Use of the linear data memory region allows buffers to be larger than 80 bytes because incrementing the FSR beyond one bank will go directly to the GPR memory of the next bank.
The 16 bytes of common memory are not included in the linear data memory region.