详解RS485通信
时间:12-16
来源:互联网
点击:
*******************main.c 文件程序源代码******************************/
view plaincopy to clipboardprint?
- #include
- unsignedcharT0RH=0;//T0重载值的高字节
- unsignedcharT0RL=0;//T0重载值的低字节
- voidConfigTimer0(unsignedintms);
- externvoidUartDriver();
- externvoidConfigUART(unsignedintbaud);
- externvoidUartRxMonitor(unsignedcharms);
- externvoidUartWrite(unsignedchar*buf,unsignedcharlen);
- voidmain(){
- EA=1;//开总中断
- ConfigTimer0(1);//配置T0定时1ms
- ConfigUART(9600);//配置波特率为9600
- while(1){
- UartDriver();//调用串口驱动
- }
- }
- /*串口动作函数,根据接收到的命令帧执行响应的动作
- buf-接收到的命令帧指针,len-命令帧长度*/
- voidUartAction(unsignedchar*buf,unsignedcharlen){
- //在接收到的数据帧后添加换车换行符后发回
- buf[len++]=;
- buf[len++]=;
- UartWrite(buf,len);
- }
- /*配置并启动T0,ms-T0定时时间*/
- voidConfigTimer0(unsignedintms){
- unsignedlongtmp;//临时变量
- tmp=11059200/12;//定时器计数频率
- tmp=(tmp*ms)/1000;//计算所需的计数值
- tmp=65536-tmp;//计算定时器重载值
- tmp=tmp+33;//补偿中断响应延时造成的误差
- T0RH=(unsignedchar)(tmp>>8);//定时器重载值拆分为高低字节
- T0RL=(unsignedchar)tmp;
- TMOD&=0xF0;//清零T0的控制位
- TMOD|=0x01;//配置T0为模式1
- TH0=T0RH;//加载T0重载值
- TL0=T0RL;
- ET0=1;//使能T0中断
- TR0=1;//启动T0
- }
- /*T0中断服务函数,执行串口接收监控*/
- voidInterruptTimer0()interrupt1{
- TH0=T0RH;//重新加载重载值
- TL0=T0RL;
- UartRxMonitor(1);//串口接收监控
- }
现在看这种串口程序,是不是感觉很简单了呢?串口通信程序我们反反复复的使用,加上随着学习的模块越来越多,实践的越来越多,原先感觉很复杂的东西,现在就会感到简单了。从设备管理器里可以查看所有的 COM 口号,我们下载程序用的是 COM4,而 USB 转RS485 虚拟的是 COM5,通信的时候我们用的是 COM5 口,如图 18-3 所示。
RS485通 相关文章:
- S7-200PLC的RS485通信口易损坏的原因及解决办法(12-21)
- Win9X平台下通过RS485通信实现多台三菱变频器控制(12-21)
- PLC在渗滤液焚烧发电系统中的应用(12-20)
- 什么是RS485通信RS485接口RS232接口(12-16)
- RS485通信测试学习笔记(12-15)
- 变频器RS485通信中的干扰及解决办法(12-14)