⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rs485m.c

📁 书中详细说明了多路数据采集的方法,以及怎么样用AD来采集数据哟,大家不妨看看嘛,说不定有所帮助哟?
💻 C
字号:
#include <C8051f020.h>
#include "main.h"

sbit DE_RE=P2^5;

void UART0_TX(unsigned char send[],unsigned char ii)
{
    unsigned char i;
	DE_RE = 1;//设置RS485处于发送状态
    IE &= ~0x10;//关闭UART0中断用查询方式发送
	for(i=0;i<ii;i++)
	{
	    if(i==0)//发送从机地址,实现多机通信
		{
		    TI0=0;
			TB80=1;
		    SBUF0=send[i];
		    while(TI0==0);
		    TI0=0;
			TB80=0;   
		}
		else
		{
	        SBUF0=send[i];
		    while(TI0==0);
		    TI0=0;
		}
	}
	IE |= 0x10;//开启UART0中断
	DE_RE = 0;//设置RS485处于接收状态
}

void UART0_ISR (void) interrupt 4  //URAT0中断处理
{
    static unsigned char point=0,time=0; 
    if(RI0==1) //接受中断处理
	{
	    RI0=0;
	    if(point==0&&SM20==1&&RB80==1) //广播地址识别
	    {
	        SM20=0; //以后收到为数据
	        RX[point++]=SBUF0;
	    }
	    else 
	    {
	        if(point>=1)
	        {   
	            RX[point++]=SBUF0;
		        if(point==3)
		        {
	                time=RX[2];//取报文长度               
	            }
                if(point>=3)
                {  
                    if(time==0)//全部接收完成
                    {
                        REN0=0;//禁止接收使能
						SM20=1; 
                        ReceiveBit=1;//置接收完成标志
						point=0;
                    }
					else
					    time--;
                }

	        }
	        else 
	            point=0;//等待下一次开始
	    }
	}
	else //发送中断处理
	   TI0=0;
}  

       

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -