应广单片机MINI-C下的RAM空间复用方法-类联合体结构

         对于OTP单片机来说,设计上一般都是遵循够用,经济为原则,一般配备的RAM空间比较小。为了能够尽量节省空间,在运算不交叉的状态下,全局变量是可以复用,在不改变变量名称的状态下,mini-c支持类似联合体的方法去复用内存空间。

      不多说上代码。


DWORD    mul_t4;/*定义名字*/
WORD    mul_x2;
WORD    mul_y2;

void    Word_Mul_Word (void)
{    //    mul_t4[D]    =    mul_x2[W] * mul_y2[W]
    mul_t4$3    =    0;
    mul_t4$2    =    0;

    BYTE    cnt;
    cnt    =    16;

    do
    {
        mul_x2    >>=    1;
        if (CF)
        {
            mul_t4    +=    (mul_y2 << 16);
        }
        mul_t4    >>>=    1;
    } while (--cnt);
}

DWORD    & div_src4=mul_t4;/*div_src4和mul_t4使用相同的地址空间,但是可以有各种的名称*/
WORD    & div_val2=mul_x2;
WORD    & div_res2=mul_y2;

void    DWord_Div_Word (void)
{    //    div_src4[D] / div_val2[W]    =    div_src4[D] * div_val2[W] + div_res2[W]
    BYTE    div_cnt, div_tmp;
    div_cnt        =    0;
    div_res2    =    0;

    do
    {
        div_src4    <<=        1;
        div_res2    <<<=    1;
        div_tmp        <<<=    1;
        div_cnt++;
        A    =    (div_res2 - div_val2) >> 8;

        if (div_tmp.0 || ! CF)
        {
            div_res2$1    =    A;
            div_res2$0    -=    div_val2$0;
            div_src4.0    =    1;
        }
    } while (! div_cnt.5);
}
/*两个函数使用了不同的变量名字,但是内存使用了同一个空间*/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值