- UID
- 373967
- 帖子
- 8659
- 主題
- 2609
- 精華
- 0
- 積分
- 989
- 楓幣
- 120
- 威望
- 967
- 存款
- 33287
- 贊助金額
- 0
- 推廣
- 0
- GP
- 1205
- 閱讀權限
- 50
- 在線時間
- 447 小時
- 註冊時間
- 2023-1-12
- 最後登入
- 2024-10-12
|
發表於 2023-3-29 06:54:25
|顯示全部樓層
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 的狀態,從而控制蜂鳴器發出響聲。 |
|