找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1733|回复: 16
收起左侧

关于编码开关连接单片机作为地址,实现硬件更改本机ID

[复制链接]
ID:963748 发表于 2021-12-13 10:33 | 显示全部楼层 |阅读模式
用两个编码开关连接P0口,实现硬件更改本机ID。现在 P0 = 0xXX;然后if( Data == P0),只能实现一个固定的ID,更改ID还要在程序上更改。(XX为ID)

读取单片机P0口高低电平作为地址,和发送的数据对比,具体怎么写?

编码开关

编码开关
回复

使用道具 举报

ID:963748 发表于 2021-12-13 10:57 | 显示全部楼层
定义变量ID = P0;然后再去判断,也实现不了
回复

使用道具 举报

ID:963748 发表于 2021-12-13 11:17 | 显示全部楼层
Zzwh 发表于 2021-12-13 10:57
定义变量ID = P0;然后再去判断,也实现不了

是数据类型的问题吗?
回复

使用道具 举报

ID:883242 发表于 2021-12-13 11:23 | 显示全部楼层
到底是发送还是接收???
发送直接ID=P0,然后把数据发出去就好了。
如果是接收“现在 P0 = 0xXX;然后if( Data == P0)”这句完全无法理解,完全没有必要去设置P0。
回复

使用道具 举报

ID:963748 发表于 2021-12-13 11:32 | 显示全部楼层
Hephaestus 发表于 2021-12-13 11:23
到底是发送还是接收???
发送直接ID=P0,然后把数据发出去就好了。
如果是接收“现在 P0 = 0xXX;然后if ...

谢谢回复,我现在也知道不用设置P0了,但直接拿P0去和指令Data对比数据也不行
回复

使用道具 举报

ID:883242 发表于 2021-12-13 11:39 | 显示全部楼层
Zzwh 发表于 2021-12-13 11:32
谢谢回复,我现在也知道不用设置P0了,但直接拿P0去和指令Data对比数据也不行

P0=0xff; // set P0 to input mode
if(Data==P0){}

这不就行了吗?你随时改拨码开关,然后Data跟拨码开关的值比对,如果对上了就接受。
回复

使用道具 举报

ID:963748 发表于 2021-12-13 11:40 | 显示全部楼层
Hephaestus 发表于 2021-12-13 11:23
到底是发送还是接收???
发送直接ID=P0,然后把数据发出去就好了。
如果是接收“现在 P0 = 0xXX;然后if ...

把两个编码开关调到1和0;设置P0 = 0x10; 然后再拿P0去判断就可以;但只能程序上更改ID
回复

使用道具 举报

ID:883242 发表于 2021-12-13 11:43 | 显示全部楼层
Zzwh 发表于 2021-12-13 11:40
把两个编码开关调到1和0;设置P0 = 0x10; 然后再拿P0去判断就可以;但只能程序上更改ID

把两个编码开关调到1和0;设置P0 = 0xff; 然后再拿P0去判断ID就可以;因为P0读到的值是0x10,如果你接收数据指示ID=0x10就接收,不等于0x10就放弃。不需要程序上更改ID,因为ID的值是拨码开关设定的。
回复

使用道具 举报

ID:963748 发表于 2021-12-13 11:53 | 显示全部楼层
Hephaestus 发表于 2021-12-13 11:39
P0=0xff; // set P0 to input mode
if(Data==P0){}

这样也不行
回复

使用道具 举报

ID:963748 发表于 2021-12-13 11:57 | 显示全部楼层
Hephaestus 发表于 2021-12-13 11:43
把两个编码开关调到1和0;设置P0 = 0xff; 然后再拿P0去判断ID就可以;因为P0读到的值是0x10,如果你接收 ...

谢谢,明白了,但还是不行
回复

使用道具 举报

ID:624769 发表于 2021-12-13 12:37 | 显示全部楼层
你说的不行,到底是什么?
还有,你知道不知道, 这个拨码开关连接P0口到底代表什么意思? 以及,你有没有手段确切地知道P0口的读值?最后,你知道不知道,8951的话,不上拉,P0口是没有1的?
回复

使用道具 举报

ID:883242 发表于 2021-12-13 13:38 | 显示全部楼层
Zzwh 发表于 2021-12-13 11:57
谢谢,明白了,但还是不行

还是不行,是怎么不行?贴代码出来。
回复

使用道具 举报

ID:301191 发表于 2021-12-14 01:57 | 显示全部楼层
顶一下
回复

使用道具 举报

ID:963748 发表于 2021-12-14 10:35 | 显示全部楼层
188610329 发表于 2021-12-13 12:37
你说的不行,到底是什么?
还有,你知道不知道, 这个拨码开关连接P0口到底代表什么意思? 以及,你有没有手 ...

谢谢大佬的回复,通过串口把P0口的值读出来发现是高低4位反过来了(因为硬件是个成品,我是拿来搞程序的),现在把高低4位互换搞好了
回复

使用道具 举报

ID:963748 发表于 2021-12-14 10:36 | 显示全部楼层
Hephaestus 发表于 2021-12-13 13:38
还是不行,是怎么不行?贴代码出来。

谢谢大佬的回复,是我的问题,通过串口把P0口的值读出来发现是高低4位反过来了(因为硬件是个成品,我是拿来搞程序的),现在把高低4位互换搞好了
回复

使用道具 举报

ID:887371 发表于 2021-12-14 10:45 | 显示全部楼层
是不是硬件问题?
把2个拨码开关都拨到0位,看P0的8个脚是否全为0。
把2个拨码开关都拨到3位,看P0的8个脚是否为00110011。
回复

使用道具 举报

ID:963748 发表于 2021-12-14 11:46 | 显示全部楼层
datouyuan 发表于 2021-12-14 10:45
是不是硬件问题?
把2个拨码开关都拨到0位,看P0的8个脚是否全为0。
把2个拨码开关都拨到3位,看P0的8个 ...

谢谢回复,是硬件的问题,把高低4位互换就好了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表