找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4640|回复: 6
收起左侧

keil定义和声明的问题

[复制链接]
ID:74985 发表于 2015-3-21 03:14 | 显示全部楼层 |阅读模式
今天调试程序的时候发现写完程序keil直接编译不动了,后来才找到原因:还是定义和声明的问题。
我是这样定义的
code uchar *fangjian="房间";
code uchar *danyuan="单元";
code uchar *loudong="楼栋";
code uchar *help="有火情,请速来支援";
我是这样声明的:
extern code uchar *fangjian="房间";
extern code uchar *danyuan="单元";
extern code uchar *loudong="楼栋";
extern  code uchar *help="有火情,请速来支援";
这样编译器直接无法编译,后来我有改成这样声明
extern code uchar *fangjian;
        extern code uchar *danyuan;
        extern code uchar *loudong;
        extern code uchar *help;
就可以了


回复

使用道具 举报

ID:74985 发表于 2015-3-21 03:15 | 显示全部楼层
今天写程序犯了一个低级的错误,我在定义一个一个变量时,没对它赋初值。我在后面直接用它,以至于程序不安我的想法走。
比如: uchar num;
            num++;
我原以为num的初值为0;直接对它进行运算,其实不是这样,num的初值应该是一个随机的。所以,以后再定义变量的时候一定要对它赋初值
回复

使用道具 举报

ID:74985 发表于 2015-3-21 03:15 | 显示全部楼层
今天调程序犯了一个低级错误,以至于程序一直不能正常运行。错误的原因如下:
我定义了一个全局变量,uchar型,但是我声明的时候却是把它声明成uint型的了,所以程序一直跑偏。

提醒:在使用EEPROM之前最好先对eeprom清0.
回复

使用道具 举报

ID:74985 发表于 2015-3-21 03:15 | 显示全部楼层
今天又犯了一个低级错误。调试的时候在写函数的参数时,只把变量名写上了,没有写函数的类型,很操蛋。一直没有调出来,下次一定要注意:在定义函数的时候,如果函数有参数,那一定要定义好参数的类型,比如:int,char等
回复

使用道具 举报

ID:74985 发表于 2015-3-21 03:16 | 显示全部楼层
昨天调试eeprom一直没调好,今天早上终于调好了,原来每次往eeprom里面写数据的话都要先写入一个写使能指令,而我原来只是认为只要加在写之前加一次写使能就行,以后写的数据都不用再加些使能指令了。其实每次写数据都要加写使能指令。
并且往eeprom里写完数据后必须要延时一段时间才能读出正确的数据。
回复

使用道具 举报

ID:74985 发表于 2015-3-21 03:16 | 显示全部楼层
今天调了一个程序,发现程序一直不按我的思路走,仔细一看,原来是我原来定义了一个函数,init_spi();这个函数我原来写过,但是现在把它删除了,但是我在main函数里还在调用它,但是编译器还没报错,所以程序就一直走不动,就停留在init_spi()这个函数上了
回复

使用道具 举报

ID:43559 发表于 2015-3-21 08:12 | 显示全部楼层
我遇到的问题是这样的:在Keil里选择Large模式,编译是通过了。
可是程序不好使了。生成的HEX文件烧录进单片机也不干活了。
又试了下选择Compact模式编译,一样不干活。
只有Small模式的hex文件好用。但可是有时在Small模式就是编译不过。有如下提示

ERROR L107: ADDRESS SPACE OVERFLOW
SPACE: DATA
SEGMENT: ?DT?_WRITEONECHAR?DS18B20
LENGTH: 0002H

在Large模式和Compact模式编译通过,但程序不运行。郁闷中、、、、、、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表