在c语言里。如果直接写p1.o,c编译器并不能识别,而且p1.o也不是一个合法的c语言变量名,所以得给它另起一个名字,比如起名为p1—0,可是p1—0是不是就是p10呢?
可以这么认为,c编译器可不这么认为,所以必须给它们建立联系,这里使用了keilc的关键字sbit。来定义。sbit是c51中的一种扩充数据类型,利用它可以访问芯片内部的ram中的可寻址位或特殊功能寄存器中的可寻址位。
sbit是定义特殊功能寄存器的位变量。bit和sbit都是c51扩展的变量类型。典型应用是:sbit p0_0=p0^0;//即定义p0_0为p0口的第1位,以便进行位操作。bit和int char之类的差不多,只不过char=8位, bit=1位而已。都是变量,编译器在编译过程中分配地址。
sbit的用法有三种:
第一种方法:sbit位变量名=地址值
第二种方法:sbit位变量名=sfr名称^变量位地址值
第三种方法:sbit位变量名=sfr地址值^变量位地址值
如定义psw中的ov可以用以下三种方法:
(1)sbitov=0xd2说明:
0xd2是ov的位地址值,这样是把位的绝对地址赋给位变量。
sbit的位地址必须位于80f_一ffi-1之间。
(2)sbitov=psw^2说明:
其中psw必须先用sfr定义好,先定义一个特殊功能寄存器名再指定位变量名所在的位置,当可寻址位位于特殊功能寄存器中时可采用这种方法。
(3)sbitov=0xdo^2说明:
0xdo就是psw的地址值。
因此这里用sbitp1—0=p1^0就是定义用符号p1一o来表示p1.0引脚,当然,如果你愿意也可以用p10一类的名字,只要下面程序中也随之更改就行了。同样我们可以用p1.1的地址去写,如sbjtp1—1=ox91:这样在以后的程序语句中就可以用p1—1来对p1.1引脚进行读写操作了。
通常我们可以直接使用系统提供的预处理文件里面已定义好的各特殊功能寄存器的简单名字,直接引用可以省去一点时间。当然您也可以自己写自己的定义文件,用您认为好记的名字。
三极管怎么测量好坏?
vr ar mr xr的区别你都知道吗?
三星准备外包部分指纹识别模组生产业务
绝缘电阻表用于哪些领域
宝能汽车以服务为先,百城千店布局即将完成
C语言中对引的读写操作 sbit的三种用法
外输交接计量系统中流量计的检定方式有哪些
科沃斯N3扫地机器人高清图赏
Nature:为什么生成式AI要开源?
GR6000A交直流电机故障诊断仪的测量范围和应用特点介绍
一文详细了解半导体光放大器
行业加速转型,自动驾驶技术成焦点
导电胶导电填料成分有哪些,它有什么用途
新能源车生产合格证数量实现持续高增长,7月产量7.8万台
工控机的配置如何选择
微软登上冠军宝座,市值能否破万亿美元?
伺服控制中现场总线运动控制系统的特点及应用
泰克在BIRTV2012发布新产品和新技术
马斯克说实话:别在生产旺季购买特斯拉,品控差一些
亮亮视野AR眼镜护航工地建设 加强工地标准化管理