STC12C5A60S2单片机各个模块程序代码.docx
- 文档编号:1425783
- 上传时间:2022-10-22
- 格式:DOCX
- 页数:56
- 大小:32.34KB
STC12C5A60S2单片机各个模块程序代码.docx
《STC12C5A60S2单片机各个模块程序代码.docx》由会员分享,可在线阅读,更多相关《STC12C5A60S2单片机各个模块程序代码.docx(56页珍藏版)》请在冰豆网上搜索。
STC12C5A60S2单片机各个模块程序代码
.
//****************************************************************************//
//STC12C5A60S2可编程时钟模块
//
//
//说明:
STC12C5A60S2单片机有三路可编程时钟输出CLKOUT0/T0/P3.4
//CLKOUT1/T1/P3.5、CLKOUT2/P1.0
//
//涉及寄存器:
AUXR(辅助寄存器)、WAKE_CLKO(时钟与系统掉电唤醒控制寄存
器)
//BRT(独立波特率发生器定时器寄存器)
//
//程序说明:
//本程序可选实现P3.4输出CLKOUT0时钟、P3.5输出CLKOUT1时
钟
//P1.0输出CLKOUT2时钟
//
////****************************************************************************/
/
#include
#include
//#definePort_BRT//如果想测试独立波特率发生器时钟输出请打开此句
//若想测试CLKOUT1和CLKOUT0请注释此句
#ifdefPort_BRT/*条件编译独立波特率发生器时钟输出*/
//*********************************//
//CLKOUT2时钟初始化//
//*********************************//
voidCLKOUT_init(void)
{
WAKE_CLKO=0x04;//Bit2-BRTCLKO允许P1.0配置为独立波特率发生器的时钟输出
//BRT工作在1T模式下时的输出频率=Sysclk/(256-BRT)/2//BRT工作在12T模式下时输出频率=Sysclk/12/(256-BRT)/2
AUXR=0x14;//Bit4-BRTR允许独立波特率发生器运行
//Bit2-BRTx12BRT工作在1T模式下
BRT=0xff;//更改该寄存器的值可实现对输出的时钟频率进行分频
}
#else/*条件编译CLKOUT0时钟输出*/
//*********************************//
//CLKOUT0时钟和CLKOUT1初始化//
//*********************************//
voidCLKOUT_init(void)
{
.
.
WAKE_CLKO=0x03;//允许将P3.4/T0脚配置为定时器0的时钟输出CLKOUT0
//T0工作在1T模式时的输出频率=SYSclk/(256-TH0)/2
//T0工作在12T模式时的输出频率=SYSclk/12/(256-TH0)/2
//1T指的是每1个时钟加1,是普通C51的12倍
//12T指的是每12个时钟加1与普通C51一样
//允许将P3.5/T1脚配置为定时器1的时钟输出CLKOUT1,只
能工作在定时器模式2下
//T1工作在1T模式时的输出频率=SYSclk/(256-TH0)/2//T1工作在12T模式时的输出频率=SYSclk/12/(256-TH0)/2//1T指的是每1个时钟加1,是普通C51的12倍//12T指的是每12个时钟加1与普通C51一样
AUXR=0xc0;//T0定时器速度是普通8051的12倍,即工作在1T模式下
//T1定时器速度是普通8051的12倍,即工作在1T模式下
TMOD=0x22;//定时器0工作模式为方式2,自动装载时间常数
//定时器1工作模式为方式2,自动装载时间常数
TH0=0xff;//更改该寄存器的值可实现对输出的时钟频率进行分频
TL0=0xff;
TH1=0xff;//更改该寄存器的值可实现对输出的时钟频率进行分频
TL1=0xff;
TR1=1;
TR0=1;
}
#endif
//**********************************//
//主程序//
//**********************************//
voidmain()
{
CLKOUT_init();
while
(1);
}
//****************************************************************************//
//STC12C5A60S2系统时钟模块
//
//
//说明:
STC12C5A60S2单片机有两个时钟源,内部R/C振荡时钟和外部晶体时
钟
//出厂标准配置是使用外部晶体或时钟
//
//
//涉及寄存器:
CLK_DIV(时钟分频寄存器)
.
.
//由该寄存器的Bit0-2组合可实现对时钟源进行0、2、4、8、16
//32、64、128分频
////
//程序说明:
//对外部时钟进行分频得到Sysclk,然后经过P1.0的独立波特率
//时钟输出功能Sysclk/2输出时钟频率
//****************************************************************************//
#include
#include
#defineBus_clk12//若要修改系统时钟直接在此处修改
//12
为
12M
的sysclk
//6
为
6M
的sysclk
//3
为
3M
的sysclk
//1500
为
1.5M
的sysclk
//750
为
750kHz
的sysclk
//375
为
375kHz
的sysclk
//187500
为
187.5kHz
的sysclk
//93750
为
93.75kHz
的sysclk
//*********************************************//
//系统时钟初始化//
//*********************************************//
voidSysclk_init(void)
{
WAKE_CLKO=0x04;//配置P1.0口为频率输出
AUXR=0x14;//允许波特率时钟工作
//工作模式为1T
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==93750)
CLK_DIV=0x07;
.
.
#endif
}
//**********************************************//
//主程序//
//**********************************************//
voidmain()
{
Sysclk_init();
while
(1);
}
//****************************************************************************//
//STC12C5A60S2系统省电模块
//
//
//说明:
STC12C5A60S2单片机有三种省电模式以降低功耗.空闲模式,低速模式
//掉电模式
//
//
//涉及寄存器:
PCON(电源控制寄存器)
//
Bit0-IDL
控制单片机进入IDLE空闲模式
//
Bit1-PD
控制单片机进入掉电模式
//
//
//
程序说明:
程序实现让单片机先工作一阵子
(通过P0^3指示灯显示)
//
然后进入掉电状态
利用外部中断
0口来唤醒单片机工作
//
唤醒后单片机将通过
P0^0-3口的灯闪烁显示开始工作
////****************************************************************************//
#include
#include
#defineucharunsignedchar
#defineuintunsignedint
ucharPower_Down_Flag=0;
//进入掉电状态标志
sbitChip_Start_LED
=P0^0;
//单片机开始工作指示灯
sbitPower_Down_LED_INT0
=P0^1;
//INT0
口掉电唤醒指示灯
sbitN_Power_Down_LED_INT0=P0^2;
//INT0
口没有唤醒指示灯
sbitNormal_Work_LED
=P0^3;
//正常工作指示灯
sbitPower_Down_Wakeup_INT0=P3^2;
//外中断唤醒输入口
voidDelay_ms(uinttime);
voidNormal_work(void);
voidIntp_init(void);
.
.
voidAfter_Powr_Down(void);
//***********************************//
//软件延时//
//***********************************//
voidDelay_ms(uinttime)
{
uintt;//延时时间=(time*1003+16)us
while(time--)
{
for(t=0;t<82;t++);
}
}
//***********************************//
//正常工作指示
//***********************************//
voidNormal_
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STC12C5A60S2 单片机 各个 模块 程序代码