卖逼视频免费看片|狼人就干网中文字慕|成人av影院导航|人妻少妇精品无码专区二区妖婧|亚洲丝袜视频玖玖|一区二区免费中文|日本高清无码一区|国产91无码小说|国产黄片子视频91sese日韩|免费高清无码成人网站入口

如何編寫STC15F2K60S2定時(shí)/計(jì)數(shù)器中斷函數(shù)

STC15F2K60S2單片機(jī)是STC15系列的經(jīng)典產(chǎn)品之一。其中定時(shí)/計(jì)數(shù)器中斷是常用的功能,為了方便使用,我們可以自己編寫一個(gè)定時(shí)/計(jì)數(shù)器中斷初始化函數(shù),方便在平時(shí)使用中進(jìn)行調(diào)用。1. STC15

STC15F2K60S2單片機(jī)是STC15系列的經(jīng)典產(chǎn)品之一。其中定時(shí)/計(jì)數(shù)器中斷是常用的功能,為了方便使用,我們可以自己編寫一個(gè)定時(shí)/計(jì)數(shù)器中斷初始化函數(shù),方便在平時(shí)使用中進(jìn)行調(diào)用。

1. STC15F2K60S2定時(shí)/計(jì)數(shù)器中斷(晶振12MHz,12分頻)

單位時(shí)間等于12分頻/12MHz,即計(jì)數(shù)器每次加1使用的時(shí)間是1微秒。下面是示例代碼:

```c

include

sbit LED P1^1; //LED燈接口

unsigned int counter 0; //例子中需要使用的變量

/*函數(shù)名:定時(shí)計(jì)數(shù)器中斷初始化

調(diào)用:TimerCounterIntInit_12MHz(T_C_Int, TH_Init, TL_Init)

參數(shù):bit T_C_Int(定時(shí)器中斷0或定時(shí)器中斷1), delay_us(多少微秒)

返回值:無

結(jié)果:?jiǎn)?dòng)T/C1或T/C0并設(shè)置計(jì)數(shù)器初值*/

void TimerCounterIntInit_12MHz(bit Tx,unsigned int delay_us){

//定時(shí)器0和定時(shí)器1都使用工作方式0:16位自動(dòng)裝載的定時(shí)/計(jì)數(shù)器,不需在中斷函數(shù)中重寫初值(TMOD:定時(shí)器/計(jì)數(shù)器模式控制寄存器)

TMOD 0x00;

EA 1; //中斷總開關(guān)(屬IE:中斷允許寄存器)

if(Tx0){

ET0 1; //允許定時(shí)器中斷0中斷(屬IE:中斷允許寄存器)

TH0 (65536 - delay_us) >> 8; //16位計(jì)數(shù)寄存器T0高8位

TL0 (65536 - delay_us) 0x00FF; //16位計(jì)數(shù)寄存器T0低8

TR0 1; //定時(shí)器0啟動(dòng)(屬TCON:Timer Control Register)

}

else {

ET1 1; //允許定時(shí)器中斷1中斷(屬IE:中斷允許寄存器)

TH1 (65536 - delay_us) >> 8; //16位計(jì)數(shù)寄存器T1高8位

TL1 (65536 - delay_us) 0x00FF; //16位計(jì)數(shù)寄存器T1低8位

TR1 1; //定時(shí)器1啟動(dòng)(屬TCON:Timer Control Register)

}

}

```

2. 定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)

該函數(shù)負(fù)責(zé)在定時(shí)/計(jì)數(shù)器0溢出后進(jìn)行中斷處理。具體代碼如下:

```c

/*函數(shù)名:定時(shí)/計(jì)數(shù)器0中斷處理函數(shù)

調(diào)用:[T/C0溢出后中斷處理]

參數(shù):無

返回值:無

結(jié)果:重新寫入16位計(jì)數(shù)寄存器初始值,處理用戶程序

備注:定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)/

void TimerCounter_0(void) interrupt 1 using 1{

//切換寄存器組到1

counter ;

if(counter 1000){

//1毫秒重復(fù)1000次就是1秒

LED ~LED; //取LED相反狀態(tài),即LED燈重復(fù)開1秒,關(guān)1秒。

counter 0; //重置

}

}

```

3. 定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)

該函數(shù)負(fù)責(zé)在定時(shí)/計(jì)數(shù)器1溢出后進(jìn)行中斷處理。具體代碼如下:

```c

/*函數(shù)名:定時(shí)/計(jì)數(shù)器1中斷處理函數(shù)

調(diào)用:[T/C1溢出后中斷處理]

參數(shù):無

返回值:無

結(jié)果:重新寫入16位計(jì)數(shù)寄存器初始值,處理用戶程序/

void TimerCounter_1(void) interrupt 3 using 3{

//切換寄存器組到3

//重新寫入初值

//用戶函數(shù)內(nèi)容

}

```

4. 主函數(shù)

主函數(shù)包含LED燈初始化及TimerCounterIntInit_12MHz()函數(shù)的調(diào)用。代碼如下:

```c

//主函數(shù)

void main(void){

LED 0; //初始化LED燈狀態(tài)為關(guān)

TimerCounterIntInit_12MHz(0,1000); //調(diào)用初始化函數(shù)

while(1){}

}

```

以上是STC15F2K60S2定時(shí)/計(jì)數(shù)器中斷函數(shù)的相關(guān)代碼和解釋。通過學(xué)習(xí)本文所述內(nèi)容,您可以輕松地編寫自己的定時(shí)/計(jì)數(shù)器中斷函數(shù),以幫助您更好地使用STC15F2K60S2單片機(jī)。

標(biāo)簽: