@tuanphan_ka mấy cái warning thì không sao(những hàm mình viết mà không gọi-UNCALL SEGMENT)
Còn những lỗi bạn có thể nhìn thấy rõ chữ:ADDRESS SPACE OVERFLOW, nghĩa là vượt quá bộ nhớ cho phép của nó. Theo mình đoán trong chương trình của bạn chắc chắn có nhiểu bảng DATA, bạn nên thêm chữ code trước khai báo. VD: unsigned char data_display[300]; bạn viết lại là: code unsigned char data_display[300]; . Mục đích là chuyển chỗ lưu bảng data_display từ vùng DATA sang vùng CODE(8051 theo kiến trúc Harvert- đây là một nhược điểm của kiến trúc này so với kiến trúc Vonnayman). Bạn thử xem !.
@jimmy_vu Chương trình của bạn mắc nhiều lỗi cơ bản trong C, đọc mà không muốn sửa.
Có một lỗi đáng lưu ý: khi khai báo hàm ngắt timer chữ interrupt phải viết cách ra khỏi số. VD void timer1_isr () interrupt 2 chứ không phải là void timer1_isr() interrupt2. Các lỗi khác hầu hết là quên không có dấu ; ...
Còn những lỗi bạn có thể nhìn thấy rõ chữ:ADDRESS SPACE OVERFLOW, nghĩa là vượt quá bộ nhớ cho phép của nó. Theo mình đoán trong chương trình của bạn chắc chắn có nhiểu bảng DATA, bạn nên thêm chữ code trước khai báo. VD: unsigned char data_display[300]; bạn viết lại là: code unsigned char data_display[300]; . Mục đích là chuyển chỗ lưu bảng data_display từ vùng DATA sang vùng CODE(8051 theo kiến trúc Harvert- đây là một nhược điểm của kiến trúc này so với kiến trúc Vonnayman). Bạn thử xem !.
@jimmy_vu Chương trình của bạn mắc nhiều lỗi cơ bản trong C, đọc mà không muốn sửa.
Có một lỗi đáng lưu ý: khi khai báo hàm ngắt timer chữ interrupt phải viết cách ra khỏi số. VD void timer1_isr () interrupt 2 chứ không phải là void timer1_isr() interrupt2. Các lỗi khác hầu hết là quên không có dấu ; ...
Comment