那位能解释一下这段c语言代码
2个回答
展开全部
这显然是面向某种对象(可能是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的值即可。
如果你想学单片机的话,网上由许多资料。
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的值即可。
如果你想学单片机的话,网上由许多资料。
展开全部
该函数的作用是测试p0的第一位(p7位)是1还是0
P0&0x80意思就是把p0的最高位不变其他位变为0
再强制转换为bit型,就是说如果这个结果非零则是1,否则是0,再把这个数传给a。
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。如果满意请选为满意回答。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询