那位能解释一下这段c语言代码

bitllda(){bita;a=(bit)(P0&0x80);returna;}... bit llda()
{
bit a;
a=(bit)(P0&0x80);
return a;
}
展开
 我来答
fyffyf00
2012-05-03 · 超过16用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:33.9万
展开全部
这显然是面向某种对象(可能是8位单片机,由P0&0x80看出,其基本位是8位,51单片机可能性大)编写的程序。
bit llda() /*定义位函数llda()*/
{
bit a; /*定义位变量a*/
a=(bit)(P0&0x80); /*从这种对象的P0口读到的数据与1000 0000(二进制数,其八进制即80,0x是八进制的前缀)相与,得到的结果转换成位,如P0口读到的数据位1000 0000,那么与运算后的结果是1000 000,很显然是非零,即为1,那么将其转换成位之后是1其它以此类推。其作用是测试p0口的第一位(p7位)是1还是0*/
return a; /*返回函数结果*/
}
如果是单片机这个程序有点多此一举,直接读取P0^7的值即可。
如果你想学单片机的话,网上由许多资料。
mushao999
2012-05-03 · TA获得超过279个赞
知道小有建树答主
回答量:109
采纳率:0%
帮助的人:91.6万
展开全部
该函数的作用是测试p0的第一位(p7位)是1还是0
P0&0x80意思就是把p0的最高位不变其他位变为0
再强制转换为bit型,就是说如果这个结果非零则是1,否则是0,再把这个数传给a。
追问
a=(bit)(P0&0x80);的用法感觉很生僻,能提供学习方向吗?谢谢
追答
其实也没有什么复杂的,就是一个位运算加上强制类型转换。0x80表示1000000,其它数与它相与,后面几位都变成了0,只有最高位是1或者0.再将其转换为bit型,即0或1,即可判断该数最高位为1或0了。这样做是因为在某些领域通常最高位和后面各位表达的不同的含义。需要单独获取。可以参考如下网址:http://www.cnblogs.com/flywuya/archive/2010/12/06/1897737.html。如果满意请选为满意回答。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式