Thời gian Mở cửa: Các ngày trong tuần: 7:30 - 20:00

0 sản phẩm

  • Giỏ hàng của bạn trống!

Lập trình Nuvoton 8051 - N76E003AT20 - MS51FB9AE - GPIO

20/02/2021   |   2355

Đặt mua N76E003AT20 và MS51FB9AE giá rẻ nhất thị trường tại: https://linhkienthuduc.com/nuvoton-ms51fb9ae-thay-the-n76e003at20

N76E003AT20 và MS51FB9AE là 2 dòng MCU 1T-8051 hiệu suất cao có pin to pin compatible với STM8S003F3P6/ STM8S103F3P6. Vì tính linh động này một số dự án có thể sử dụng N76E003AT20/MS51FB9AE để thay thế STM8. Dòng MS51FB là dòng vi điều khiển được ra mắt gần đây nhằm thay thế dòng N76E003 với một số ưu điểm.

1. Schematic của Kit MS51FB

2. Sơ đồ chân của MS51FB9AE

3. Tổng quan về GPIO của MS51FB

Chân GPIO của MS51FB có 4 trạng thái:

PnM1.X (1) PnM2.X (1) IO/Type
0 0 Quasi-Bidirectional (2 Chiều)
0 1 Push-Pull (Kéo - Đẩy)
1 0 Input Only (Chỉ Input Trở kháng cao)
1 1 Open-Drain (Cực thu để hở)
Note (1): N = 0~5, x = 0~7

 

  • Quasi-Bidirectional Mode

Quasi-Bidirectional Mode như cấu trúc I / O tiêu chuẩn của 8051, có thể điều khiển cả đầu vào và đầu ra. Khi output xuất ra mức logic cao, nó được điều khiển yếu, cho phép thiết bị bên ngoài kéo chân xuống thấp. Khi output xuất ra mức logic thấp, nó được kéo xuống mạnh và có thể dẫn dòng điện lớn. Trong thiết kế, có hai transistor kéo lên VDD. Mỗi transistor phục vụ các mục đích khác nhau. Một trong số này pull-high, được gọi là “very weak” pull-high, được bật khi output bằng 1. Khi transistor này kéo lên, nó sẽ chỉ để ngõ ra mức 1 nếu chân được thả nổi.

Mức kéo cao thứ hai là “strong” pull high. Transistor được sử dụng để tăng tốc độ chuyển đổi từ 0 đến 1 trên ở ngõ ra. Nó sẽ được giữ trong vòng 2 chu kì.

=> Chế độ này được sử dụng cho alternative function (UART, SPI,..) ngõ vào hoặc ngõ vào GPIO chế độ điện trở kéo lên

  • Push-Pull Mode

Trong chế độ này ngõ ra sẽ là VDD nếu output là 1, và GND nếu ngõ ra là 0.

  • Input Mode

Trong chế độ này ngõ vào sẽ thả nổi (high-impedance), trạng thái sẽ phụ thuộc vào bên ngoài.

  • Open-Drain Mode

 Trong chế độ này ngõ ra sẽ thả nổi nếu output là 1, và GND nếu ngõ ra là 0.

4. Ví dụ sử dụng GPIO

Trong ví dụ này mình sẽ sử dụng chân P1.2 (LED1) làm output push-pull.


#include "MS51_16K.H"

void main(void)
{
    /*  Set up P1.2 As push-pull mode   */
    P12_PUSHPULL_MODE;

    /*  Toggle P1.2 with freq 0.5Hz */
    while(TRUE)
    {
        /*  Set LED ON and delay with timer 0 1000ms */
        P12 = 0;
        Timer0_Delay(16000000,1000,1000);;

        /*  Set LED OFF and delay with timer 0 1000ms */
        P12 = 1;
        Timer0_Delay(16000000,1000,1000);;
    }
}

Sau khi nạp xong, LED trên board trên chớp tắt với tần số 0.5Hz.

Cám ơn các bạn.