历史上的今天
今天是:2025年03月11日(星期二)
2018年03月11日 | 在C语言中如何对某个引脚进行读写操作
2018-03-11 来源:eefocus
在C语言里。如果直接写P1.O,C编译器并不能识别,而且P1.O也不是一个合法的C语言变量名,所以得给它另起一个名字,比如起名为P1—0,可是P1—0是不是就是P10呢?
可以这么认为,C编译器可不这么认为,所以必须给它们建立联系,这里使用了KeilC的关键字sbit。来定义。sbit是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。
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引脚进行读写操作了。
通常我们可以直接使用系统提供的预处理文件里面已定义好的各特殊功能寄存器的简单名字,直接引用可以省去一点时间。当然您也可以自己写自己的定义文件,用您认为好记的名字。
上一篇:一个跳舞机器人的C语言程序
下一篇:用C语言对循迹小车进行编程
史海拾趣
|
1 引言 随着电力电子技术的告诉发展,电力电子设备与人们的工作、生活的关系日益密切,而电子设备都离不开可靠的电源,进入80年代计算机电源全面实现了开关电源化,率先完成计算机的电源换代,进入90年代开关电源相继进入各种电子、电器设备 ...… 查看全部问答> |
|
号外号外,潜水的用户请快快浮出水面.eeworld论坛要改版啦!近期会新增加一个聚合页面.目前正在紧张内测中.先截个图给大家看看。新页面集中了大家可能会比较关注的发贴排行、本周热点、最新评论、会员空间等列表模块。大家有什么意见?请指正!不 ...… 查看全部问答> |
|
我是一个嵌入式开发的新手,目前想用VS2005(C#)做一个SQLite应用程序,在WINCE平台上运行,是不是只下载一个 System.Data.Sqlite 安装之后,在C#里面添加引用就可以了?谁能给我说一下开发的详细的步骤啊?… 查看全部问答> |
|
LM1117系列有没有能够提供负压的? 请教几个问题:1,1117系列是否属于LDO? 2,LM1117系列有没有能够提供负压的?对于LDO了解不多 3,对于LDO了解不多,是不是象有LM317和LM337那样的分类形式分别提供正负电压的?或是通用的?… 查看全部问答> |
|
转自:http://forum.powersystems.eet-cn.com/BLOG_ARTICLE_6743.HTM?click_from=8800073982,9523571682,2011-03-04,PSCOL,FORUM_ALERT&click_from==etsd 1.一般情况下,同功率的开关电源与线性电源相比,_____。 A, 体积大,效率高   ...… 查看全部问答> |
|
现在要对0-25V的直流电压进行隔离采样,精度要求1%,由于霍尔电压传感器的价格 较高,希望能换其他的隔离采样方式! 本来用线性光耦HCNR201大概能实现,但是这个光耦前后级各需一个运放,这样前后 运放就必须各自接不同的电源和地才行 ...… 查看全部问答> |




