void main(void)
{
u16 i;
P0M1 = 0x00; P0M0 = 0x00; //set as quasi-bidirectional port
P1M1 = 0x00; P1M0 = 0x00; //set as quasi-bidirectional port
P2M1 = 0x00; P2M0 = 0x00; //set as quasi-bidirectional port
P3M1 = 0x00; P3M0 = 0x00; //set as quasi-bidirectional port
P4M1 = 0x00; P4M0 = 0x00; //set as quasi-bidirectional port
P5M1 = 0x00; P5M0 = 0x00; //set as quasi-bidirectional port
P6M1 = 0x00; P6M0 = 0x00; //set as quasi-bidirectional port
P7M1 = 0x00; P7M0 = 0x00; //set as quasi-bidirectional port
for(i=0; i<256; i++)
{
DMABuffer[i] = i;
}
AUXR = 0x80; //Timer0 set as 1T, 16 bits timer auto-reload,
TH0 = (u8)(Timer0_Reload / 256);
TL0 = (u8)(Timer0_Reload % 256);
ET0 = 1; //Timer0 interrupt enable
TR0 = 1; //Tiner0 run
UART1_config(1); //Use Timer1 as baud rate generator.
DMA_Config();
EA = 1; //enable CPU interrupt
printf("UART1 DMA Timeout Programme!\r\n"); //UART1 sends a string
DMATxFlag = 0;
DMARxFlag = 0;
while (1)
{
if((DMATxFlag) && (DMARxFlag)) //Judging the send completion flag and the reception completion
flag
{
Rx_cnt = 0;
RX1_TimeOut = 0;
printf("\r\nUART1 DMA FULL!\r\n"); //UART1 sends a string
DMATxFlag = 0;
DMA_UR1T_CR = 0xc0; //bit7 1:Enable UART1_DMA,
//bit6 1:Start UART1_DMA automatic transmission
DMARxFlag = 0;
DMA_UR1R_CR = 0xa1; //bit7 1:Enable UART1_DMA,
//bit5 1:Start UART1_DMA automatic reception,
//bit0 1:clear FIFO
}
if(B_1ms) //reach 1ms
{
B_1ms = 0;
if(RX1_TimeOut > 0) //timeout count
{
if(--RX1_TimeOut == 0)
{
DMA_UR1R_CR = 0x00; //Disable UART1_DMA
printf("\r\nUART1 Timeout!\r\n"); //UART1 sends a string