|
Tài trợ cho PIC Vietnam |
dsPIC - Bộ điều khiển tín hiệu số 16-bit Theo dự kiến của Microchip, vào khoảng năm 2011 dsPIC sẽ có doanh số lớn hơn PIC |
|
Ðiều Chỉnh | Xếp Bài |
01-11-2007, 07:59 AM | #1 | |
PIC Bang chủ
|
Thanh ghi LATx có tác dụng gì?
Một câu hỏi hơi thừa, nhưng cần thiết, bạn nào trả lời câu hỏi này một cách rõ ràng, cụ thể, dễ hiểu được nhỉ?
Không chơi kiểu xem trong manual hay datasheet đâu nhé, chúng ta đang cần giải thích rõ nghĩa nó và làm cho người học dễ hiểu. Chúc vui Trích:
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? thay đổi nội dung bởi: falleaf, 19-11-2007 lúc 10:13 AM. |
|
01-11-2007, 08:44 AM | #2 |
Đệ tử 6 túi
Tham gia ngày: Jun 2005
Bài gửi: 141
: |
Không biết hiểu như thế này có phải không nhỉ?: Thanh ghi latch là thanh ghi chốt. Khi bạn set thanh ghi latch lên thì port tương ứng bị khóa lại. Dù bạn có set hay clear port đó đều ko có tác dụng. Và có thể chốt được từng bit riêng lẻ.
|
01-11-2007, 09:32 AM | #3 |
PIC Bang chủ
|
Chết chết
Chờ thêm ý kiến của các đồng chí nhà ta nào Chúc vui
__________________
Công ty TNHH Thương mại và Giao nhận R&P store.hn@rpc.vn - store.hcm@rpc.vn Học PIC như thế nào? |
16-11-2007, 04:13 PM | #4 |
Đệ tử 3 túi
Tham gia ngày: Aug 2006
Bài gửi: 55
: |
Thanh ghi latch dùng để xuất dữ liệu, còn thanh ghi port dùng để đọc dữ liệu. Có phải như vậy không anh F?
|
16-11-2007, 04:49 PM | #5 |
Đệ tử 1 túi
Tham gia ngày: Jul 2006
Bài gửi: 15
: |
Tôi cấu hình port là output. Ví dụ 1 port bất kì nào đó. Khi tôi xuất ra giá trị bất kì, ví dụ output_D(0x01) thì giá trị này sẽ được gi vào thanh ghi LATD. Tôi thường sử dụng 1 biến nhớ để ghi nhớ giá trị này để sử dụng cho lần tiếp theo. Tôi muốn hỏi nếu không dùng biến nhớ tạm này thì có thể đọc lại giá trị của thanh ghi LAT như thế nào(tất nhiên là vẫn cấu hình cổng ra). Hi vọng sớm có câu trả lời của mọi người.
Thank ! |
16-11-2007, 08:17 PM | #6 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
He he, bác F nhà ta có câu hỏi chua nhỉ.
Trước tiên, LATx Khác PORTx chỗ nào? Nếu xem sơ đồ khối của một chân IO của PIC16F và PIC18F, bỏ qua hết các chức năng đặc biệt của chân đó, chúng ta có thể thấy bọn này khá là giống nhau. Chỉ khác nhau ở chỗ chân IO của PIC18 có thêm 1 đường RD LAT (read latch). * Dựa vào sơ đồ khối có thể thấy Write PORTx hoàn toàn tương đương Write LATx * Tuy nhiên Read PORTx hoàn toàn khác Read LATx. đọc PORTx là đọc giá trị từ các chân của PIC. Đọc LATx là đọc giá trị từ đầu ra của các TRIGGER D trong cái mạch này. Cái đầu ra này lại phải qua 1 bộ đệm 3 trạng thái mới tới được chân của con PIC, bộ đệm 3 trạng thái này lại được điều khiển bởi TRISx. OK, vậy tại sao lại phải cần LATx? Nguyên nhân nằm ở 2 lệnh bsf, bcf hoặc bset, bclr. Đây là các lệnh thuộc loại Read-Modify-Write (RMW). Tức là khi thực thi lệnh này, CPU đọc giá trị thanh ghi, set/clear bit, sau đó ghi trở lại vào thanh ghi. Vấn đề sẽ phát sinh nếu bạn dùng các lệnh này với các PORT. Xét đoạn code như sau: Code:
bsf PORTB, 0 bsf PORTB, 1 Giải quyết vụ này như thế nào? Khi cần set, clear 1 bit trên PORT, bạn nên sử dụng thanh ghi LATx thay vì thanh ghi PORTx. Giá trị của LATx ko bị ảnh hưởng bởi mạch ngoài nên sẽ ko xảy ra trường hợp tuơng tự như trên. |
19-11-2007, 10:09 AM | #7 |
Đệ tử 3 túi
Tham gia ngày: Dec 2006
Bài gửi: 60
: |
Như vậy nghĩa là thế này phải không ạ:
- Khi đọc/ghi giá trị output của portB, thì nên dùng LatB vì Latx trong trường hợp này đóng vai trò như 1 buffer. - Khi đọc một giá trị input từ ngoài vào 1 pin của portB, thì nên đọc giá trị ở thanh ghi PORTB ? |
19-11-2007, 03:26 PM | #8 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
khi đọc giá trị từ ngoài vào thì bạn bắt buộc phải dùng PORT, vì PORT là cái nơi để giao tiếp với bên ngoài.
khi set bit hoac clear bit tren port (dùng lệnh bsf-bcf hoặc bset-bclr), thì bạn nên dùng LAT Khi viết chương trình bằng C thì bạn ko cần quan tâm vì trình dịch sẽ lo vụ này dùm bạn. |
11-01-2008, 10:59 PM | #9 | ||
Đệ tử 2 túi
Tham gia ngày: Aug 2005
Bài gửi: 30
: |
Trích:
Trích:
|
||
13-01-2008, 12:30 PM | #10 |
...Damned...
Tham gia ngày: Apr 2006
Nơi Cư Ngụ: Hồ Chí Minh
Bài gửi: 522
: |
Dĩ nhiên bạn gán kiểu như
PORTB = 0xcf; thì rõ ràng trình dịch sẽ dịch nguyên xi ý của bạn. Nếu nó cung cấp hàm xuất nhập kiểu như của CCS output_B(0xcf); lúc đó trình dịch mới lo được dùm bạn được. |
17-03-2008, 03:19 PM | #11 | |
Đệ tử 1 túi
Tham gia ngày: Dec 2007
Bài gửi: 16
: |
Trích:
Em thấy nếu cấu hình port làm cổng ra, thì đệm 3 trạng thái ngăn giữa latch và chân port sẽ mở, lúc đó lệnh ghi vào port hay ghi vào latch thì đều sẽ có tác dụng lên chân port. Nếu cấu hình port làm cổng vào thì đệm 3 trạng thái ngăn giữa latch và chân port sẽ khóa, lúc đó lệnh ghi vào port hay ghi vào latch thì đều chỉ có tác dụng lên latch, mà không có tác dụng lên chân port. Nếu cấu hình port làm cổng vào thì lệnh đọc latch sẽ khác với lệnh đọc chân port. Nhưng nếu cấu hình port làm cổng ra thì lệnh đọc latch và lệnh đọc chân port sẽ có tác dụng như nhau. |
|
13-04-2009, 08:18 PM | #12 | |
Nhập môn đệ tử
Tham gia ngày: Mar 2006
Bài gửi: 5
: |
Trích:
Đúng vậy. write port bit bằng C30 rất hay gặp trường hợp kô wr được. Đổi thành write latch ra ngay. |
|
22-09-2011, 04:25 PM | #13 |
Nhập môn đệ tử
Tham gia ngày: Jun 2010
Bài gửi: 2
: |
Em viết chương trình điều khiển LCD ở chế độ 4 bít với con pic 16F1939 dùng HI-TECH C, nếu dùng các khai báo POTR như RD1, RD2... thì nó không chạy nhưng nếu dùng LATD1, LATD2... thay thế thì chạy ngon lành. Nhưng em vẫn chưa hiểu rõ nguyên nhân tại sao chỉ làm theo lời khuyên của các anh là: nếu set hoặc clear từng bit riêng lẻ của 1 PORT thì nên dùng LATx! thank!
|
06-08-2012, 12:37 PM | #14 |
Nhập môn đệ tử
Tham gia ngày: Dec 2010
Bài gửi: 3
: |
em đang đọc những thứ được viết từ năm 2007
haiz sinh sau đẻ muộn khổ vậy đó |
07-08-2012, 10:55 PM | #15 |
Đệ tử 5 túi
Tham gia ngày: Jul 2010
Nơi Cư Ngụ: Hà Nội, VIE
Bài gửi: 114
: |
Bạn đọc datasheet của pic16f1939 sẽ thấy có 2 thanh ghi PORT và LAT cũng như ý nghĩa của chúng.
__________________
Vì sao nên đọc tài liệu tiếng Anh? http://www.picvietnam.com/forum/showthread.php?t=6819 Nguồn xung các loại: www.semitech.vn |
|
|