51单片机C51语言的几个问题。

我学过C,也不是说学的特别精,反正算是会C语言吧。现在刚好要做一个51单片机的开发,其它的都还行就是在一些数据类型上有一些没弄明白。1、sbita=PSW^2;上面这条语... 我学过C,也不是说学的特别精,反正算是会C语言吧。
现在刚好要做一个51单片机的开发,其它的都还行就是在一些数据类型上有一些没弄明白。
1、sbit a = PSW^2;
上面这条语句是不是声明一个sbit类型的变量a并给其赋以寄存器PSW第二位的状态值?
如果后面PSW第二位状态值发生改变了,a的值是否同样发生改变,还是要再执行一次上面这条语句,才能使a变量获取新的PSW^2的值?
2、sfr和sbit异同处?
3、bit与sbit异同处?
谢谢。
展开
 我来答
意法半导体(中国)投资有限公司 2023-06-12
展开全部
单片机其实就是一种可以由人对它进行编程从而通过它控制一些与它相连的器件的微型处理器。通俗地说就是你用某种特定的语言在特定的软件里(如keil)编写好一段程序后通过一定的方法转到一个芯片里(这个芯片就是单片机),给芯片上电后它就可以根据你编的程序控制它所连接的其他器件了。希望能帮到你了… 更专业的解答可联系意法半导体,产品服务:意法半导体单片机产品线拥有业界宽广、极具创新力的32位产品系列 – STM32,覆盖超低功耗、超高性能方向.目前提供16大产品线 (F0, G0, F1, F2, F3, G4, F4, F7, H7, MP1, L0, L1, L4, L4+,L5, WB),超…
屈十八一剪辑视频教学
2012-02-28 · TA获得超过370个赞
知道答主
回答量:63
采纳率:100%
帮助的人:28.1万
展开全部
问题1:
sbit a = PSW^2;
这不是一条简单的赋值语句,a也不是什么变量,而是把他和PSW的第二位关联起来,相当于a是它的别名一样,如果a变化的话PSW的第二位会变,PSW的第二位变化时a当然也会变(假设你叫李宇春,现在这条语句就是说把春哥也变成你的名字),其实是一个东西,这么做的原因是,在程序中(主函数)PSW^2不能够直接被编译(如果直接引用,编译不通过)只能在主函数之前或头文件下方来这么一句,你可以打开reg52.h文件看看其实里面有很多这种定义,目的是为某个寄存器或IO口(其实还是寄存器)的某一位起个别名,使编程时既可以位操作又使编译能通过。
问题二:
sbit在问题1中说的很清楚了,就是为某一位起别名,sfr 这个关键字在reg52.h头文件中出现很多
它是单片机开发商把特殊功能寄存器的物理地址映射到一个宏上面,这样的话就可以对寄存器操作了,你自己可以改动,比如reg52.h中的sfr P0 = 0x80;你改为sfr PP=0X80; 那么单片机上的P1口(起名P1口是一种习惯)变成了你的PP口了,sbit a=PP^2完全正确;
问题三:
bit 只是个位变量的关键字,和bool (单片机不支持bool类型),char ,int 类似,为了进行2种状态判断有为了节省存储空间所以有了bit ,你就把他理解为bool就行
意法半导体(中国)投资有限公司
2023-06-12 广告
单片机是一种集成电路芯片。又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。特点是体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。 单... 点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
ATF144X
2012-02-24 · TA获得超过1.2万个赞
知道大有可为答主
回答量:5344
采纳率:77%
帮助的人:4668万
展开全部
1.把PSW中的第二位用一个名字a来表示,只要后面使用到a,就是使用PSW的第二位。
2.sfr是用来给特殊寄存器区的一个地址命名的,假设在特殊寄存器区有个地址0xAC,将其命名为XAF寄存器,就用 sfr XAF=0xAC。sbit是针对特殊寄存器区的位地址命名的。因此sbit和sfr都是针对特殊寄存器区的命名使用的,不同的是sbit针对“位”(bit)地址,sfr针对“字节”(byte)地址。
3.bit是针对RAM区可位寻址范围(字节地址20~2F区)128位的位命名的。sbit就是上面描述的。异同点你可以自己归纳了。
更多追问追答
追问
我这么理解对不对
sbit a = PSW^2; /* a在程序中就可以代表PSW第2位的值,它的值随PSW第2位的变化而变化。同样的,对于一些可以被赋值的寄存器位,也可以对a进行赋值而改变a所指向的寄存器的某位的值。*/
sfr b = 0XD0; /*PSW的地址是0XD0,而这个语句使b始终代表PSW的值*/
bit c = 0X6F; /*bit语句只针对00H-7FH间的128个位数进行操作,实际上是字节物理地址20H-2FH这16个字节物理地址里的位数*/
追答
sbit a = PSW^2,此时a就是PSW的第二位,不是跟着其变化!
sfr b=0xD0,就是说用名字b代替原来0xD0寄存器的名字(PSW)。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
地陷田间E
2012-02-24 · TA获得超过116个赞
知道答主
回答量:186
采纳率:0%
帮助的人:80.5万
展开全部
bit的意思是定义1个布尔逻辑变量如:bit a;,sbit是按位定义SFR寄存器地址,如:
sbit Add_Key = P1.0;。而sfr是按字节定义,如:sfr P1 = 0x90;。
sbit a = PSW^2;
上面这条语句是声明一个sbit类型的变量a并给其赋以寄存器PSW第二位的状态值。如果后面PSW第二位状态值发生改变了,a的值会同样发生改变。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongtianfu12
2012-03-03
知道答主
回答量:6
采纳率:0%
帮助的人:6.2万
展开全部
1、sbit a = PSW^2;意思是PSW的第二位的值赋给a,sbit是对位定义的变量,sfr是针对特殊寄存器定义变量的!多看看例子,就会明白咋回事啦!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式