|
|||||||||||
| 技术交流 | 电路欣赏 | 工控天地 | 数字广电 | 通信技术 | 电源技术 | 测控之家 | EMC技术 | ARM技术 | EDA技术 | PCB技术 | 嵌入式系统 驱动编程 | 集成电路 | 器件替换 | 模拟技术 | 新手园地 | 单 片 机 | DSP技术 | MCU技术 | IC 设计 | IC 产业 | CAN-bus/DeviceNe |
看一下keilc51 子程序调用出现的奇怪问题?? |
| 作者:kkyou 栏目:单片机 |
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 于 2005/1/25 22:04:00 发布:
各位游侠的意见呢? 我的想法是这样的: sbit jdq1=P1^2;相当与sbit jdq1= 0x93 ; 假如把jdq1代入子程序 子程序中的jdq相当于p1.3口的寄存器0x93 而寄存器0x93也不是bit变量,只是他里面包含的数据是bit变量! 我只能是这样理解了!!! 各位游侠的意见呢? |
|
| 3楼: | >>参与讨论 |
| 作者: sunyanshan 于 2005/1/26 15:32:00 发布:
参与 我认为,kkyou说的对,要不是你说我还不知道呢。 我当时没有好好考虑为什么,用与或操作解决的,挺好使的。 |
|
| 4楼: | >>参与讨论 |
| 作者: donkey96 于 2005/2/4 18:48:00 发布:
参数传送:值传送/地址传送。 我个人觉得此函数时按值传送,故口线的值没变。 |
|
|
|
Copyright © 1998-2006 fzqkw.cn 浙ICP证030469号 |