新聞中心

52定時(shí)器2的使用

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò) 收藏
*Thisfileisanexampletousetimer2inmode0此程序用于定時(shí)器2模式0。以下程序200811.07調(diào)試成功。/*/
#include52.h>/*當(dāng)前文件夾內(nèi)的文件*/
#defineMSB_reload_value0x36/*msbreloadvalueexemple高位重載值:延時(shí)60ms*/
#defineLSB_reload_value0x36/*lsbreloadvalueexemple低位重載值*/

//sfrT2MOD=0xC9;/*定時(shí)器2控制寄存器地址??晌粚ぶ?,復(fù)位值=XXXXXX00B應(yīng)該加在reg52.h文件中。*/
sbitP1_2=P1^2;
/**FUNCTION_PURPOSE:Thisfilesetuptimer2inmode0(16bitsauto-reloadup/downcountingtimer).
*用于模式0:16位自動(dòng)重載向上/下計(jì)時(shí)
*The16-bitsregisterconsistofall8bitsofTH2andall8bitsofTL2.
*16位寄存器由8位的TH2和8位的TL2組成
*TheEXF2bittoggleswhentimer2overfloworunderflowoccurs.
*當(dāng)timer2向上/下溢出時(shí),置位EXF2位
*EXF2doesnotgenerateinterrupt.Thisbitcanbeusedtoprovide17-bitresolution
*FUNCTION_INPUTS:P1.1(T2EX)=0fordowncountingor1forupcounting.
*EXF2位并不引起中斷。此位可以用來(lái)提供17位輸入功能:向上/下計(jì)數(shù)功能
*FUNCTION_OUTPUTS:void*/
voidsystem_init()
{
EA=0;/*關(guān)中斷,設(shè)置定時(shí)器2*/
T2MOD&=0xFC;/*T2OE=0;定時(shí)器2輸出不允許*/
T2MOD|=0x01;/*DCEN=1;可以設(shè)置為向上/下計(jì)數(shù):此程序中為向上達(dá)到0xff時(shí)溢出*/
EXF2=0;/*resetflag定時(shí)器2外部標(biāo)志位清除*/
TCLK=0;
RCLK=0;/*disablebaudrategenerator不用于波特率發(fā)生器*/
EXEN2=0;/*ignoreeventsonT2EX視T2EX(P1.1)端信號(hào)無(wú)效*/
TH2=MSB_reload_value;/*Initmsb_value填入初始化值*/
TL2=LSB_reload_value;/*Initlsb_value*/
RCAP2H=MSB_reload_value;/*reloadmsb_value重載值*/
RCAP2L=LSB_reload_value;/*reloadlsb_value*/
C_T2=0;/*timermode定時(shí)模式*/
CP_RL2=0;/*reloadmode重載模式*/

ET2=1;/*enabletimer2interrupt允許T2中斷*/
TR2=1;/*timer2run開(kāi)始計(jì)時(shí)*/
EA=1;/*interuptenable中斷允許*/
}
voidmain(void)
{
system_init();
while(1)/*endless*/
{

}
}
/***FUNCTION_PURPOSE:timer2interrupt*FUNCTION_INPUTS:void*FUNCTION_OUTPUTS:P1.2toggleperiod=2*(65536-reload_value)cycles*/
voidit_timer2(void)interrupt5/*interruptaddressis0x002b定時(shí)器2中斷向量入口*/
{
P1_2=~P1_2;/*P1.2togglewheninterrupt.中斷時(shí)取反*/
TF2=0;/*resetinterruptflag復(fù)位中斷標(biāo)志位*/
}


關(guān)鍵詞: 52定時(shí)器

評(píng)論


技術(shù)專區(qū)

關(guān)閉