查看: 511|回复: 4
打印 上一主题 下一主题

keil简单编程问题

[复制链接] qrcode

5

主题

7

帖子

21

积分

新手上路

Rank: 1

积分
21
楼主
跳转到指定楼层
发表于 2015-12-31 02:46 AM | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
下面是一个非常简单的两个数比较大小的C51程序:
#include
#include
main()
{char a,A,m;
SCON=0x52;
TMOD=0x20;
TCON=0x69;
TH1=0x0F3;
scanf("%c %c",&a,&A);
if(a>A) m="a";
else m="A";
printf("\n max=%c \n",m);
}
程序的编译已经通过, 但是当执行debug/start debug session的时候,出现下面错误:
Running with Code Size Limit: 2K
Load "C:\\Keil\\practice3\\shiyan"
*** Restricted Version with 2048 Byte Code Size Limit
*** Currently used: 2119 Bytes (103%)
*** error 120: code size limit exceeded
我选的是AT89C51的内核, 而且就上面的几条程序, 怎么会超过代码限度呢?
我目前还是新手,还请网上的各位大虾帮我解决一下!万分感谢!
回复

使用道具 举报

0

主题

2

帖子

6

积分

新手上路

Rank: 1

积分
6
沙发
发表于 2015-1-4 10:31 AM | 只看该作者
首先,你这是个2K限制版本

其次,要使用scanf和printf要想应用到单片机,必须对其进行改造,这不是PC机,哪里有操作系统,哪里有显示器!

再次,你的代码超过2k的原因应该是你使用了scanf和printf,这样编译器就必须加载标准C库文件中的一些代码。

最后还要强调一点,单片机的程序是没有出口的,即主程序中一定要有死循环,使程序不推出

强烈建议楼主仔细阅读一本C51的书籍,不要单纯的把它理解为标准C(尤其是课本上学到的标准C)。
回复 支持 反对

使用道具 举报

74

主题

466

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
板凳
发表于 2015-1-7 01:42 AM | 只看该作者
用了scanf和printf会引入错误                                                                                                                                                                       
回复 支持 反对

使用道具 举报

74

主题

466

帖子

1012

积分

金牌会员

Rank: 6Rank: 6

积分
1012
地板
发表于 2015-1-7 03:53 AM | 只看该作者
同意二楼观点。                                                                                                                                                                       
回复 支持 反对

使用道具 举报

0

主题

21

帖子

46

积分

新手上路

Rank: 1

积分
46
5#
发表于 2015-1-7 05:13 AM | 只看该作者
二楼是高手。                                                                                                                                                                       
回复 支持 反对

使用道具 举报

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

本版积分规则

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