当前位置:文档之家› STC12C5A60S2单片机各个模块程序代码

STC12C5A60S2单片机各个模块程序代码

CLKOUT1/T1/P3.5、CLKOUT2/P1.0
涉及寄存器:AUXR辅助寄存器)、WAKE_CLKO(钟与系统掉电唤醒控制寄存器)
BRT(独立波特率发生器定时器寄存器)
程序说明:
本程序可选实现P3.4输出CLKOUT0寸钟、P3.5输出CLK0UT1时钟
P1.0输出CLK0UT2寸钟
////**
若想测试CLKOUT和CLKOUT请注释此句
#ifdef Port_BRT/*
条件编译独立波特率发生器时钟输出*/
//*
*******************************
*//
//CLKOUT2时钟初始化//
//*********************************//
void CLKOUT_init(void)
〃Bit2-BRTx12 BRT工作在1T模式下
BRT=0xff;//更改该寄存器的值可实现对输出的时钟频率进行分频
}
#else/*条件编译CLKOUT0寸钟输出*/
//*********************************//
void CLKOUT_init(void)
{
WAKE_CLKO=0x03;//允许将P3.4/T0脚配置为定时器0的时钟输出CLKOUT0
//
对外部时钟进行分频得到Sysclk,然后经过P1.0的独立波特率
//
时钟输出功能Sysclk/2输出时钟频率
'***************************************************************************
//
#include <STC12C5A60S2.h> #include <intrins.h>
== 93750 )
CLK_DIV
=0x07;
#endif
}
//**********************************************//
//主程序//
//**********************************************//
void main()
{
Sysclk_init();
while(1);
}
//*
***************************************************************************
//
//
STC12C5A60S2系 统 省 电 模 块
#define Bus_clk12 //若要修改系统时钟直接在此处修改
//系统时钟初始化//
BRT=0xff;
#if( Bus_clk=
= 12 )
CLK_DIV=
0x00;
#elif( Bus_clk
== 6 )
CLK_DIV
=0x01;
#elif( Bus_clk
== 3 )
CLK_DIV
=0x02;
#elif( Bus_clk
== 1500 )
CLK_DIV
=0x03;
#elif( Bus_clk
== 750 )
CLK_DIV
=0x04;
#elif( Bus_clk
== 375 )
CLK_DIV
=0x05;
#elif( Bus_clk
== 187500
CLK_DIV
=0x06;
#elif( Bus_clk
//*
***************************************************************************
//
//
//
//
//////Fra bibliotek////
//
//
//
//
//
STC12C5A60S2可编程时钟模块
说明:STC12C5A60S2单片机有三路可编程时钟输出CLKOUTO/TO/P3.4
工作在定时器模式2下
//T1工作在1T模式时的输出频率=SYSclk/(256-TH0)/2
//T1工作在12T模式时的输出频率=SYSclk/12/(256-TH0)/2
//1T指的是每1个时钟加1,是普通C51的12倍
//12T指的是每12个时钟加1与普通C51一样
定时器速度是普通8051的12倍,即工作在1T模式下 定时器速度是普通8051的12倍,即工作在1T模式下 定时器0工作模式为方式2,自动装载时间常数 定时器1工作模式为方式2,自动装载时间常数 更改该寄存器的值可实现对输出的时钟频率进行分频
{
WAKE_CLKO=0x04; //Bit2-BRTCLKO允许P1.0配置为独立波特率发生器的时钟输 出
//BRT工作在1T模式下时的输出频率=Sysclk/(256-BRT)/2
//BRT工作在12T模式下时输出频率=Sysclk/12/(256-BRT)/2
AUXR = 0x14; //Bit4-BRTR允许独立波特率发生器运行
//T0
//T0
//1T
//12T
工作在1T模式时的输出频率=SYSclk/(256-TH0)/2
工作在12T模式时的输出频率=SYSclk/12/(256-TH0)/2
指的是每1个时钟加1,是普通C51的12倍
指的是每12个时钟加1与普通C51一样
//允许将P3.5/T1脚配置为定时器1的时钟输出CLK0UT1只能
************************************************************************
**//
#include <STC12C5A60S2.H>
#include <intrins.h>
//#define Port_BRT//
//
如果想测试独立波特率发生器时钟输出请打开此句
更改该寄存器的值可实现对输出的时钟频率进行分频
//主程序//
void main()
{
CLK0UT_init();
while(1);
}//****************************************************************************
//
//STC12C5A60S2系统时钟模块
//
//
//说明:STC12C5A60S2单片机有两个时钟源,内部R/C振荡时钟和外部晶体时钟
//出厂标准配置是使用外部晶体或时钟
//
//
//涉及寄存器:CLK_DIV(时钟分频寄存器)
//由该寄存器的Bit0-2组合可实现对时钟源进行0、2、4、8、16
//
32
、64、128分频
//
//
//
程序说明:
相关主题