这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请教在C中字节位的用法

共13条 1/2 1 2 跳转至

请教在C中字节位的用法

菜鸟
2008-10-16 11:09:08     打赏

我用的是R8C2G,向下面这种位的定义方法我可以直接在C程序中用cm10 = 1;这样置位吗?
如果不行那怎么用?盼解答
union byte_def {
 struct {
  char b0:1;
  char b1:1;
  char b2:1;
  char b3:1;
  char b4:1;
  char b5:1;
  char b6:1;
  char b7:1;
 } bit;
 char byte;
};
union  byte_def cm1_addr;
#define  cm1   cm1_addr.byte

#define  cm10  cm1_addr.bit.b0   
#define  cm12  cm1_addr.bit.b2  
#define  cm14  cm1_addr.bit.b4   
#define  cm16  cm1_addr.bit.b6  
#define  cm17  cm1_addr.bit.b7 




关键词: 请教     字节     用法    

高工
2008-10-16 16:33:51     打赏
2楼
看样子因该是支持位操作的,看看手册上别人的用法吧

菜鸟
2008-10-17 16:23:31     打赏
3楼

当然可以使用了,只要在相应的C文件中包含头文件即可,使用#include "sfr_r82g.h"


菜鸟
2008-10-20 09:25:48     打赏
4楼

我置1和清0的时候编译没有错,但我置2的时候编译时也没有错啊


菜鸟
2008-10-20 11:41:41     打赏
5楼
个人观点:编译没错是因为不违背C语法,C编译器一般都比较灵活。
另外,写2和写0是一样的,只有左右一位有效。请参考汇编信息。

cm10 = 0;   // 0b00
编译为:BCLR      0,0007H

cm10 = 1;   // 0b01
编译为:BSET      0,0007H

cm10 = 2;   // 0b10
编译为:BCLR      0,0007H

cm10 = 3;   // 0b11
编译为:BSET      0,0007H

菜鸟
2008-10-20 13:52:54     打赏
6楼

谢谢了!还有我在R8C2G的硬件手册里看到关于IO口的配置,有关P1.5,P1.7,P3.6的管脚当其中一个被配置成INT1时必须有int1en = 1;但是其他的两个管脚要配置成普通输入输出管脚必须有int1en = 0;是不是配置任何一个成INT1,其他两个就不能用于普通输入输出管脚了?不应该啊


菜鸟
2008-10-20 14:34:10     打赏
7楼
不是这样的,请您再查一查相关引脚配置表。

举个例子,当 int1sel = 1 时,p3_6为INT1引脚
此时p1_5和P1_7引脚的功能,根本和 int1en 位无关。

菜鸟
2008-10-22 08:46:32     打赏
8楼

我水平有限没找到,就听你的吧!再问个问题,我在配置R8C2G的主时钟频率位内部4M时有几个寄存器HRA1,HRA2,HRA4,HRA6怎么配置,手册上只有说明要配置但没说怎么配啊! 最好有用c配置系统时钟为4M的例子!


助工
2008-10-22 09:17:32     打赏
9楼
瑞萨不是有IOWIZARD这个辅助软件,可以帮助用户生成这些定义功能的C代码的吗?

你怎么没找代理要呢?

菜鸟
2008-10-22 13:16:20     打赏
10楼

我找了代理,问了几个问题几天了都没答复,也没听说有IOWIZARD辅助软件


共13条 1/2 1 2 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]