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

📄 test_485.c

📁 fm2812下485口范例程序
💻 C
字号:
//接收到一字节后再回发一字节,半双工,收发使能用软件控制,波特率19200
#include "DSP28_Device.h"
unsigned int Sci_VarRx[100];
unsigned int i,j;
unsigned int RS;
/////////////////////////////////////////////////////////
#define MY485_SEL_REG *(Uint16 *)0x2004
#define MY485_IN  0x01
#define MY485_OUT  0xff
//////////////////////////////////////////////////////////////
void delay(unsigned);
////////////////////////////////////////////////////////////
void main(void)
{
	InitSysCtrl();			//初始化系统

	DINT;
	IER = 0x0000;			//关中断
	IFR = 0x0000;

	InitPieCtrl();			//初始化PIE中断
    InitGpio();				//初始化GPIO
	InitPieVectTable();		//初始化PIE中断矢量表
    InitSci();				//初始化SCIB寄存器
   ////////////////////////////////////////////////////////// 
    for(i=0;i<100;i++)		//初始化变量
    {
    	Sci_VarRx[i] = 0x55;
    }
    i = 0;
    j = 0;
    RS = 1;
     
	#if SCIB_INT     		//设置中断服务程序入口地址 
		EALLOW;	
		PieVectTable.TXBINT = &SCITXINTB_ISR;
		PieVectTable.RXBINT = &SCIRXINTB_ISR;
		EDIS;   
		IER |= M_INT9;		//开中断
	#endif
	
	EINT;   				// Enable INTM
	ERTM;					// Enable DBGM

    MY485_SEL_REG = MY485_IN;  //设为接收状态
	for(;;)
	{
		if((ScibTx_Ready() == 1) && (RS == 1))
		{   
			MY485_SEL_REG = MY485_OUT; 				//设为发送状态
			delay(10);
			ScibRegs.SCITXBUF = 0x55;//Sci_VarRx[i];
			RS = 1;
			i++;
			if(i == j)
			{
				i = 0;
				j = 0;
			}
			while(ScibTx_Ready() != 1); //等待发送结束
			delay(1000);
			  MY485_SEL_REG = MY485_IN;  			//设为接收状态
		}
			
        if(ScibRx_Ready() == 1)
		{ 
			Sci_VarRx[j] = ScibRegs.SCIRXBUF.all;
			RS = 1;
			j++;
			if(j == 100)
			{
				j = 0;
			}
        }
    } 	
}

void delay(unsigned int t)
{
 unsigned int i,j;
 for(i=0;i<t;i++)
   for(j=0;j<100;j++);
}

⌨️ 快捷键说明

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