⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 8250.c

📁 该程序用来测试89C51与IDE硬盘的接口
💻 C
字号:
/************************************************************/

8250 Module Subroutine by 易兵 

Copyright 《单片机编程世界》 1999

/************************************************************/
 

#define UartBase 0x6000
#define UartData XBYTE[UartBase+0x0000]
#define UartDLL XBYTE[UartBase+0x0000]
#define UartIER XBYTE[UartBase+0x0001]
#define UartDLM XBYTE[UartBase+0x0001]
#define UartIIR XBYTE[UartBase+0x0002]
#define UartLCR XBYTE[UartBase+0x0003]
#define UartMCR XBYTE[UartBase+0x0004]
#define UartLSR XBYTE[UartBase+0x0005]
#define UartMSR XBYTE[UartBase+0x0006]
#define UartSCR XBYTE[UartBase+0x0007]



/* for UART routine */
data char uart_rx_char;
data bit uart_rx_ready;


void UartInit(void); /* Photo type of routine */
void UartInit()
{
  UartLCR = 0x80; /* Change to Baud Gen. mode*/
  UartDLL = 0x0c; /* Baud = 1.8432M /16 /0x0c*/
  UartDLM = 0x00;
  UartLCR = 0x03; /* Change to N,8,1*/
  UartIER = 0x01; /* 0000 0001 - Int When Rx data */

  Uart2LCR = 0x80; /* Change to Baud Gen. mode*/
  Uart2DLL = 0x0c; /* Baud = 1.8432M /16 /0x0c*/
  Uart2DLM = 0x00;
  Uart2LCR = 0x03; /* Change to N,8,1*/
  Uart2IER = 0x01; /* 0000 0001 - Int When Rx data */
}

void UartSend(char); /* Photo type of routine */
void UartSend(char c)
{ UartData = c; /* Tx the char.*/
   UartCrcCalc(c);
   while((UartLSR&0x20)==0);
}

char UartGet(void); /* Photo type of routine */
char UartGet()
{ if (UartLSR&0x01)
    return(UartData);
   return(0x00);
}



void UartStr(char *); /* Photo type of routine */
void UartStr(char *c)
{ data unsigned char d=0;
    while (c[d]!=0)
    UartSend(c[d++]); /* char to Uart */
}


/* subroutine for Interrupt Service */
void interrupt1() interrupt 2
{ 

  EX1=0;
  uart_rx_char=UartData;
  if (!uart_rx_ready)
{ 
   uart_rx_ready=1;
   UartInit();
}
EX1=1;
}
 
     

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -