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

Cùng học AVR - AVR2 cấu trúc AVR pot
Nội dung xem thử
Mô tả chi tiết
AUTO.NLU
For more details and questions, contact me: [email protected]
CÙNG HỌC AVR
AVR2 – CẤU TRÚC AVR
Thoả thuận: tài liệu này thuộc quyền sở hữu của tác giả, bạn có thể tự do tham khảo
tài liệu nhưng không ñược phép sử dụng ñể in thành sách báo, ñăng lên các diễn ñàn
hay website, nhưng bạn có thể dùng ñường link http://www.dieukhientudong.net ñể
hướng tới tài liệu. Liên hệ tác giả qua email: [email protected].
I. Bạn sẽ ñi ñến ñâu.
Bài này tiếp tục bài ñầu tiên trong loạt bài giới thiệu về AVR, nếu sau bài 1 bạn ñã phần nào
biết cách lập trình cho AVR bằng AVRStudio thì trong bài này, chúng ta sẽ tìm hiểu kỹ hơn về
cấu trúc của AVR. Sau bài này, bạn sẽ:
- Hiểu ñược cấu trúc AVR, cấu trúc bộ nhớ và cách thức hoạt ñộng của chip.
- Hiểu về Stack và cách hoạt ñộng.
- Biết ñược một số instruction cơ bản truy xuất bộ nhớ.
- Học các instruction rẽ nhánh và vòng lặp.
- Chương trình con (Subroutine) và Macro.
- Cải tiến ví dụ trong bài 1.
- Viết 1 ví dụ minh họa cách sử dụng bộ nhớ và vòng lặp.
II. Tồ chức của AVR.
AVR có cấu trúc Harvard, trong ñó ñường truyền cho bộ nhớ dữ liệu (data memory bus) và
ñường truyền cho bộ nhớ chương trình (program memory bus) ñược tách riêng. Data memory bus
chỉ có 8 bit và ñược kết nối với hầu hết các thiết bị ngoại vi, với register file. Trong khi ñó
program memory bus có ñộ rộng 16 bits và chỉ phục vụ cho instruction registers. Hình 1 mô tả cấu
trúc bộ nhớ của AVR.
Bộ nhớ chương trình (Program memory): Là bộ nhớ Flash lập trình ñược, trong các chip
AVR cũ (như AT90S1200 hay AT()2313…) bộ nhớ chương trình chỉ gồm 1 phần là Application
Flash Section nhưng trong các chip AVR mới chúng ta có thêm phần Boot Flash setion. Boot
section sẽ ñược khảo sát trong các phần sau, trong bài này khi nói về bộ nhớ chương trình, chúng
ta tự hiểu là Application section. Thực chất, application section bao gồm 2 phần: phần chứa các
instruction (mã lệnh cho hoạt ñộng của chip) và phần chứa các vector ngắt (interrupt vectors). Các
vector ngắt nằm ở phần ñầu của application section (từ ñịa chỉ 0x0000) và dài ñến bao nhiêu tùy
thuộc vào loại chip. Phần chứa instruction nằm liền sau ñó, chương trình viết cho chip phải ñược
load vào phần này. Xem lại phần ñầu của ví dụ trong bài 1:
.ORG 0x000
RJMP BATDAU
.ORG 0x020
BATDAU:
Trong ví dụ này, ngay sau khi set vị trí 0x000 bằng chỉ thị (DIRECTIVE) .ORG 0x000
chúng ta dùng instruction RJMP ñể nhảy ñến vị trí 0x020, như thế phần bộ nhớ chương trình từ
0x00 ñến 0x01F không ñược sử dụng (vì trong ví dụ này chúng ta không sử dụng các vector
AUTO.NLU
For more details and questions, contact me: [email protected]
ngắt). Chương trình chính ñược bắt ñầu từ ñịa chỉ 0x020, con số 0x020 là do người lập trình chọn,
thật ra các vector ngắt của chip ATMEGA8 chỉ kéo dài ñến ñịa chỉ 0x012, vì vậy chương trình
chính có thể ñược bắt ñầu từ bất cứ vị trí nào sau ñó. Để biết ñộ dài các vector ngắt của từng chip
bạn hãy tham khảo datasheet của chip ñó.
Vì chức năng chính của bộ nhớ chương trình là chứa instruction, chúng ta không có nhiều cơ
hội tác ñộng lên bộ nhớ này khi lập trình cho chip, vì thế ñối với người lập trình AVR, bộ nhớ này
“không quá quan trọng”. Tất cả các thanh ghi quan trọng cần khảo sát nằm trong bộ nhớ dữ liệu
của chip.
Hình 1. Cấu trúc bộ nhớ của AVR.
Bộ nhớ dữ liệu (data memory): Đây là phần chứa các thanh ghi quan trọng nhất của chip,
việc lập trình cho chip phần lớn là truy cập bộ nhớ này. Bộ nhớ dữ liệu trên các chip AVR có ñộ
lớn khác nhau tùy theo mỗi chip, tuy nhiên về cơ bản phần bộ nhớ này ñược chia thành 5 phần:
Phần 1: là phần ñầu tiên trong bộ nhớ dữ liệu, như mô tả tronh hình 2, phần này bao gồm 32
thanh ghi có tên gọi là register file (RF), hay General Purpose Rgegister – GPR, hoặc ñơn giản là
các Thanh ghi. Tất cả các thanh ghi này ñều là các thanh ghi 8 bits như trong hình 2.
Hình 2. Thanh ghi 8 bits.
Tất cả các chip trong họ AVR ñều bao gồm 32 thanh ghi Register File có ñịa chỉ tuyệt ñối từ
0x0000 ñến 0x001F. Mỗi thanh ghi có thể chứa giá trị dương từ 0 ñến 255 hoặc các giá trị có dấu
từ -128 ñến 127 hoặc mã ASCII của một ký tự nào ñó…Các thanh ghi này ñược ñặt tên theo thứ