?? sci_test.c
字號:
#include "DSP28_Device.h"
#define SetData GpioDataRegs.GPFDAT.bit.GPIOF12 = 1
#define ClrData GpioDataRegs.GPFDAT.bit.GPIOF12 = 0
#define SetClk GpioDataRegs.GPFDAT.bit.GPIOF8 = 1
#define ClrClk GpioDataRegs.GPFDAT.bit.GPIOF8 = 0
unsigned int *LedReg = (unsigned int *)0x27FF; //LED 控制寄存器
unsigned int *Led8Lock = (unsigned int *)0x2BFF;
unsigned int Sci_VarRx[100];
unsigned int i,j;
unsigned int Send_Flag;
void SendData(Uint16 data);
void main(void)
{
/*初始化系統*/
InitSysCtrl();
/*關中斷*/
DINT;
IER = 0x0000;
IFR = 0x0000;
/*初始化PIE中斷*/
InitPieCtrl();
/*初始化PIE中斷矢量表*/
InitPieVectTable();
/*初始化SCIA寄存器*/
InitSci();
for(i = 0; i < 100; i++)
{
Sci_VarRx[i] = 0;
}
i = 0;
j = 0;
Send_Flag = 0;
#if SCIA_INT
/*設置中斷服務程序入口地址*/
EALLOW; // This is needed to write to EALLOW protected registers
PieVectTable.TXAINT = &SCITXINTA_ISR;
PieVectTable.RXAINT = &SCIRXINTA_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
*Led8Lock = 0X01;
*LedReg = 0xFF;
SendData(0xFF);
for(;;)
{
if((SciaTx_Ready() == 1) && (Send_Flag == 1))
{
SciaRegs.SCITXBUF = Sci_VarRx[i];
Send_Flag = 0;
i++;
if(i == j)
{
i = 0;
j = 0;
}
}
#if !SCIA_INT
if(SciaRx_Ready() == 1)
{
Sci_VarRx[j] = SciaRegs.SCIRXBUF.all;
Send_Flag = 1;
j++;
if(j == 100)
{
j = 0;
}
}
#endif
}
}
void Delay(Uint16 data)
{
Uint16 i;
for (i=0;i<data;i++) { ; }
}
void SendData(Uint16 data)
{
Uint16 i,Temp;
Temp = 0x80;
for (i=0;i<8;i++)
{
if ((data & Temp)==0) ClrData;
else SetData;
Temp >>= 1;
ClrClk;
Delay(10);
SetClk;
}
*Led8Lock = 0x00;
Delay(10);
*Led8Lock = 0x01;
SetData;
}
//===========================================================================
// No more.
//===========================================================================
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -