📄 main.c
字号:
/*********************************************************************
** Module Name: RS-485 **
** Author: Cbq **
** Version: 1.0 **
** CreateDate: 2008-05-16 **
** Description: **
** Remark: Huozq **
** Revision History: 2008-11-10 **
**********************************************************************/
/*********************************************************************
** 实验目的:通过学习此实验了解485通信在DSP中的应用. **
** 实验说明:此电路主要由DSP、485芯片组成,大家在学习时为了能和上位 **
** 机通信,需要232转485适配器。 **
** 实验结果:运行此程序后,然后打开串口调试工具,发送一字节,通过串 **
** 口线和适配器后,DSP收到一字节,然后在转发回去给PC。 **
** 注意:485是半双工,只能接收一字节回发一字节,收发使能 **
** 自动控制,波特率19200。要实现多字节收发,自己可以修改。** **
**********************************************************************/
//这里的程序我注释我们将不在详细解释,因为他基本和RS232串口相同,不同只是
//外面的硬件不太一样,大家学习时参照我们前面的RS232程序即可
#include "DSP28_Device.h"
unsigned int Sci_VarRx[100];
unsigned int i,j;
unsigned int Send_Flag;
void delay(unsigned int t);
void main(void)
{
/*初始化系统*/
InitSysCtrl();
/*关中断*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE中断*/
InitPieCtrl();
/*初始化GPIO*/
InitGpio();
/*初始化PIE中断矢量表*/
InitPieVectTable();
/*初始化SCIB寄存器*/
InitSci();
for(i = 0; i < 100; i++)
{
Sci_VarRx[i] = i;
}
i = 0;
j = 0;
Send_Flag = 0;
#if SCIB_INT ///查看DSP28_Device.h,可用中断接收,但目前我们采用查询接收
//设置中断服务程序入口地址
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TXBINT = &SCITXINTB_ISR;
PieVectTable.RXBINT = &SCIRXINTB_ISR;
EDIS; // This is needed to disable write to EALLOW protected registers
//开中断
IER |= M_INT9;
#endif
EINT; // Enable Global interrupt INTM
ERTM; // Enable Global realtime interrupt DBGM
for(;;)
{
if((ScibTx_Ready() == 1) && (Send_Flag == 1))
{
delay(10);
ScibRegs.SCITXBUF = Sci_VarRx[i];
Send_Flag = 0;
i++;
if(i == j)
{
i = 0;
j = 0;
}
while(ScibTx_Ready() != 1); //等待发送结束
delay(1000);
}
if(ScibRx_Ready() == 1)
{
Sci_VarRx[j] = ScibRegs.SCIRXBUF.all;
Send_Flag = 1;
j++;
if(j == 100)
{
j = 0;
}
}
}
}
void delay(unsigned int t)
{
unsigned int a,b;
for(a=0;a<t;a++)
for(b=0;b<100;b++);
}
//===========================================================================
// No more.
//===========================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -