打印

我是个新手,请教下各位写软件的高手个问题

[复制链接]
1548|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
allayhbb|  楼主 | 2010-6-28 10:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
各位大侠:
      小弟请教一下:我看到人家程序中定义了一段如下:
      定义寄存器的位跟寄存器。  我以前学过C,但是记得char 字符型是8BIT的,
有这种定义吗?--->char b0:1;   这种定义是不是表示1bit.  请教各位。谢谢!

      struct bit_def {
char b0:1;
char b1:1;
char b2:1;
char b3:1;
char b4:1;
char b5:1;
char b6:1;
char b7:1;
};
union byte_def{
struct bit_def bit;
char byte;
};
/*------------------------------------------------------
  Processor mode register0
------------------------------------------------------*/
union byte_def pm0_addr;
#define  pm0   pm0_addr.byte
#define  pm03  pm0_addr.bit.b3    /* Software reset bit */

相关帖子

沙发
allayhbb|  楼主 | 2010-6-28 10:19 | 只看该作者
再请教下:typedef unsigned char   TByte;      /*  8 Bit */
#define __LSB_FIRST__
#if defined __MSB_FIRST__
#define mLow(w)   (*(((TByte *) &(w))+1))--------表示什么意思,谢谢
#define mHigh(w)  (*(((TByte *) &(w))+0))
#define mLL(l)    (*(((TByte *) &(l))+3))
#define mLH(l)    (*(((TByte *) &(l))+2))
#define mHL(l)    (*(((TByte *) &(l))+1))
#define mHH(l)    (*(((TByte *) &(l))+0))
#else
#define mLow(w)   (*(((TByte *) &(w))+0))
#define mHigh(w)  (*(((TByte *) &(w))+1))
#define mLL(l)    (*(((TByte *) &(l))+0))
#define mLH(l)    (*(((TByte *) &(l))+1))
#define mHL(l)    (*(((TByte *) &(l))+2))
#define mHH(l)    (*(((TByte *) &(l))+3))
#endif

使用特权

评论回复
板凳
原野之狼| | 2010-6-28 11:16 | 只看该作者
回答第一贴:
这是位域的描述 属于标准C的内容 虽然谭浩强的教材上没提到这点 但是这种用法还是挺多的 可以翻翻权威的C书籍补习一下

回答第二贴:
用宏定义来获取变量(半字、字)的高低字节 这段代码考虑到了大小端的问题

使用特权

评论回复
地板
allayhbb|  楼主 | 2010-6-29 12:59 | 只看该作者
有没有这方方面的书啊,谢谢!

使用特权

评论回复
5
allayhbb|  楼主 | 2010-6-29 13:03 | 只看该作者
能不能推荐下那本C书上介绍的啊,谢谢!

使用特权

评论回复
6
shanweichao| | 2010-6-29 13:58 | 只看该作者
《C语言设计现代方法》  有电子版的

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

99

主题

305

帖子

0

粉丝