PIC Vietnam

Go Back   PIC Vietnam > Microchip PIC > Cơ bản về vi điều khiển và PIC > Những câu hỏi thường gặp

Tài trợ cho PIC Vietnam
Trang chủ Đăng Kí Hỏi/Ðáp Thành Viên Lịch Bài Trong Ngày Vi điều khiển

Những câu hỏi thường gặp Những lỗi cơ bản thường gặp khi làm việc với PIC hoặc những vấn đề cơ bản nhất thường được hỏi trong những năm qua

Trả lời
 
Ðiều Chỉnh Xếp Bài
Old 24-06-2008, 10:51 AM   #1
thiennp
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 3
:
Các chế độ định địa chỉ cho vi điều khiển PIC

Mình mới tìm hiểu về PIC nên chưa hiểu lắm về các chế độ định địa chỉ cho PIC. Các bạn có thể giải thích cho mình hiểu về các chế độ định địa chỉ cho PIC được không. Bao gồm cả chế độ truy xuất bộ nhớ dữ liệu và bộ nhớ chương trình. Mình xin chân thành cảm ơn.
thiennp vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 24-06-2008, 11:18 AM   #2
david
Đệ tử 4 túi
 
david's Avatar
 
Tham gia ngày: Aug 2006
Bài gửi: 81
:
Đọc kỹ cấu trúc bộ nhớ trong datasheet là công việc đầu tiên khi tìm hiểu một loại VDK !
david vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-06-2008, 12:33 AM   #3
thiennp
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 3
:
Mình đọc rồi nó có chế độ định địa chỉ trực tiếp, gián tiếp, tức thì đ/v bộ nhớ dữ liệu, còn đ/v bộ nhớ chương trình có 2 chế độ định địa chỉ là trực tiếp và gián tiếp nhưng mình ko hiểu lắm về cơ chế nó làm như thế nào, mong các bạn giải thích cụ thể và lấy ví dụ cho mình dễ hiểu
thiennp vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-06-2008, 02:05 AM   #4
phamminhtuan
Super Moderator
 
phamminhtuan's Avatar
 
Tham gia ngày: Feb 2006
Bài gửi: 150
:
Trích:
Nguyên văn bởi thiennp View Post
Mình mới tìm hiểu về PIC nên chưa hiểu lắm về các chế độ định địa chỉ cho PIC. Các bạn có thể giải thích cho mình hiểu về các chế độ định địa chỉ cho PIC được không. Bao gồm cả chế độ truy xuất bộ nhớ dữ liệu và bộ nhớ chương trình. Mình xin chân thành cảm ơn.
Trích:
Nguyên văn bởi thiennp View Post
Mình đọc rồi nó có chế độ định địa chỉ trực tiếp, gián tiếp, tức thì đ/v bộ nhớ dữ liệu, còn đ/v bộ nhớ chương trình có 2 chế độ định địa chỉ là trực tiếp và gián tiếp nhưng mình ko hiểu lắm về cơ chế nó làm như thế nào, mong các bạn giải thích cụ thể và lấy ví dụ cho mình dễ hiểu
PIC (ở đây nói đến PIC6F877A quen thuộc) có vùng nhớ RAM nhiều hơn 256 byte, do vậy việc định địa chỉ sử dụng 1 byte địa chỉ là không đủ, dĩ nhiên là trỏ tới địa chỉ 0x1FF thì không thể dùng 1 byte để chứa địa chỉ đó, trong khi đó, bus địa chỉ sử dụng chỉ có 7 bit, tối đa là 8 bit cho bus địa chỉ gián tiếp. Và giải pháp định địa chỉ cho PIC này là 9 bit địa chỉ cho vùng RAM rộng đến 512 byte. Tuy nhiên, 2 bit cao nhất không nằm trong bus địa chỉ, bus địa chỉ chỉ có 7 bit (truy xuất trực tiếp) hay 8 bit (truy xuất gián tiếp) mà nằm ở thanh ghi trạng thái STATUS, là RP0 và RP1


2 bit này chia toàn bộ vùng nhớ ra làm 4 bank tương ứng với giá trị của nó. Vậy có nghĩa là với 7 bit địa chỉ kia, nếu giả sử có giá trị là 0x0D, [Xem hình nhé] với 2 bit RP1:RP01 = 00 thì bạn đang truy xuất đến thanh ghi PIR2, còn RP1:RP0 = 01, thì bạn đang truy xuất đến PIE2, còn RP1:RP0 = 10 thì bạn đang truy xuất đến EEADR, tương tự "11" thì truy xuất đến EECON2.

Bạn yên tâm là cho dù RP1:RP0 có bằng bao nhiêu đi nữa thì việc truy xuất đến các thanh ghi STATUS, PCL, FSR, PCLATH, INTCON đều được cả, nhìn hình là rõ ngay thôi.

Còn về truy xuất địa chỉ gián tiếp thì dùng thanh ghi FSR thì bạn quan tâm đến bit IRP của thanh ghi STATUS, nếu là 0 thì 8 bit của FSR trỏ đến 256 byte của 2 bank đầu là bank 0 và bank1, nếu IRP là 1 thì FSR trỏ đến 256 byte của 2 bank sau. [Xem hình nhé]
phamminhtuan vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 25-06-2008, 09:18 PM   #5
thiennp
Nhập môn đệ tử
 
Tham gia ngày: Mar 2008
Bài gửi: 3
:
Thanks bạn, mong các bạn sẽ tiếp tục đóng góp ý kiển để làm rõ vấn đề hơn nữa
thiennp vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Old 21-08-2010, 01:04 AM   #6
vu4096
Nhập môn đệ tử
 
Tham gia ngày: Dec 2008
Bài gửi: 3
:
Xin chào
Còn nếu bộ nhớ chương trình ở page1, page2, page3 thì chúng ta không thể sử dụng địa chỉ trực tiếp được mà phải sử dụng địa chỉ gián tiếp. Vậy thì đối với việc định địa chỉ gián tiếp như vậy thì ta làm cách nào để chuyển dử liệu thì thanh ghi này sang thanh ghi kia.
Ví dụ như chuyển nội dung thanh ghi A sang thanh ghi B đối với chế độ định địa chỉ trực tiếp thì
MOVF A , W
MOVWF B
Còn đối với chế độ gián tiếp thì:
MOVLW ĐỊA CHỈA
MOVWF FSR
MOVF INDF , W
Vì phải dùng thanh ghi W làm trung gian để trỏ địa chỉ cho FSR thì chúng ta không thể nào thực hiện thao tác này được.
bạn nào biết xin chỉ dùm. cám ơn
vu4096 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn
Trả lời


Quyền Sử Dụng Ở Diễn Ðàn
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is Mở
Smilies đang Mở
[IMG] đang Mở
HTML đang Tắt

Chuyển đến


Múi giờ GMT. Hiện tại là 05:15 AM.


Được sáng lập bởi Đoàn Hiệp
Powered by vBulletin®
Page copy protected against web site content infringement by Copyscape
Copyright © PIC Vietnam