打印

菜鸟请教程序为什么出错,第一次接触C51啊

[复制链接]
4502|23
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
arao|  楼主 | 2010-12-13 16:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg51.h>
sbit sel=p0^0;
void  main()
{
p1=0x01;
while(1)
{
if(sel==1)
{p1=p1>>1;
if(p1==0x00)
p1=0x80;
}
else
{
p1=p1<<1;
if(p1==0x00)
p1=0x01;
}
}
}

-----
TEXT.C(2): error C202: 'p0': undefined identifier
TEXT.C(5): error C202: 'p1': undefined identifier
TEXT.C(8): error C202: 'sel': undefined identifier
TEXT.C(9): error C202: 'p1': undefined identifier
TEXT.C(10): error C202: 'p1': undefined identifier
TEXT.C(11): error C202: 'p1': undefined identifier
TEXT.C(15): error C202: 'p1': undefined identifier
TEXT.C(16): error C202: 'p1': undefined identifier
TEXT.C(17): error C202: 'p1': undefined identifier



---------------------------------------

第一次接触C51,照书上的程序试了一下,居然出错,各位大侠指点一下

相关帖子

沙发
zhangf1021| | 2010-12-13 16:29 | 只看该作者
变量未定义
你这应该是缺头文件

使用特权

评论回复
板凳
arao|  楼主 | 2010-12-13 16:32 | 只看该作者
怎么定义?请教一下 2# zhangf1021

使用特权

评论回复
地板
ayb_ice| | 2010-12-13 16:34 | 只看该作者
p0要大写,或和头文件一致

使用特权

评论回复
5
zhangf1021| | 2010-12-13 16:35 | 只看该作者
你要对应你的51的芯片型号,把对应的头文件加进去就行了
要自己定义就得对数据手册查

使用特权

评论回复
6
arao|  楼主 | 2010-12-13 16:42 | 只看该作者
谢谢大侠啊,p改为大写就好了。这是为什么呢??? 4# ayb_ice

使用特权

评论回复
7
arao|  楼主 | 2010-12-13 16:44 | 只看该作者
P用大写就好了,不明白是什么原因。注释中#include<reg51.h>为头文件,具体是什么含义? 5# zhangf1021

使用特权

评论回复
8
yewuyi| | 2010-12-13 16:53 | 只看该作者
这是因为reg51.h中定义的就是大写。

这个东西就是一个名字,假设在一个房子(reg51.h)关了一群人,其中有一个人是你儿子,你给你儿子起名叫xxx,你想把你儿子从房子里面喊出来吃饭,你肯定是喊:xxx,你妈妈喊你回家吃饭。

你总不能喊:xyx,你妈妈喊你回家吃饭!

道理就这么简单 ,明白了没有!?

使用特权

评论回复
9
autopccopy| | 2010-12-13 17:41 | 只看该作者
C51区分大小写。 :)

使用特权

评论回复
10
winshing| | 2010-12-13 18:06 | 只看该作者
哈,这么巧的事,前天我也是捣鼓这个例程,也犯了同样的错误。
看来某时某刻肯定有很多人作很多相似的事情。

使用特权

评论回复
11
winshing| | 2010-12-13 18:10 | 只看该作者
哈,这么巧的事,前天我也是捣鼓这个例程,也犯了同样的错误。
看来某时某刻肯定有很多人作很多相似的事情。

使用特权

评论回复
12
cosmoscn| | 2010-12-13 20:05 | 只看该作者
reg51.h中 对寄存器名进行了定义,指向了硬件中的实际地址。你向P1中赋值,相当于给P1这个名称相对应的寄存器赋值。通过这种方式使软件与实际硬件联系起来。

使用特权

评论回复
13
zdhlixiang2006| | 2010-12-13 23:12 | 只看该作者
。。。

使用特权

评论回复
14
Messia| | 2010-12-14 08:49 | 只看该作者
C语言是区分大小写的.头文件中定义的是大写,所以必须用大写的P0,P1

使用特权

评论回复
15
hile| | 2010-12-14 09:18 | 只看该作者
吼吼…………学习了,以后不要再犯同样的错误:lol

使用特权

评论回复
16
A2000wps| | 2010-12-14 10:42 | 只看该作者
一點一點的積累

使用特权

评论回复
17
hrg13579| | 2010-12-14 12:07 | 只看该作者
规定要大写,就像数字1+1=2,没必要去追究深层次,你应用就是了。

使用特权

评论回复
18
shiwilson| | 2010-12-14 12:18 | 只看该作者
P是一定要大写的,我刚接触的时候也常犯这种错误,<reg51.h>是单片机寄存器的头文件

使用特权

评论回复
19
doukeran| | 2010-12-14 13:10 | 只看该作者
程序中的符号都要先定义或声明。就算它是在库中定义声明的,也需要把头文件包进来。

使用特权

评论回复
20
arao|  楼主 | 2010-12-14 15:40 | 只看该作者
谢谢各位了,现在明白了,P是一定要大写

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:谢了,正好学学看

27

主题

182

帖子

0

粉丝