分享

C8051F(330)精确延时程序(24.5M)

 共同成长888 2016-05-28
        //**********************************************

// 功能:C8051F(330)精确延时 24.5M

//**********************************************
#include
#include
//----------------------------------------------
void Reset_Sources_Init()
{
    RSTSRC    = 0x04;
}

void PCA_Init()
{
    PCA0MD    &= ~0x40;
    PCA0MD    = 0x00;
}

void Port_IO_Init()
{
    P2MDOUT   = 0x01;
    XBR1      = 0x40;
}

void Oscillator_Init()
{
    OSCICN    = 0x83;
}

void Init_Device(void)
{
    Reset_Sources_Init();
    PCA_Init();
    Port_IO_Init();
    Oscillator_Init();
}

//----------------------------
// 微秒级精确延时
// 仿真:(24.5M)
// delay_us(1);   //1.72us
// delay_us(10);  //10.89us
// delay_us(100); //102.74us
//----------------------------
void delay_us(unsigned char k)
{
    while(k--)
    {
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
        _nop_();_nop_();_nop_();_nop_();
    }
}
//----------------------------------------------
// 毫秒级精确延时
// 仿真:(24.5M)
// delay_ms(1);   //1001.75us
// delay_ms(10);  //10.008ms
// delay_ms(100); //老机太慢出不来鸟~自己测吧:)
//----------------------------------------------
void delay_1ms()
{
    unsigned int j ;
    for(j=3060;j>0;j--);
}
void delay_ms(unsigned int i)
{
    for(;i>0;i--)delay_1ms();
}
//------------------------------------------
void main()
{
    Init_Device();
    while(1)
    {
        delay_us(1);
        delay_us(10);
        delay_us(100);
        delay_ms(1);
        delay_ms(10);
        delay_ms(100);
        P2^=0x01;
    }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多