增强型单片机STC12C5A60S2输出各种频率方波信号

【例7-3】 设时钟频率Fosc=18.432MHz,设计程序,从P1.0/CLKOUT2引脚输出频率为124.540KHz的时钟;从T0(P3.4)引脚输出频率为125KHz的时钟;从T1(P3.5)引脚输出频率为38.4KHz的时钟。
解:使用STC12C5A60S2的可编程时钟输出功能完成所需要求。在下面的程序设计中(在此只给出C语言程序),T0、T1和独立波特率发生器BRT均工作在1T模式。
程序编制如下:
#include "stc12c5a.h"        //包含STC12C5A60S2的寄存器定义头文件
void main(void)
{
    TMOD = 0x22;               //T0和T1工作在方式2,8位自动重装计数器
    AUXR = AUXR | 0x80;      //T0工作在1T模式
    AUXR = AUXR | 0x40;      //T1工作在1T模式
    AUXR = AUXR | 0x04;      //独立波特率发生器工作在1T模式
//设置BRT的8位自动重装计数初值,输出时钟频率124.540KHz
    BRT = (256-74); 
//设置T0的8位自动重装计数初值,输出频率18432000/2/74 = 124540.54约为125KHz
    TH0 = (256-74);
//设置T1的8位自动重装计数初值,输出时钟频率18432000/2/240 = 38400Hz
    TH1 = (256-240); 
    WAKE_CLKO=WAKE_CLKO|0x07; //允许T0,T1,独立波特率发生器输出时钟
    TR0 = 1;      //启动T0开始计数,对系统时钟进行分频输出
    TR1 = 1;      //启动T1开始计数,对系统时钟进行分频输出
    AUXR =AUXR|0x10;  //启动BRT工作,对系统时钟进行分频输出
//至此时钟已经输出,用户可以通过示波器观看到输出的时钟频率
    while(1);
}


公式:fclk=sysclk/(256-BRT)/2 

你可能感兴趣的:(增强型单片机STC12C5A60S2输出各种频率方波信号)