刷新 我要回复 我要发帖 此贴已结(0) [ 19 回复 / 709 查看 ]
楼主:

几句简单的C语言代码

下面代码在51、AVR、ARM中执行都没问题,但在HT46R065、防真软件HT_IDE3000中就有点问题,小弟第一次使用合泰的芯片,望各位兄弟多多指教!

if(HW_I>31)
{
   
      HW_I=0;
      switch(HW_KEY)
      {
      case 0X0E:                                     //KEY5
                     KEY_DATA=5;                 //调试结果  KEY_DATA=5正确
                     break;
     
      case 0X5E:                                      //KEY2
                     KEY_DATA=2;                  //调试结果  KEY_DATA=2正确
                     break;  

      case 0X9E:                                      //KEY6
                     KEY_DATA=6;                  //调试结果  KEY_DATA=0X9E错误
                     break;

      case 0XCC:                                      //KEY3
                     KEY_DATA=3;                   //调试结果  KEY_DATA=0XCC错误
                     break;
   
      case 0XCE:                                      //KEY4
                     KEY_DATA=4;                  //调试结果  KEY_DATA=0XCE错误
                     break;
               
      case 0XDE:                                      //KEY1
                     KEY_DATA=1;                   //调试结果  KEY_DATA=0XDE错误
                     break;
   
      default:                                           //调试
                     KEY_DATA=HW_KEY;
                     break;
       }
}

初步怀疑是HT46R065的RAM才96字节,相应的指针过短和合泰的IDE3000太弱智!
2楼:
UP!
3楼:
问题已解决,case 后面的常量不超过96就程序就没问题,但是不知道原因!
还望知道的兄弟指点一下迷精!
4楼:
还有这种问题,是不是你定义的变量的数据类型不对
落叶很美
5楼:
这种问题应该就跟定义的数据类型有关,可为什么96分界,就不解了
6楼:
应该就是LS所说的问题
7楼:
还有这种问题?
8楼:
这跟没个人的编程习惯有关系
9楼:
数据类型定义不对,有时会导致很多问题
落叶很美
10楼:
感觉也不是数据类型的问题,96这个数太小了
11楼:
确实是很简单的C语言代码
12楼:
在其它芯片执行没问题,在这款芯片执行有问题?那应该不是语法错误,或者数据类型问题了
13楼:
就是一个CASE语句
14楼:
这个原因却是有点不好理解
15楼:
如果纯粹按照C语言语法,应该不会有这样的问题
16楼:
RAM才96字节,不太可能
17楼:
是不太可能,这种单片机还能用
18楼:
一般单片机至少应该是K级的
19楼:
没有人解答到这个问题吗?有些奇怪!
20楼:
指针过短?程序里好像没用到指针吧
落叶很美