有些人,不懂就不要瞎说,误导人啊
PC机与单片机直接是不能进行通信的,
我们知道pc与单片机多采用232串口通信,你使用的是485方式,也是可以的,不过PC机直接不支持485 啊,于是乎,你要用一个RS232-485的转换器,单片机端直接用MAX485芯片就行了,这是硬件。
数据通信与232通信是一样的,不过485是半双工的,单片机端需要做收发控制。
单片机采用中断方式或扫描方式都行,给你一段中断程序,你参考一下:
com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
if(RI) //处理接收中断
{
RI=0; //清除中断标志位
dat[n++]=SBUF;
if(n>7)flg=1;
}
}
flg是一个判断标志,如果你接收到7个数据后,标志置1,
在程序中处理为:
如果flg==1,你可以对你的dat数据处理,同时放n=0,等待下一次数据接收
OK
通信中断会造成保护退出的。
通信中断的解决措施:
① 响应中断请求。当 CPU 正在执行主程序时,如果接收到中断源发出的中断请求信号,就会响应中断请求,停止主程序,开始执行中断。
② 保护断点。为了在执行完中断后能返回主程序,在执行中断时,会将主程序的下一条指令的地址(又称断点地址)保存到数据存储器(RAM)的堆栈中。
③ 寻找中断入口地址。保护好断点后,CPU开始寻找中断入口地址(又称矢量地址),中断入口地址存放着相应的中断子程序,不同的中断源对应着不同的中断入口地址。MCS-51系列单片机5个中断源对应的中断入口地址见表
④ 执行中断子程序。CPU寻找到中断入口地址后,就开始执行中断入口地址处的中断子程序。由于几个中断入口地址之间只有8个单元空间(表中如0003H~000BH相隔8个单元),较小的中断子程序(程序只有一两条指令)可以写在这里,较大的中断子程序无法写入,通常的做法是将子程序写在其他位置,而在中断入口地址单元只写一条跳转指令,由该指令跳转到中断子程序。
⑤ 中断返回。执行完中断子程序后,就会返回到主程序,返回的方法是从RAM的堆栈中取出之前保存的断点地址,然后执行该地址处的主程序,从而返回到主程序。
不是必须要用中断的,中断是为了使主程序暂停中断的内容立即执行而设置的,如果主程序很小主程序的扫描周期可以忽略不计,那么用不用中断无所谓了,相反如果主程序很大,扫描周期很长,要执行通讯的话必须等待本次扫描周期完成才能执行,那么通讯的内容就会有延迟,为了避免这种延迟提高通讯速度或使某些必须立即执行的内容马上响应而使用中断程序,所以说用不用中断要看你的具体要求。个人见解,希望有用。
以上就是关于PC机与单片机用RS485通信时,单片机如何用中断接收一帧数据一帧数据包括7个字符。全部的内容,包括:PC机与单片机用RS485通信时,单片机如何用中断接收一帧数据一帧数据包括7个字符。、通信中断会造成保护退出吗、通信当中为什么要中断程序,或者说是不是必须要中断程序才能实现两个PLC的通信等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)