智能车制作

标题: K60如何定义位变量 [打印本页]

作者: 恋May    时间: 2014-4-2 15:08
标题: K60如何定义位变量



如题,K60如何定义一个可以按位寻址的片内存储区。通俗的说就是位变量?求教= =。




[attach]57870[/attach]

作者: 释是圣杰    时间: 2014-4-2 16:17
具体定义应该是没办法。。除非汇编,具体汇编可不可以我也不知道。。不过可以定义一个8位无符号,采用位域的结构定义来直接访问。
//位域
#define GET_BITFIELD(addr) (volatile bit_field *)(&addr)//返回的是指针
typedef struct bit_S
{
        unsigned char bit0:1;
        unsigned char bit1:1;
        unsigned char bit2:1;
        unsigned char bit3:1;
        unsigned char bit4:1;
        unsigned char bit5:1;
        unsigned char bit6:1;
        unsigned char bit7:1;
}bit_field;

void  write_command(unsigned char  c)
{
    cs=0;
    dcx=0;
    sdi=(GET_BITFIELD(c))->bit7;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit6;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit5;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit4;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit3;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit2;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit1;scl=0;scl=1;
    sdi=(GET_BITFIELD(c))->bit0;scl=0;scl=1;
    cs=1;      
}你看看把。反正我用的没问题。当然也可以移位与上0x01或者0x80神马的方法也可以。具体哪个方法时间短我也没测过

作者: 恋May    时间: 2014-4-2 17:41
释是圣杰 发表于 2014-4-2 16:17
具体定义应该是没办法。。除非汇编,具体汇编可不可以我也不知道。。不过可以定义一个8位无符号,采用位域的 ...

好的,非常感谢,为什么51都可以直接 bdata   而K60 却不能直接定义么= =。

作者: 释是圣杰    时间: 2014-4-2 19:35
恋May 发表于 2014-4-2 17:41
好的,非常感谢,为什么51都可以直接 bdata   而K60 却不能直接定义么= =。

因为51低端、、、见过51汇编。。。但是没见过K60汇编。。。

作者: Okabe    时间: 2015-2-24 11:11
正在考虑k60位变量的问题,搜到这个贴,获益良多,感谢2楼贡献




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2