这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » Progam Counter is odd

共6条 1/1 1 跳转至

Progam Counter is odd

菜鸟
2008-07-25 11:07:37     打赏

请教两个问题:
1. 程序有时候编译能通过,运行(reset go) 时会弹出出现Progam counter is odd的错误,请问
    是怎么回事,如何消除这个错误。
2. 还有一个是HEw里面用emum 的问题:
    例如定义如下:
    enum T_ANGLES 
    {
        DEG350 = 63715,
        DEG10 = 1820,
        DEG50 = 9102,
        DEG70 = 12743,
        DEG110 = 20024,
        DEG130 = 23665,
        DEG170 = 30947,
        DEG190 = 34588,
        DEG230 = 41870,
        DEG250 = 45511,
        DEG290 = 52793,
        DEG310 = 56434,
        DEG22 = 4005,
        DEG90 = 16384,
        DEG285 = 51883
    };
    有的值超过了Int 的界限,会报错,请问有什么好的解决方案。一定要用
    #define DEG350   63715
    吗?




关键词: Progam     Counter    

菜鸟
2008-07-25 11:26:03     打赏
2楼

关于第二个问题,我用R8C/1B的芯片做了测试,没有问题,对于Int型变量,最大的范围是65535,应该没有超出范围,在编译的过程中不会出现错误,所以请问是在运行的时候报错的吗?
关于第一个问题,我没有实际测试,也不好说,能不能把程序上传一下呢,当然,顺便告诉我你用的是哪一款芯片?以及你使用的是哪款调试器


菜鸟
2008-07-26 16:41:06     打赏
3楼
第二个问题,编译错误是:
Enumeration value is out of "int" range
 我试过了,数值超过32767就会报错。。。

菜鸟
2008-07-26 17:18:27     打赏
4楼
枚举中,"constant-expression" 必须是int类型,可以为负数。
int即signed int,并非unsigned int,请注意。

所以不会超过32767。

菜鸟
2008-07-26 17:27:03     打赏
5楼
第一个问题没遇到过,只能Google一下。
有两条信息相关。查查PC和SP指针吧。尤其是程序中用汇编改过什么的话。

Program counter is odd Since the program counter holds an odd value, execution of
the program is not possible.


If a PC or SP value is illegally set (e.g., an odd value) and the user program is
executed, an error message such as ‘Program counter is odd’ may be displayed
twice.

菜鸟
2008-07-28 21:45:22     打赏
6楼
我也是新手,只提供参考意见。
program Counter is odd
提示的是程序段的计数是一个奇数。
这个问题应该是 地址对齐的问题。
如果是使用16位机,因为使用char型占1byte,就存在奇偶对齐问题。
我以前看程序(sect30.inc)的时候有看到过
.section program allign
allign说明要进行偶对齐。

共6条 1/1 1 跳转至

回复

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