89c2051 ... một lookuptable trong sdccC hoặc keilC

V

vinayby

Guest
..89c2051 có 2k mem mã (onchip rom)

i muốn, nói một tội lỗi () lookuptable của 0xFF chiều cao ..

1) mã unsigned char sintable [0x100]; / / doesnt work nói 'u cant sửa đổi lvalue
Xdata cố gắng 2) ở vị trí của nó biên dịch .. phạtnhưng nó là vô nghĩa dù ..
(hoặc để dành sin (), một cái gì đó arr = 0xf1; trong vòng một shud cho tôi một cái gì đó trong tập tin hex .. showsup không có gì)
3) lý do tại sao tôi không thể ghi vào mã ....nếu tôi có thể làm điều đó trong asm.với "BYTE db";

bất kỳ chỉ thị # pragma có thể giúp?

thậm chí sdcc didnt giúp ..some1 có thể giúp tôi rõ những việc này ...

i được sử dụng:
trong Keil-> targetOptions-> sử dụng 0-0x07ff chọn nhỏ mô hình, vv vv
sdcc -> mặc định (mô hình nhỏ)

 
unsigned char sintable[0x100]; //doesnt work says' u cant modify lvalue

thử mã const
unsigned char sintable [0x100]; / / doesnt work nói 'u cant sửa đổi lvalue

Vấn đề là bạn không thể ghi vào mã để bạn có thể khởi tạo mảng của bạn tại thời gian biên dịch và không thể sửa đổi nó sau này ...

lời chúc mừng tốt đẹp nhất

 
IMHO, "ma char unsigned const sintable 0x100] [" không giúp bạn ở tất cả các kiểu C (nhưng nó là thích hợp hơn cho phân khúc MÃ) nếu bạn có "ý định sai lầm về cách sử dụng sintable []".Vấn đề là không phải trong dòng này miễn là bạn sẽ cố gắng làm ví dụ như "một cái gì đó = sintable [0x01];" chỉ.Vấn đề của bạn, mà trong mã của bạn là dòng như "sintable [0x01] = cái gì;".
Bạn KHÔNG THỂ sửa đổi mã mem 2k (onchip rom) bằng một phần mềm riêng của mình.Đây là nguyên tắc cơ bản cho kiến trúc '51 (nó không phải là Intel x86 hay như vậy gọi là kiến trúc Neumann nói chung. (Xin lỗi, nếu tôi sai với tên của nó, nhưng tôi không phải là một chuyên gia trong các lý thuyết CPU.)
Vì vậy, nếu bạn muốn tạo các bảng tra cứu, bạn cần phải quên để sửa đổi bất kỳ thành viên sintable [], và bạn có thể chỉ để đọc ra các giá trị của nó.Toàn bộ sintable [] có thể được khởi tạo trong các mã như:
Mã char sintable [0x100] = (
/ * 256 giá trị cho initialisation của mảng: 0x00, ...* /
) / / Sintable []

PS:
Tất nhiên, ai đó có thể chỉ ra một số '51 chip (Cygnals ví dụ) cho phép bạn sửa đổi "đoạn mã" của các phần mềm riêng của mình, nhưng tôi sẽ coi chúng như là một ngoại lệ cho quy tắc chung về nhân vật của các đoạn mã, bởi vì để có thể sửa đổi mã bên trong các vi xử lý yêu cầu một số chương trình bổ sung và nó là "kỹ thuật tiên tiến".

 

Welcome to EDABoard.com

Sponsor

Back
Top