C52单片机输出1K频率的程序(C语言)最好可以有如何计算频率的方法

2025-04-13 05:07:11
推荐回答(1个)
回答1:

#include
//设CPU是时钟12MHz的8051系列
void SetupTimer0()
{
    TMOD &= 0XF0; //仅保留T1信息
    TMOD |= 0X02; //设置T0: 定时功能,方式2,自动重载8位定时器/计数器
    TH0 = 256-250;//每个周期为1us, 250us=0.25ms, 定时每0.25ms中断一次
    TL0 = 256-250;//自动重装,TL0, TH0均置256-250
    TR0 = 1;      //开启定时器
    ET0 = 1;      //定时器0中断打开
}
 
void Timer0_ISR() interrupt 1 //中断服务程序
{
    static data unsigned char us250;
    static data unsigned char p1;
    if (++us250>=2) 
    {
us250=0;       //每0.25msx2=0.5ms中断一次。
p1^=1; P1=p1;  //p1完成翻转后输出到P1,两次翻转完成一个周期输出
    }
}
 
void main()
{
    data unsigned char p1,p2;
    SetupTimer0();
    EA = 1;               //全局中断打开
    while(1);   //死循环,中断程序完成波形输出
}