Cách giải quyết đơn giản là bạn đặt các chuỗi hằng của bạn (chuoi0[], chuoi1[], ...) ở cuối vùng nhớ chương trình của dsPIC (với dsPIC30F4012 thì bạn cứ dùng địa chỉ từ 0x7000 trở lên đến 0x7FFF). Sau khi bạn vừa ý với chương trình đã viết thì mới điều chỉnh vị trí các chuỗi hằng này (hoặc cứ để chúng ở cuối vùng nhớ chương trình cũng chẳng sao). Như vậy sẽ tránh việc code của bạn đè lên các chuỗi hằng này khi chương trình dài ra, dẫn đến lỗi cấp phát bộ nhớ như bạn đã thấy.
Về các biến, bạn không dùng thuộc tính psv cho chúng, vì chúng được lưu vào RAM chứ không lưu vào bộ nhớ chương trình hay EEPROM. Chẳng hạn, biến s của bạn chỉ cần khai báo như sau:
Code:
unsigned char s[15];
Thân,