单片机C语言编程关于sbit定义老是会出错,求解。

#include<reg52.h>#include<intrins.h>#defineuintunsignedint#defineucharunsignedchar#de... #include <reg52.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
#define ON 0
#define OFF 1
sbit RING=P2^3; //P2^3在定义在这里,编译时会出现警告
void delay(){
uchar i=10;
uint j;
while(i--)
for(j=700;j>0;j--);
}
void LED(){
uchar temp;
uchar i=80;
temp=0xFE;
while(i--){
P1=temp;
temp=_crol_(temp,1);
delay();
}
}
void RINGFM1(){
//sbit RING=P2^3; //当P2^3在定义在这里时,编译会出错,不能编译成功
RING=ON;
delay();
}
void mian(){
while(1){
LED();
RINGFM1();
}
}
//求解,为什么sbit定义会出现错误?
展开
 我来答
起源矢量
推荐于2016-03-11 · 别说,我什么都不知道,你高兴就好。
起源矢量
采纳数:32 获赞数:42

向TA提问 私信TA
展开全部
keil c51 sbit为什么放到主函数外面
http://zhidao.baidu.com/link?url=zrcL8wSdkPKJaoWDRjIHqKU5oaacOfTAe-PQmHJAna7rcrnXAFdjsaHQepZULl8fmd2DN4TGAL1En8fITLd5yK
sbit声明的部分是编译器预处理的部分,就是为了给寄存器(位或字节)取个别名,是在函数没有编译之前必须完成的,放在主函数中就是编译中要处理的内容了,对于那些符号地址,C编译器不认识,有的名字也不允许(如P1.1),必须在编译之前进行替代,就是sbit声明,替代的内容为相应单片机寄存器的头文件里边定义的,如REG51.H
arokh
推荐于2018-04-05 · TA获得超过281个赞
知道小有建树答主
回答量:250
采纳率:100%
帮助的人:175万
展开全部
sbit 这个东西相当于标准C语言里面的volatile,也就是定义了一个寄存器,地址是被指定且不能变。至于这句话的位置,LZ可以去看看sbit的定义以及非挥发性变量就知道了。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
852849931
2014-01-14 · TA获得超过135个赞
知道小有建树答主
回答量:229
采纳率:0%
帮助的人:156万
展开全部
写程序要细心的 ,你的主函数 main写错了你没发现吗?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式