洪嵐峰 發表於 2023-3-29 06:54:25

EM78P153SPJ定時餵養

EM78P153SPJ 是一款 8 位元的單片機,它的封裝為 DIP-20:


EM78P153SPJ 單片機
晶體振盪器,頻率可根據需要選擇,通常為 4MHz 或 8MHz。
兩個電解電容,電容值根據晶體振盪器的頻率選擇。
一個開關按鈕,用於開啟或關閉定時器。
一個蜂鳴器,用於發出響聲。

關於 EM78P153SPJ 的連結腳位和程式碼,以下是相關資訊:


連結腳位:

EM78P153SPJ 具有 20 個腳位,其連結腳位如下:



1. P0.0 / AD0  
2. P0.1 / AD1  
3. P0.2 / AD2  
4. P0.3 / AD3  
5. P0.4 / AD4
6. P0.5 / AD5  
7. P0.6 / AD6  
8. P0.7 / AD7  
9. VSS
10. VDD        
11. P1.0 / T0  
12. P1.1 / T1  
13. P1.2 / INT0
14. P1.3 / INT1
15. P1.4 / T2  
16. P1.5 / RST  
17. P1.6 / XTAL1
18. P1.7 / XTAL2
19. PSEN      
20. ALE

其中,P1.0、P1.1、P1.4 分別是定時器 0、定時器 1、定時器 2 的計數腳位。


程式碼:

以下是一個簡單的定時餵養程式碼示例,使用定時器 0 和定時器 1,以 1 秒的間隔發出一次響聲:



#include <REG_EM78P153SPJ.h>

void delay(unsigned int ms) {   // 延遲函數
    unsigned int i,j;
    for(i=0;i<ms;i++) {
        for(j=0;j<114;j++) {
            _nop_();
        }
    }
}

void main() {
    TMOD = 0x11;    // 設置定時器 0 和定時器 1 為模式 1
    TH0 = 0x3C;     // 設置定時器 0 的計數初值
    TL0 = 0xAF;
    TH1 = 0x3C;     // 設置定時器 1 的計數初值
    TL1 = 0xAF

TR0 = 1;        // 啟動定時器 0
TR1 = 1;        // 啟動定時器 1
P1 |= 0x20;     // 設置 P1.5 為輸出
while(1) {
    if(TF0) {   // 定時器 0 溢出
        TF0 = 0;    // 清除溢出標誌
        TH0 = 0x3C; // 重新設置計數初值
        TL0 = 0xAF;
        P1 ^= 0x20; // 翻轉 P1.5 狀態
    }
    if(TF1) {   // 定時器 1 溢出
        TF1 = 0;    // 清除溢出標誌
        TH1 = 0x3C; // 重新設置計數初值
        TL1 = 0xAF;
        P1 ^= 0x20; // 翻轉 P1.5 狀態
    }
    delay(1000);    // 延遲 1 秒
}

}



此程式碼中,定時器 0 和定時器 1 都被設置為模式 1,以 16 位元計數。計數器初值分別為 0x3CAF,即 15535。當定時器溢出時,會觸發對應的中斷並清除溢出標誌,然後重新設置計數初值,這樣可以實現持續的定時操作。在主循環中,延遲 1 秒後翻轉 P1.5 的狀態,從而控制蜂鳴器發出響聲。
頁: [1]
查看完整版本: EM78P153SPJ定時餵養