单片机P0,P1口读取16位数字量,然后DA输出,请问这样的程序有问题么?

2024-12-20 01:43:50
推荐回答(5个)
回答1:

这样用可真够浪费的呵呵,一个是浪费PLC输出模块,一个是你还要在调试单片机程序。如果PLC的DA模块分辨率够用的话还是建议使用PLC的DA控制,稳定性也好。如果是因为PLC的DA分辨率不够或是成本问题(其实这样成本也比配个DA模块省不了多少了,估计是分辨率问题)
建议你的DA选并行的,通过个光耦和PLC的输出点直接相连,省事多了,如果没有并行DA其实自己搭个也是不错的方法~

回答2:

没问题呀,可以正确执行

回答3:

貌似没问题,变量定义时要注意字节大小,如果是51的话P0的高电平要接上拉电阻才有效,还有就是|好像是位或也就是逻辑或,不行的话使用“||”试一下,好运!

回答4:

首先要定义a b变量P1 P0不用定义,直接可以用。应这样写:
val=P1;
val<<=8;
val|=P0 ;
write_data(val) ;//16位DA子程序。

回答5:

你这个程序是对的。但是有一点忽略了:
P1口作为输入口,应该先置为ff

完整程序:
while(1)
{
P1=0xff;//这个就是忽略的地方
i=P1;
P0=i;
}

另外,下面这个也可以,以经过软件仿真通过。
P1=P0;