使用定時器T1的模式2 定時器T0的模式2 每隔兩秒左右切換指示燈
阿新 • • 發佈:2019-01-30
#include <AT89X52.H>
#define uint unsigned int
#define uchar unsigned char
uint i,j;
main(){
i=0;
j=0;
EA=1; //中斷總開關開
ET0=1;//定時器T0中斷允許
ET1=1;//定時器T1中斷允許
TR0=1;// 啟動定時器T0
TR1=1;// 啟動定時器T1
TMOD=0x22;//使用定時器T1的模式2 定時器T0的模式2
TH0=TL0=256-255; //計數器T0高8位賦初值 1 (有255微秒的時間)
TH1=TL1=256-255; //計數器T0高8位賦初值 1 (有255微秒的時間)
P0=0x00; //開啟所有P0口的LED燈
P1=0xff; //關閉所有P1口的LED燈
while(1); //無限迴圈,
}
/**************************************************************
函式功能:定時器T0中斷服務程式
**************************************************************/
void int1(void) interrupt 1 //“interrupt”宣告函式為中斷服務函式
{
i=i+1;
if(i==7800){ //湊2秒左右
P0=~P0; //P0口的LED燈取反
i=0;
}
}
/**************************************************************
函式功能:定時器T1中斷服務程式
**************************************************************/
void int2(void) interrupt 3 //“interrupt”宣告函式為中斷服務函式
{
j=j+1;
if(j==7800){ //湊2秒左右
P1=~P1; //P1口的LED燈取反
j=0;
}
}
#define uint unsigned int
#define uchar unsigned char
uint i,j;
main(){
i=0;
j=0;
EA=1; //中斷總開關開
ET0=1;//定時器T0中斷允許
ET1=1;//定時器T1中斷允許
TR0=1;// 啟動定時器T0
TR1=1;// 啟動定時器T1
TMOD=0x22;//使用定時器T1的模式2 定時器T0的模式2
TH0=TL0=256-255; //計數器T0高8位賦初值 1 (有255微秒的時間)
TH1=TL1=256-255; //計數器T0高8位賦初值 1 (有255微秒的時間)
P0=0x00; //開啟所有P0口的LED燈
P1=0xff; //關閉所有P1口的LED燈
while(1); //無限迴圈,
}
/**************************************************************
函式功能:定時器T0中斷服務程式
**************************************************************/
void int1(void) interrupt 1 //“interrupt”宣告函式為中斷服務函式
{
i=i+1;
if(i==7800){ //湊2秒左右
P0=~P0; //P0口的LED燈取反
i=0;
}
}
/**************************************************************
函式功能:定時器T1中斷服務程式
**************************************************************/
void int2(void) interrupt 3 //“interrupt”宣告函式為中斷服務函式
{
j=j+1;
if(j==7800){ //湊2秒左右
P1=~P1; //P1口的LED燈取反
j=0;
}
}