?? 事7-1.c
字號:
/* 外部中斷觸發讀取運行中定時器的值 */
#ifndef __DEMO_4_12_C__
#define __DEMO_4_12_C__
#include <AT89X51.H>
#define _MHZ_ 12 // 設置單片機使用的晶振頻率
void main()
{
/* 定時、中斷初始化 */
TMOD = 0x10; // T1使用定時模式,工作模式1,無門控位
TH1 = 0x3C; // 為T1填入初值,定時時間50ms
TL1 = 0xB0;
TR1 = 1; // 啟動T1
IT0 = 1; // 設置INTR0中斷方式為邊沿觸發方式,負跳變時產生中斷
ET1 = 1; // 允許定時器1中斷
EX1 = 1; // 允許外部中斷0中斷
EA = 1; // CPU開放中斷
while(1); // 循環等待
}
/* T1溢出中斷處理函數 */
void timer1_int() interrupt 3 using 2 // T1溢出中斷,使用工作組2
{
TH1 = 0x3C; // 重新填入初值
TL1 = 0xB0;
}
/* 外部中斷0處理函數 */
void intr0_int() interrupt 0 using 2 // INTR0中斷,使用工作組2
{
unsigned char tmp1, tmp2;
do // 讀取T1中的內容
{
tmp1 = TH1;
tmp2 = TL1;
}while(tmp1 != TH1); // 數據無效則反復循環
P0 = tmp2; // 發送有效數據
P2 = tmp1;
}
#endif
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -