快速导航
STC12参考例程(已封装好成函数库,方便用到时直接调用,附模块资料代码注释)
STC12C5A60S2时钟输出引脚
使用定时器T0产生时钟频率
#include <STC12C5A60S2.h>
#define FOSC 11059200 //晶振频率
//#define MODE1T //定时器时钟模式,注释这一行是12T,取消注释是1T
#define FREQUENCY 10000 //频率设置
#ifdef MODE1T
#define F_CALCULATION (256-FOSC/2/FREQUENCY)//1T模式下频率计算公式
#else
#define F_CALCULATION (256-FOSC/2/12/FREQUENCY)//12T模式下频率计算公式
#endif
void frequencyTimer0_Init(void)
{
#ifdef MODE1T
AUXR |= 0x80; //定时器0工作模式1T模式
#endif
TMOD |= 0x02; //设置定时器0,工作方式2(8位自动重载)
TL0 = F_CALCULATION;
TH0 = F_CALCULATION;
TR0 = 1; //使能定时器0
WAKE_CLKO = 0x01; //使能定时器0时钟输出
}
void main(void)
{
frequencyTimer0_Init();
while(1);
}
定时器T1产生时钟频率
#include <STC12C5A60S2.h>
#define FOSC 11059200 //晶振频率
//#define MODE1T //定时器时钟模式,注释这一行是12T,取消注释是1T
#define FREQUENCY 10000 //频率设置
#ifdef MODE1T
#define F_CALCULATION (256-FOSC/2/FREQUENCY)//1T模式下频率计算公式
#else
#define F_CALCULATION (256-FOSC/2/12/FREQUENCY)//12T模式下频率计算公式
#endif
void frequencyTimer1_Init(void)
{
#ifdef MODE1T
AUXR = 0x40;//timer1 work in 1T mode
#endif
TMOD = 0x20;//set timer1 as mode2 (8-bit auto-reload)
TL1 = F_CALCULATION;
TH1 = F_CALCULATION;
TR1 = 1;//timer1 start running
WAKE_CLKO = 0x02;//enable timer1 clock outp
}
void main(void)
{
frequencyTimer1_Init();
while(1);
}
时钟输出效果