在keil C51中使用结构体的问题

代码如下#include<reg51.h>#include<stdio.h>voidmain(void){structmybit{inta:3;intb:4;intc:1... 代码如下#include<reg51.h>
#include<stdio.h>

void main(void)
{
struct mybit{
int a:3;
int b:4;
int c:1;
}bit;

SCON = 0x50; //串口方式1,允许接收
TMOD = 0x20; //定时器1 定时方式2
TCON = 0x40; //设定时器1 开始计数
TH1 = 0xE8; //11.0592MHz 1200 波特率
TL1 = 0xE8;
TI = 1;
TR1 = 1; //启动定时器

bit.a=7;
printf("a=%d\n",bit.a);

提示是a没有定义.

是不是要经行什么设置啊?
我期望是在串行窗口中看到输出结果,这样的话要经行哪些设置?
你们说的我都知道.上面的是在一本书上看到的位结构体,格式就是那样定义的.
中午我像你们那样试过,报错了,但是现在再试了一遍,居然通过了,可能哪里错了.
我定义struct student{....}stu;是通过了.但是struct student{......};
student stu;
报错说student没有定义,为什么
展开
 我来答
陈学阳
推荐于2017-11-23 · TA获得超过2.8万个赞
知道大有可为答主
回答量:2.1万
采纳率:14%
帮助的人:5441万
展开全部
楼主没有搞清楚 51的 结构.
楼上说的虽然大多是废话,,对你的项目可以没多少帮助
但是至少有一点是对的..设置成xdata可以解决你的问题.
虽然不是什么好办法.

51的 ram 分外三种.
内部直接寻址你的128byte 内部间接的128byte
还有就是外部 ram

你的51单片机有512byte
那么肯定是 内部 直接 间接各128
外加外部256字节

你把那些大一点的数据全部改成 xdata 声明就可以了.
当然如果你会控制ram大小的话..用idata 声明效率更好一点
例如 unsigned char yy;
写个成 unsigned char xdata yy;

(你看你自己的编译结果显示 data=137, xdata=0, code=4856
就应该猜测一下 xdata 干吗用的了

最后 建议楼主. 最好不用在keil c51里面使用printf函数(浪费啊)
回去.仔细看一遍51的结构..然后看看keil c51的区别于ansi c的东西
会对你有帮助

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!
科博尔
2024-10-31 广告
QT400-18是一种球墨铸铁材料,QT代表“球铁”,400表示其抗拉强度为400MPa,18则表示延伸率为18%。该材料属于铁素体型球墨铸铁,具有良好的韧性和塑性,能够承受高冲击振动及扭转等动、静载荷,特别在低温工作条件下具有较好的冲击性... 点击进入详情页
本回答由科博尔提供
fshunj
2010-09-13 · TA获得超过1228个赞
知道小有建树答主
回答量:123
采纳率:0%
帮助的人:113万
展开全部
回答你的的问题补充中studen没有定义的原因:你不能用student stu这样定义,因为student不是一个类型名,而要这样定义:struct student stu,这里struct student是你定义的一个结构类型,它是student类型,如果你非得想用student定义的话,需要用到类型转换,在你定义struct student{....}stu前面加typedef,这样就把struct student这种类型转化成student了,就可以像你那样定义了.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lzhishen
2010-09-12 · TA获得超过807个赞
知道小有建树答主
回答量:207
采纳率:0%
帮助的人:140万
展开全部
int a:3;
int b:4;
int c:1;这是什么意思?

struct mybit{
int a;
int b;
int c;
}bit={3,4,1};这样初始化


bit.a=3;
bit.b=4;
bit.c=1;

请注意bit是一个特殊字符,为安全起见请不要用bit

结构体只是我们定义的一种数据结构,是不能再内部赋值的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友0d938bf
2010-09-12 · TA获得超过196个赞
知道小有建树答主
回答量:346
采纳率:100%
帮助的人:92.4万
展开全部
不懂。。。
a:3是什么意思

定义就是这样: int a;
char b:
这样的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式