开云十大最新推荐

登录 免费注册 开云十大最新推荐 | 行业黑名单 | 帮助
维库电子市场网
技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统
驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe

看一下keilc51 子程序调用出现的奇怪问题??

作者:kkyou 栏目:单片机
看一下keilc51 子程序调用出现的奇怪问题??
  keil c51在调用子程序时,发现一个很奇怪的问题,P口的值不能赋值给变量!
sbit jdq1=P1^2;
sbit jdq2=p1^3
...
...
void tiaoshi(bit jdq,uchar zengyi)
{
   jdq=0;
   .....
   .....     
   jdq=1;
}

main()
{
  ....
  .....
  tiaoshi(jdq1,100);
  tiaoshi(jdq2,100);
  ......
}

当我在主程序中调用void tiaoshi(bit jdq,uchar zengyi)这个子程序时,发现
P1.2和P1.3没有发生变化;

当我在子程序中直接把jdq改成jdq1或jdq2时比如
void tiaoshi(bit jdq,uchar zengyi)
{
   jdq1=0;
   .....
   .....     
   jdq1=1;
}
P1.2和P1.3就有变化了!!      
这是怎么回事情,难道P口值不能赋值给变量?

* - 本贴最后修改时间:2005-1-25 20:40:32 修改者:kkyou

2楼: >>参与讨论
kkyou
各位游侠的意见呢?
  我的想法是这样的:
sbit jdq1=P1^2;相当与sbit jdq1= 0x93 ;
假如把jdq1代入子程序
子程序中的jdq相当于p1.3口的寄存器0x93

而寄存器0x93也不是bit变量,只是他里面包含的数据是bit变量!

我只能是这样理解了!!!

各位游侠的意见呢?


3楼: >>参与讨论
sunyanshan
参与
我认为,kkyou说的对,要不是你说我还不知道呢。
我当时没有好好考虑为什么,用与或操作解决的,挺好使的。

4楼: >>参与讨论
donkey96
参数传送:值传送/地址传送。
我个人觉得此函数时按值传送,故口线的值没变。

参与讨论
昵称:
讨论内容:
 
 
相关帖子
求救,LED显示的问题,有点难呦
AT89C2051驱动能力
at89c2051停了,现在用什么代?
[求助]测量pH值和溶氧用什么便宜点?
请问keilc51中如何输入数据到串口


Copyright © 1998-2006 fzqkw.cn 浙ICP证030469号