51单片机与三菱PLCFX2N通信问题!请各位帮帮忙啊
我刚接触PLC,想用51单片机与PLC用串口通讯,9600的波特率,1位开始位,7位数据位,1位偶校验,1位停止位,程序很简单,就是想让PLC的Y1置位#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
unsigned int temp={0x02,0x37,0x30,0x31,0x30,0x35,0x03,0x30,0x30};
void main ()
{
unsigned int i;
SCON= 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
while (1)
{
for(i=0;i<9;i++)
{
ACC=temp;
CY=P;
TB8=CY;
SBUF=ACC;
while(!TI);
TI=0;
}
if(i==9)while(1);
}
}
可是PLC一点反应都没有,大家帮忙看看是怎么回事啊 哈哈 看来问题还得我自己解决啊被我搞定了
#include <REG52.H>
#define uchar unsigned char
#define uint unsigned int
unsigned int temp={0x02,0x37,0x30,0x31,0x30,0x35,0x03,0x30,0x30};
sbit LED = P1^0;
void main ()
{
unsigned int i,mm,y;
SCON= 0x50;
TMOD |= 0x20;
TH1 = 0xFD;
TR1 = 1;
EA = 1;
while (1)
{
for(i=0;i<9;i++)
{
ACC=temp;
CY=P;
TB8=CY;
y=ACC&0x7f;
mm=0x00|TB8;
mm=mm<<7;
SBUF=y|mm;
while(!TI);
TI=0;
}
if(i==9)while(1);
}
}
刚开始偶校验这几行我就没弄太明白,
ACC=temp;
CY=P;
TB8=CY;
SBUF=ACC;
这是我在网上搜的,人家都说偶校验是这么写的,可实验证明这是不对的,经过我的改正
ACC=temp;
CY=P;
TB8=CY;
y=ACC&0x7f;
mm=0x00|TB8;
mm=mm<<7;
SBUF=y|mm;
现在已经能给PLC置位啦 哈哈这一天总算是有点成果啦 是用来读取些个plc的参数吧,没用过,看看 回复【2楼】wkman 鱼片
-----------------------------------------------------------------------
不光是读取,给PLC里的D Y S等置位 读写数据 都行 大侠硬件怎么接线啊 是怎么连线的? 楼主强,支持。 mark这个有用 不错不错 有时简单的PLC和单片机通讯,直接用IO口还方便点。
页:
[1]