这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 请帮帮忙查看下 78F0513D C语言编译错误

共6条 1/1 1 跳转至

请帮帮忙查看下 78F0513D C语言编译错误

助工
2009-07-14 11:29:05     打赏

我最近在调这个模块很久了,一直有错,请大家帮看看。我是先用KEIL C调好的,然后按78F0513D 规格作了相应的修改,但是有几个错误的地方我想不明白:

首先看下51仿真成功的贴图:






以上是用51来仿真的,然后源程序作了一定改编后用PM编译,错误如下:

 
 




红体字的错误部分是针对语句: bit n;

警告部分是针对语句:    
   datas[0] = tmp/10000;
    datas[1] = tmp%10000/1000;
    datas[2] = tmp%1000/100;
    datas[3] = tmp%100/10;
    datas[4] = tmp%10;
 
提问:说明手册中明明提到也支持位变量啊?为什么有错?我定义的是局部变量。

还有,这里的算术运算为什么会有警告,难道不是像KEIL中的整数间相除以及取余么?




关键词: 帮帮忙     看下     78F0513D     语言     编译     错误    

助工
2009-07-16 10:59:35     打赏
2楼

CC78K0中的位变量必须是全局变量。

bit n必须在main之前定义。


助工
2009-07-21 17:09:37     打赏
3楼

还有个问题,我定义的是采用外部时钟8MHZ,这样定义对不对?
    IMS = 0xc8;     
     IXS = 0x0c;     
     OSCCTL = 0X40;    
     PCC = 0x00;
     RCM = 0x83;       
     MOC = 0X00;
     MCM = 0X07;
     PM1=0x00;
    PM0=0xFF;      
    PM4=0xFC; 

但我定义的延迟却出现了问题
 void delayus(uint a)     
 {
    while(a--);
 }
SM+中反汇编代码是
PUSH   HL
MOVW   HL,AX
DECW   HL
MOVW   AX,HL
INCW   AX
OR   A,X
BNZ $_delayus+0x2
POP HL
RET
我的理解应该是延迟5US,请问是否正确(因为在我对18B20的延迟中遇到了问题,所以特来请教下)


菜鸟
2009-07-22 16:44:15     打赏
4楼
to:
还有,这里的算术运算为什么会有警告,难道不是像KEIL中的整数间相除以及取余么?

是数据类型不匹配的警告,unsigned int---〉unsigned char,只取低8位给datas[i],
高8位数据会被截去。
datas[0] = (unsigned char) (tmp/10000);//强制类型转换

助工
2009-07-22 17:49:43     打赏
5楼
恩,我尝试了您的指导方法,果然没警告了,谢谢您啊.
对了,能否指导下我说的延迟问题呢?其实我之前就把程序烧到单片机里了,LCD能显示相应的字符,可是没显示温度,我一直在调试延迟部分的程序,但C写的延迟我一直调都没反应.也曾经尝试把汇编嵌套进去,是按照ouravr中NEC单片机论坛里别人介绍的经验介绍的,可是却编译不成功,就连勾上嵌套汇编相应的选项也不行.

比如C语句  i++    :
我用SM+看其反汇编代码,为INCW  HL,占4个时钟周期,即0.5US,但用SM+中的TIMING来设断点看时间,执行 i++  是用了2US. 请问到底是以哪个为标准呢?

助工
2009-07-26 20:54:30     打赏
6楼

呵呵,偶自己来回复下,偶的问题已经解决了


共6条 1/1 1 跳转至

回复

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