单片机c语言调试方法,STC12C5A60S2单片机c语言程序代码调试例程.doc

本文档详细介绍了如何使用STC12C5A60S2单片机通过C语言编程实现可编程时钟输出,包括CLKOUT0/T0/P3.4、CLKOUT1/T1/P3.5和CLKOUT2/P1.0的配置与调试,涵盖了辅助寄存器AUXR、WAKE_CLKO和BRT寄存器的设置。适合初学者理解并实践单片机高级功能。
摘要由CSDN通过智能技术生成

STC12C5A60S2单片机c语言程序代码调试例程

STC12C5A60S2单片机c语言程序代码调试例程

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

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

//#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系统时钟模块

//

//

// 说明: S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值