0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STC12C5A60S2可编程时钟模块及系统省电模块代码

jf_f8pIz0xS 来源:电子发烧友整理 2018-01-30 11:36 次阅读

本文为大家带来STC12C5A60S2可编程时钟模块及系统省电模块代码介绍。

STC12C5A60S2寄存器介绍

STC12C5A60S2可编程时钟模块及系统省电模块代码

STC12C5A60S2可编程时钟模块及系统省电模块代码

STC12C5A60S2可编程时钟模块及系统省电模块代码

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 《STC12C5A60S2.H》

#include 《intrins.h》

//#define Port_BRT //如果想测试独立波特率发生器时钟输出请打开此句

//若想测试CLKOUT1和CLKOUT0请注释此句

#ifdef Port_BRT /*条件编译独立波特率发生器时钟输出*/

//*********************************//

// CLKOUT2时钟初始化 //

//*********************************//

void CLKOUT_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-BRTx12 BRT工作在1T模式下

BRT = 0xff; //更改该寄存器的值可实现对输出的时钟频率进行分频

}

#else /*条件编译CLKOUT0时钟输出*/

//*********************************//

// CLKOUT0时钟和CLKOUT1初始化 //

//*********************************//

void CLKOUT_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

//**********************************//

// 主程序 //

//**********************************

//

void main()

{

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 《STC12C5A60S2.h》

#include 《intrins.h》

#define Bus_clk 12 //若要修改系统时钟直接在此处修改

//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

//*********************************************//

// 系统时钟初始化 //

//*********************************************//

void Sysclk_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

}

//**********************************************//

// 主程序 //

//**********************************************//

void main()

{

Sysclk_init();

while(1);

}

STC12C5A60S2省电模块代码

//****************************************************************************//

// STC12C5A60S2系统省电模块 //

//

// 说明: STC12C5A60S2单片机有三种省电模式以降低功耗。空闲模式,低速模式

// 掉电模式

//

//

// 涉及寄存器:PCON(电源控制寄存器)

// Bit0 - IDL 控制单片机进入IDLE空闲模式

// Bit1 - PD 控制单片机进入掉电模式

// //

// 程序说明: 程序实现让单片机先工作一阵子(通过P0^3指示灯显示)

// 然后进入掉电状态,利用外部中断0口来唤醒单片机工作

// 唤醒后单片机将通过P0^0-3口的灯闪烁显示开始工作

////****************************************************************************/

/

#include 《STC12C5A60S2.h》

#include 《intrins.h》

#define uchar unsigned char

#define uint unsigned int

uchar Power_Down_Flag = 0; //进入掉电状态标志

sbit Chip_Start_LED = P0^0; //单片机开始工作指示灯

sbi

t Power_Down_LED_INT0 = P0^1; //INT0口掉电唤醒指示灯

sbit N_Power_Down_LED_INT0 = P0^2; //INT0口没有唤醒指示灯

sbit Normal_Work_LED = P0^3; //正常工作指示灯

sbit Power_Down_Wakeup_INT0= P3^2; //外中断唤醒输入口

void Delay_ms( uint time );

void Normal_work(void);

void Intp_init(void);

void After_Powr_Down(void);

//***********************************//

// 软件延时 //

//***********************************//

void Delay_ms( uint time )

{

uint t; //延时时间 = (time*1003+16)us while(time--)

{

for( t = 0; t 《 82; t++ );

}

}

//***********************************//

// 正常工作指示

//***********************************//

void Normal_work(void)

{

Normal_Work_LED = 1;

Delay_ms(500);

Normal_Work_LED = 0;

Delay_ms(500);

}

void After_Power_Down(void)

{

uchar i ;

for( i = 0; i 《 100; i++ )

{

P0 = 0x0f;

Delay_ms(500);

P0 = 0x00;

Delay_ms(500);

}

}

//***********************************//

// 中断初始化 //

//***********************************//

void Intp_init(void)

{

IT0 = 0; //外部中断源0为低电平触发

EX0 = 1; //允许外部中断

EA = 1; //开总中断

}

//***********************************//

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

// 主程序 //

//***********************************//

void main()

{

uchar j = 0;

uchar wakeup_counter = 0; //记录掉电次数

P0 = 0x00;

Chip_Start_LED = 1; //单片机开始工作

Intp_init(); //外中断0初始化

while(1)

{

P2 = wakeup_counter;

wakeup_counter++;

for( j = 0; j 《 250; j++ )

{

Normal_work(); //系统正常工作指示

}

Power_Down_Flag = 1; //系统开始进入掉电状态

PCON = 0x02;

_nop_();

_nop_();

_nop_();

_nop_();

After_Power_Down(); //掉电唤醒后

}

}

//**********************************//

// 中断服务

//**********************************//

void INT0_Service(void) interrupt 0

{

if( Power_Down_Flag ) //掉电唤醒状态指示

{

Power_Down_Flag = 0;

Power_Down_LED_INT0 = 1;

while( Power_Down_Wakeup_INT0 == 0 )

{

_nop_(); //等待高电平

}

Power_Down_LED_INT0 = 0;

}

else //未掉电状态

{

N_Power_Down_LED_INT0 = 1; //不是掉电唤醒指示

while( Power_Down_Wakeup_INT0 == 0 )

{

_nop_();

}

N_Power_Down_LED_INT0 = 0;

}

}

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6001

    文章

    43970

    浏览量

    620785
  • STC12C5A60S2
    +关注

    关注

    36

    文章

    219

    浏览量

    68768
收藏 人收藏

    评论

    相关推荐

    STC12C5A60S2

    STC12C5A60S2使用手册
    发表于 05-21 16:38

    基于STC12C5A60S2的无线通讯

    STC12C5A60S2进行两个模块的无线通讯
    发表于 11-06 19:35

    SLH89F5162与STC12C5A60S2小对比

    和外部晶体振荡电路等模块。这方面是大同小异的。两款单片机的编程模式的不同STC12C5A60S2支持ISP在线编程,用户在自己的目标系统上,
    发表于 12-10 11:18

    kile 怎样添加stc12c5a60s2的头文件?使得可以编程stc12c5a60s2

    kile 怎样添加stc12c5a60s2的头文件?使得可以编程stc12c5a60s2
    发表于 03-28 11:29

    谁用过STC12C5A60S2的?

    大家给STC12C5A60S2芯片烧程序都是怎么烧的求大神指点我用USB转TTL模块STC12C5A60S2烧程序,一直提示给MCU上电换一块芯片STC12C2052AD和
    发表于 07-05 20:07

    STC12C2052AD与STC12C5A60S2的区别?

    STC12C2052AD与STC12C5A60S2的区别??
    发表于 05-31 13:14

    STC12C5A60S2示波器

    基于STC12C5A60S2的示波器,用到了单片机内部的2个定时器,内部ADC模块。通过TFT屏显示波形和频率。源码公开大家可以在我的基础上自由发挥。单片机IO口模拟SPI通信引脚可自己定义,信号
    发表于 06-14 20:40

    STC12C5A60S2与红外测温模块MLX90614

    STC12C5A60S2与红外测温模块MLX90614用什么方式通信比较好
    发表于 04-16 18:52

    基于STC12C5A60S2运用PWM技术和PID算法的数控电源

    的电压值。  1 总体设计  该数控电源系统总体结构如图1所示,主要由STC12C5A60S2单片机最小系统、变压整流滤波模块、BUCK电路、电压反馈电路、显示电路、按键控制电路等组成
    发表于 09-30 16:26

    基于STC12C5A60S2的智能插座设计方案

    、体积较小的元器件.插座的系统框图如图l所示.系统接于220V的交流电路,经过电压的转换电路降为5V,同时向DS1302、STC12C5A60S2等芯片提供电能.DS1302为
    发表于 10-18 16:36

    基于STC12C5A60S2与PID算法的数控电源设计

    的电压值。  1 总体设计  该数控电源系统总体结构如图1所示,主要由STC12C5A60S2单片机最小系统、变压整流滤波模块、BUCK电路、电压反馈电路、显示电路、按键控制电路等组成
    发表于 10-18 16:55

    stc12c5a60s2

    stc12c5a60s2来控制两电机的小车,前后左右,要什么硬件电路,和程序,谢谢各位的解答!
    发表于 11-02 23:54

    【单片机】STC12C5A60S2系列单片机简介

    1.1STC12C5A60S2系列单片机简介STC12C5A60S2/AD/PWM系列单片机是STC生产的单时钟/机器周期(1T)的单片机,是高速/低功耗/超强抗干扰的新一代8051单
    发表于 08-03 15:54

    STC12C5A60S2最小系统相关资料推荐

    STC12C5A60S2最小系统
    发表于 11-25 08:58

    STC12C5A60S2的相关资料分享

    为备2021年大学生电子设计比赛整理单片机通用配置(基于STC12C5A60S2STC12C5A60S2自主适应时钟延时函数外部中断初始化配置STC12C5A60S2定时器配置
    发表于 02-18 07:25