冰楓論壇

標題: MCU NXP P87LPC768FN 87LPC768 DIP-20 [打印本頁]

作者: 洪嵐峰    時間: 2023-4-9 16:25
標題: MCU NXP P87LPC768FN 87LPC768 DIP-20
NXP P87LPC768FN 是一款低成本 8 位微控制器,具有 8 KB 的 Flash 程序存儲器和 768 字節的 RAM。它使用的是 RISC 架構,具有 16 位指令字長和 8 位資料字長,最大運行頻率可達 20 MHz。

P87LPC768FN 的 DIP-20 封裝是一種雙列插針封裝,具有 20 個腳位,易於在原型開發和樣機製作中使用。

以下是 P87LPC768FN 的一個簡單範例,使用計時器和外部中斷來實現 LED 燈閃爍和按鈕檢測:


#include <p87lpc768fn.h>

#define LED_PIN P0_0
#define BUTTON_PIN P1_0

volatile unsigned int timer_count = 0;
volatile unsigned char button_state = 0;

void init_timer()
{
    // 設置計時器 0 的時鐘和計數器值,以產生 500ms 的中斷
    TMOD = 0x01;
    TH0 = 0xC2;
    TL0 = 0xAF;
    TR0 = 1;
    // 啟用計時器 0 中斷
    ET0 = 1;
    EA = 1;
}

void init_button()
{
    // 設置按鈕引腳為輸入狀態,並啟用外部中斷 1
    BUTTON_PIN = 1;
    EX1 = 1;
    EA = 1;
}

void main()
{
    // 設置 LED 引腳為輸出狀態
    LED_PIN = 0;
    // 初始化計時器和按鈕
    init_timer();
    init_button();
    while (1) {
        // 判斷按鈕狀態並控制 LED 燈的閃爍
        if (button_state) {
            LED_PIN = !LED_PIN;
        } else {
            LED_PIN = 0;
        }
    }
}

void timer_isr() interrupt 1
{
    // 計時器中斷服務程序,用於更新計時器計數值
    timer_count++;
    if (timer_count == 1000) {
        timer_count = 0;
    }
}

void button_isr() interrupt 2
{
    // 外部中斷服務程序,用於檢測按鈕狀態
    button_state = !button_state;
}
建議使用 NXP 官方提供的開發工具和資源來進行開發。




歡迎光臨 冰楓論壇 (https://bingfong.com/) Powered by 冰楓