Thư viện tri thức trực tuyến
Kho tài liệu với 50,000+ tài liệu học thuật
© 2023 Siêu thị PDF - Kho tài liệu học thuật hàng đầu Việt Nam

Ky Thuat Bang(PIC) .pdf
Nội dung xem thử
Mô tả chi tiết
Kỹ thuật bảng
0) Kiến thức cần biết
- Tập lệnh
- Bộ nhớ dữ liệu và bộ nhớ chương trình (Kiến trúc Harvard)
- Con trỏ chương trình
- Tổ chức bộ nhớ của PIC (các BANK)
- Khái niệm Stack
1) Giới thiệu về kỹ thuật bảng
Để hiểu về kỹ thuật bảng, trước tiên chúng ta xem ví dụ sau:
Giả sử chúng ta cần xuất dữ liệu ra màn hình LCD với dãy chữ : “PIC_Tutorial”. Ở
đây, chúng ta không cần quan tâm đến hoạt động của LCD và hình thức xuất dữ liệu
như thế nào. Chỉ cần các bạn nắm được rằng, để xuất dữ liệu như trên ra, chúng ta
phải xuất tuần tự các ký tự “P, I, C, _, T, u, t, o, r, i, a, l” ra. Vậy làm thế nào để xuất
được các chữ này ra?
Ở đây có hai vấn đề, vấn đề thứ nhất là làm sao lưu trữ được các giá trị này, vấn đề
thứ hai là làm sao sắp xếp thứ tự các chữ cái này để chúng ta gọi chúng ra một cách
tuần tự.
Trước tiên, chúng ta giải quyết vấn đề thứ hai trước, bởi vì nó rất đơn giản. Cách giải
quyết là thay vì chúng ta phải tìm các chữ cái trong bảng chữ cái (cả chữ in lẫn chữ
thường) để gọi ra vào đúng thời điểm cần xuất các chữ cái này ra, chúng ta sẽ đánh
dấu các chữ cái này với các chỉ số, và khi gọi thì chúng ta chỉ gọi chỉ số đầu tiên là 0
(hoặc 1, tuỳ theo sự quy định), sau đó, chúng ta cứ tăng chỉ số này lên 1 đơn vị, và
gọi tiếp chữ cái tiếp theo. Công việc này sẽ dừng lại khi nó đạt đến chỉ số cuối cùng.
Tiếp theo, đề giải quyết vấn đề lưu trữ các chữ cái này ở đâu, các bạn cần biết và hiểu
rõ khái niệm về bộ nhớ dữ liệu và bộ nhớ chương trình (hay bộ nhớ lệnh). Các bạn có
thể tham khảo phần bộ nhớ dữ liệu và bộ nhớ chương trình trong phần kiến trúc
Harvard và kiến trúc Von Neumann. Tuy nhiên, chúng ta sẽ nhắc lại rằng, đối với PIC
dòng Mid Range, bộ nhớ chương trình có 14 bit cho mỗi lệnh, vì vậy, cho dù các bạn
thực hiện lệnh nào đi nữa, thì lệnh đó luôn chiếm 14 bit trong bộ nhớ chương trình.
Mặt khác, bộ nhớ dữ liệu thì lại bị giới hạn và một lần tương tác với bộ nhớ dữ liệu,
các bạn phải thông qua thanh ghi W, như vậy, các bạn tốn thêm ít nhất 2 lệnh cho
việc tương tác với thanh ghi W.
Kết quả, cách thông minh nhất là lưu các dữ liệu đó vào trong bộ nhớ chương trình,
thay vì lưu nó vào trong bộ nhớ dữ liệu. Lại nhắc lại về tập lệnh, nếu các bạn để ý kỹ,
các bạn sẽ lại thấy rằng, có một số lệnh cho phép tương tác với giá trị k (8 bit), và giá
trị k này không lưu trữ trong bộ nhớ dữ liệu, mà lưu trong bộ nhớ chương trình.