应广单片机乘法周期测量

        在单片机应用过程中,特别是对实时性要求高的应用,需要知道函数,查表,算法等运算所消耗的时间.现针对应广单片机,以乘法为例,现做了一个程序,用于测量乘法所消耗的时间.不多说,上代码.


/****************系统时钟*********************/
//byte    count;
word    usTmrCnt;
//bit     FLAG_NMS;
/**************T16*************************/

WORD    usDat;

BYTE    mul_y1, mul_x1;
WORD    mul_t2;
/*8bit 乘法*/
void    Byte_Mul_Byte (void)
{    //    mul_t2[W]    =    mul_x1[B] * mul_y1[B]
    mul_t2$1    =    0;
    BYTE    cnt;
    cnt    =    8;
    do
    {
        mul_x1    >>=    1;
        if (CF)
        {
            mul_t2    +=    (mul_y1 << 8);
        }
        mul_t2    >>>=    1;
    } while (--cnt);
}

void    TIME16_Init(void)
{
    /* 使用IHRC,1分频,最大计数值是32768*/
    $    T16M    IHRC,/1,BIT15;   
}

/*启动定时器*/
void ResetTmr16(void)
{
    usTmrCnt=0;
    /*设置初始值*/
    STT16 usTmrCnt;
}

/*取得定时器值*/
void GetTmr16Dat(void)
{
    /*取得计数值*/
    LDT16 usTmrCnt;
}


/*相应于main函数*/
void    FPPA0 (void)
{
    /*系统时钟为 IHRC默认为16M,因此,IHRC/2=8M*/
    .ADJUST_IC    SYSCLK=IHRC/2
    /*初始*/
    TIME16_Init();
    usTmrCnt=0;
    while (1)
    {
        /*启动定时器*/
        ResetTmr16();
        /*标准测试*/
        .delay 1000;
        GetTmr16Dat();
        /*设置断点,查看周期数,标准应该是2000 IHRC时钟周期*/
        .delay 1;

        /*启动定时器*/
        ResetTmr16();
        mul_y1=10;
        mul_x1=78;
        Byte_Mul_Byte();
        /*查看结果*/
        usDat=mul_t2;
        GetTmr16Dat();
        /*设置断点,查看周期数,大概190 IHRC时钟周期*/
        .delay 1;

    }
}
 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值