Tutorial ngắn về tập tin .hex
Theo đề nghị của chú F, tôi viết tutorial ngắn này để các bạn mới bắt đầu học PIC không thắc mắc về kích thước của tập tin .hex, cùng với cách tính số word, kword trong chương trình của PIC.
Trong thế giới số:
1 k = 2^10 = 1024
1 mega = 2^20 = 1048576
1 kword = 1024 word
và, 8 kword = 8x1024 = 8192 word
Các chip PIC16 với bộ nhớ 8 kword, chẳng hạn như 16F877A, có 4 trang bộ nhớ Flash, mỗi trang là 2 kword. Nếu chương trình tràn khỏi biên của một trang thì người viết chương trình phải tự đảm bảo là các lệnh nhảy có thể thực hiện thành công, do đó trình biên dịch thường có thông báo nhắc nhở.
Đối với tập tin .hex, các byte được ghi bằng ký tự ASCII thể hiện mã hexadecimal của byte. Mỗi lệnh của PIC16 dài 14-bit, được ghi vào tập tin .hex bằng 2 byte, và mỗi byte được ghi bằng 2 ký tự ASCII, như vậy mỗi lệnh cần dùng tới 4 ký tự ASCII để ghi vào tập tin .hex. Ngoài ra còn có các thông tin định dạng và kiểm tra lỗi cho mỗi dòng trong tập tin .hex và các thông tin khác cho cấu hình của chip, nếu có dùng, và một số thông tin khác, chẳng hạn như địa chỉ bắt đầu của vùng nhớ được điền vào. Mỗi dòng cần có thêm 11 ký tự ASCII cho mục đích định dạng và kiểm tra lỗi, và mỗi dòng chỉ mã hóa cho tối đa 32 byte, tức là 16 lệnh. Các trình dịch PIC thường chỉ dùng 16 byte cho mỗi dòng trong tập tin .hex, do đó thường cần 1 dòng cho mỗi 8 lệnh.
Lấy ví dụ một chương trình dài 2048 lệnh, với cách ghi thành tập tin .hex thông thường, sẽ cần 256 dòng, mỗi dòng dùng hết 4x8 + 11 = 43 ký tự, và 256 dòng sẽ cần 11008 ký tự cho riêng phần mã lệnh, các thông tin khác cũng sẽ dùng thêm khoảng 200 ký tự. Do đó, chương trình này khi được ghi thành tập tin .hex sẽ có kích thước lớn hơn 11 kbyte (hơn 11 ngàn ký tự).
Thân,
thay đổi nội dung bởi: namqn, 06-07-2010 lúc 10:49 PM.
Lý do: bỏ code latex
|