Thứ Bảy, 15 tháng 12, 2018

LẬP TRÌNH NUVOTON N76E003
BÀI 4: Khảo sát GPIO - Khai báo I/O

Sơ đồ chân VĐK N76E003
+ Sơ đồ chân:

N76E003 có tối đa 20 chân I/O được chia thành 4 port P0 đến P3 và mỗi port có 1 thanh ghi điều khiển Px.
+ Các chế độ hoạt động của I/O:
  • Quasi-bidirectional

Trong chế độ Quasi-bidirectional mỗi chân có một điện trở treo lên nguồn dương từ 100 đến 300K
  • Push-pull
Chế độ này tương tự như chế độ trên nhưng cho ra dòng điện mạnh hơn, có cấu trúc CMOS nên cho độ ổn định cao. Chúng cũng được ứng dụng trong rất nhiều lĩnh vực (Mấy anh chơi inverter mặt trời, chít cá,... thì rành cái này hơn mình rồi. hi hi). Trên internet có quá nhiều bài viết nói về vấn đề này nên mình không nhắt lại các bạn tự tìm hiểu nhe.
  • Input-only
Trong chế độ này cần có một nguồn bên ngoài để MCU hiểu được mức logic.
  • Open-drain

Chế độ này cũng khá đa dạng và phổ biến trên các loại MCU, chúng cũng có nhiều công dụng khác nhau, và công dụng điển hình là chúng có thể giao tiếp được với nhiều IC có mức điện áp khác nhau 3v3 chẳng hạn,... khi đó ta cần dùng một điện trở treo lên nguồn dương.

Phần 2: Thanh ghi điều khiển I/O

Phần này mình chỉ giới thiệu port P0 thôi nhé các port lại tương tự nhe, bạn nào không hiểu hay có vấn đề gì thì nêu thắt mắt phía dưới nhé. 
Nếu muốn biết sâu hơn về phần cứng các bạn tham khảo thêm trong datasheet của MCU nhé.

Sơ đồ thanh ghi P0M1

Sơ đồ thanh ghi P0M2


Các mode hoạt động của I/O

- Trong phần này các bạn cần nhớ cho mình địa chỉ (VD: Address: B1H thanh ghi của P0M1) của từng thanh ghi nhé nó rất quan trọng đấy. 
- Muốn thiết lặp một I/O ở chế độ vào (Input) hay ra (Output) ta chỉ cần ghi các bit tương ứng trong bảng Các mode hoạt động của I/O vào địa chỉ bit ta cần sử dụng là được nhé.

VD: - Ta quy ước Input = 1. Output = 0 nhé.
        - Chú ý: Khi ghi vào thanh ghi thì ta ghi 1 byte. 

Khai báo port P0 là Input ta cần ghi 0xFF vào P0M1 và ghi 0x00 vào P0M2. ta thấy giá trị cho thanh ghi P0M2 là 0x00 sẽ ngược với giá trị ta quy ước ban đầu nên chỉ cần đảo bit và ghi vào P0M2.
Xây dựng chương trình con cho hàm khai báo I/O nhé:

//===================================================================//
Void set_tris_0(unsigned char dat)    (1)
{
        P0M1 =   dat;         // Ghi giá trị dat vào thanh ghi P0M1                      
        P0M2 = ~dat;       // Ghi giá trị ~dat vào thanh ghi P0M2
}
//===================================================================//

* Giải thích chương trình
(1) Hàm để gọi chương trình con khi khai kháo I/O

void main()
{
               set_tris_0(0xFF);                    // khai báo port0 là input
           
               while(true)
               {
                                                             // Chương trình chính
               }
}

** Các bạn tự tìm hiểu nguôn ngữ lập trình C căn bản nhé. Có thể tham khảo giáo trình lập trình C cơ bản của Phạm Văn Ất có rất nhiều trên internet hay bất cứ tài liệu nào khác.







Không có nhận xét nào:

Đăng nhận xét