datouyuan 发表于 2021-12-14 10:45 谢谢回复,是硬件的问题,把高低4位互换就好了 |
|
是不是硬件问题? 把2个拨码开关都拨到0位,看P0的8个脚是否全为0。 把2个拨码开关都拨到3位,看P0的8个脚是否为00110011。 |
Hephaestus 发表于 2021-12-13 13:38 谢谢大佬的回复,是我的问题,通过串口把P0口的值读出来发现是高低4位反过来了(因为硬件是个成品,我是拿来搞程序的),现在把高低4位互换搞好了 |
188610329 发表于 2021-12-13 12:37 谢谢大佬的回复,通过串口把P0口的值读出来发现是高低4位反过来了(因为硬件是个成品,我是拿来搞程序的),现在把高低4位互换搞好了 |
| 顶一下 |
Zzwh 发表于 2021-12-13 11:57 还是不行,是怎么不行?贴代码出来。 |
|
你说的不行,到底是什么? 还有,你知道不知道, 这个拨码开关连接P0口到底代表什么意思? 以及,你有没有手段确切地知道P0口的读值?最后,你知道不知道,8951的话,不上拉,P0口是没有1的? |
Hephaestus 发表于 2021-12-13 11:43 谢谢,明白了,但还是不行 |
Hephaestus 发表于 2021-12-13 11:39 这样也不行 ![]() |
Zzwh 发表于 2021-12-13 11:40 把两个编码开关调到1和0;设置P0 = 0xff; 然后再拿P0去判断ID就可以;因为P0读到的值是0x10,如果你接收数据指示ID=0x10就接收,不等于0x10就放弃。不需要程序上更改ID,因为ID的值是拨码开关设定的。 |
Hephaestus 发表于 2021-12-13 11:23 把两个编码开关调到1和0;设置P0 = 0x10; 然后再拿P0去判断就可以;但只能程序上更改ID |
Zzwh 发表于 2021-12-13 11:32 P0=0xff; // set P0 to input mode if(Data==P0){} 这不就行了吗?你随时改拨码开关,然后Data跟拨码开关的值比对,如果对上了就接受。 |
Hephaestus 发表于 2021-12-13 11:23 谢谢回复,我现在也知道不用设置P0了,但直接拿P0去和指令Data对比数据也不行 |
|
到底是发送还是接收??? 发送直接ID=P0,然后把数据发出去就好了。 如果是接收“现在 P0 = 0xXX;然后if( Data == P0)”这句完全无法理解,完全没有必要去设置P0。 |
Zzwh 发表于 2021-12-13 10:57 是数据类型的问题吗? |
| 定义变量ID = P0;然后再去判断,也实现不了 |