【求助】变量传递问题。

yyjasen   2006-4-8 19:31 楼主
int main ()

{
unsigned char key[2];

WDTCTL=WDTPW+WDTHOLD;
InitKey();
TimerAInit();
UartInit();
_EINT();
key[0]=GetKeyzhi(&key[1]);

unsigned char GetKeyzhi(unsigned char *key_cnt)
{
unsigned char q0;
q0=KeyZhi;
KeyZhi=0;//清除 KeyZhi
*key_cnt=KeyCnt;
KeyCnt=0;//清除 KeyCnt

return q0;
}

其中KeyZhi和KeyCnt 为全局变量,在中断程序中由程序赋值,程序运行key[2]得不到这俩个变量的值。急!!!,请各位高手指点一二,不胜感激!

回复评论 (5)

贴的程序对吗?main函数好象少了个“}”
点赞  2006-4-9 00:24
多谢楼上,主程序没完,省略没写,根key[2]有关。
点赞  2006-4-9 09:04
你的函数没有问题
整个函数的意思就相当于
Key[0]=KeyZhi;
Key[1]=KeyCnt;
看有没有别的原因!
点赞  2006-4-9 09:49
将主程序中的key[0]=GetKeyzhi(&key[1])函数去掉,换成Key[0]=KeyZhi;
Key[1]=KeyCnt;也没有结果。头大了!!
点赞  2006-4-9 19:03
测试了一下你的程序(做了适当修改,模拟仿真),没有任何问题。可能是你的其它子程序或中断程序的问题,仔细检查一下。

#include <msp430x44x.h>
unsigned char KeyZhi = 0xAA;
unsigned char KeyCnt = 0x55;
unsigned char GetKeyzhi(unsigned char *key_cnt);

/*-------- 主函数 ---------*/
void main(void)
{
unsigned char key[2];

WDTCTL=WDTPW+WDTHOLD;

// InitKey();
// TimerAInit();
// UartInit();
// _EINT();
while (1)
{
key[0]=GetKeyzhi(&key[1]);
}
}

unsigned char GetKeyzhi(unsigned char *key_cnt)
{
unsigned char q0;
q0=KeyZhi;
KeyZhi=0; //清除 KeyZhi
*key_cnt=KeyCnt;
KeyCnt=0; //清除 KeyCnt
return q0;
}
点赞  2006-4-9 22:24
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复