Board logo

标题: 求助:位定义 [打印本页]

作者: aMonster    时间: 2005-12-20 11:13     标题: 求助:位定义

我使用JL8,想在Z_RAM中定义若干个变量,可以进行微操作。仿照自带的定义方式,在主程序中给变量赋值,make以后就提示fixup overflow in main,to _nflag0 type 1,at offset 0x6 。请达人帮忙看下是哪里出了问题,或者有什么更好的解决方法。

程序如下:

/*** nflag0 - 0x0060 ***/
typedef union {
  byte Byte;
  struct {
    byte standbyf      :1;
    byte alterf0       :1;
    byte fasttestf     :1;
    byte nflag03       :1;
    byte nflag04       :1;
    byte nflag05       :1;
    byte economicf     :1;
    byte disp2sf       :1;
  } Bits;
  struct {
    byte grpnflag0 :8;
  } MergedBits;
} nflag0STR;
extern volatile nflag0STR _nflag0 @0x0060;
#define nflag0    _nflag0.Byte
#define standbyf  _nflag0.Bits.standbyf
#define alterf0   _nflag0.Bits.alterf0
#define fasttestf _nflag0.Bits.fasttestf
#define nflag03   _nflag0.Bits.nflag03
#define nflag04   _nflag0.Bits.nflag04
#define nflag05   _nflag0.Bits.nflag05
#define economicf _nflag0.Bits.economicf
#define disp2sf   _nflag0.Bits.disp2sf
#define nflag0_nflag0 _nflag0.MergedBits.grpnflag0

 

main中:

nflag0 = 1;


作者: sadasd    时间: 2005-12-20 21:25

ft,怎么没有换行
-__-
作者: sadasd    时间: 2005-12-20 21:27

将这句extern volatile nflag0STR _nflag0 0x0060;

换成定义一个变量,不管它的地址

#pragma DATA_SEG __SHORT_SEG MY_ZEROPAGE

nflag0STR _nflag0;

#define nflag0 _nflag0.Byte

#define standbyf _nflag0.Bits.standbyf

#define alterf0 _nflag0.Bits.alterf0

#define fasttestf _nflag0.Bits.fasttestf

#define nflag03 _nflag0.Bits.nflag03

#define nflag04 _nflag0.Bits.nflag04

#define nflag05 _nflag0.Bits.nflag05

#define economicf _nflag0.Bits.economicf

#define disp2sf _nflag0.Bits.disp2sf

#define nflag0_nflag0 _nflag0.MergedBits.grpnflag0

[此贴子已经被作者于2005-12-20 21:27:27编辑过]


作者: aMonster    时间: 2005-12-21 07:56

多谢sadasd,我要再仔细看看你的程序^_^
作者: aMonster    时间: 2005-12-21 09:00

能否解释一下#pragma后面的定义的含义?谢谢!
作者: seuafu2005    时间: 2005-12-21 10:01

pragma是预处理的引导语句,就和#define,#include等类似性质的。
具体的用法compiler_HC08.pdf的manual
作者: seuafu2005    时间: 2005-12-21 10:05

manual在codewarrior的安装目录中的help目录里面可以找到
也可以到这个网址下载http://www.metrowerks.com/MW/Support/dev_resources/Documentation_for_HC08_3.0.htm
作者: WOWO_1185    时间: 2007-7-18 10:26

如果我想定义位变量(SETB) , 可否像定义char i,int j一样bit SETB;
作者: strongchen    时间: 2007-7-18 16:36

汇编的位定义可以采用宏来定义。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0