?? 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 + -