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]得不到这俩个变量的值。急!!!,请各位高手指点一二,不胜感激!
多谢楼上,主程序没完,省略没写,根key[2]有关。
你的函数没有问题
整个函数的意思就相当于
Key[0]=KeyZhi;
Key[1]=KeyCnt;
看有没有别的原因!
将主程序中的key[0]=GetKeyzhi(&key[1])函数去掉,换成Key[0]=KeyZhi;
Key[1]=KeyCnt;也没有结果。头大了!!
测试了一下你的程序(做了适当修改,模拟仿真),没有任何问题。可能是你的其它子程序或中断程序的问题,仔细检查一下。
#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;
}