论坛风格切换切换到宽版
  • 3905阅读
  • 28回复

上个c语言程序,看看哪里错了? [复制链接]

上一主题 下一主题
离线BG4UVR
发帖
11287
只看该作者 20楼 发表于: 2005-01-12
'
看看我的编译结果   :
'

这个和用at89x51.h那个结果是一样的啊?不同的只是你赋值的时候给了两次p1^0
离线BG4UVR
发帖
11287
只看该作者 21楼 发表于: 2005-01-12
经过研究编译出来的代码,唯一合理的解释是:

“^”在非sbit定义语句中,并不是代表取位操作,而是代表“异或”操作!

例如:
unsigned char temp;
temp=p1^4;
那么temp的结果实际上就是p1口的数据异或数值“4”。

经过其他测试程序已经证明此点。

不一定正确,还请高手指点。
离线bg4jj
发帖
5094
只看该作者 22楼 发表于: 2005-01-12
很   有 道 理     !
离线bg4jj
发帖
5094
只看该作者 23楼 发表于: 2005-01-12
高手快点出来吧   :)
离线BG4UVR
发帖
11287
只看该作者 24楼 发表于: 2005-01-12
'
经过研究编译出来的代码,唯一合理的解释是:
“^”在非sbit定义语句中,并不是代表取位操作,而是代表“异或”操作!
例如:
unsigned char temp;
temp=p1^4;
那么temp的结果实际上就是p1口的数据异或数值“4”。
经过其他测试程序已经证明此点。
不一定正确,还请高手指点。
'

经过请教一位C高手,证实了以上想法。“^”在ANSI C中,表示的意思是“异或”。
离线bg4jj
发帖
5094
只看该作者 25楼 发表于: 2005-01-14
看来   这样的语句对于keil c来说用起来要慎之又慎呀
-----   #define      pa   p3^5       -------
这应该是keil 的无奈之处
在线BG9FU
发帖
1137
只看该作者 26楼 发表于: 2005-01-27
位测试我都用读整个口的值再判断,也是由于这个问题。
好题目!好题目!好题目!好题目!好题目!好题目!好题目!好题目!
好题目!好题目!好题目!好题目!好题目!好题目!好题目!好题目!
离线ljchip
发帖
459
只看该作者 27楼 发表于: 2005-01-28
while(1)
{
.........
}
离线bg4jj
发帖
5094
只看该作者 28楼 发表于: 2005-01-28
'
while(1)
{
.........
}
'

能解释一下吗?没看懂。