📄 test_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 + -