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

📄 uart.c

📁 ads1.2 下的EP9315的源代码(UART)
💻 C
字号:
#include "9315addr.h"
#include "uart.h"
#include "string.h"
#define uart_CtrlHigh 0x60
#define UARTBAUD   1<<29
#define U1EN       1<<18  
#define H_BR       0x0
#define L_BR       0xf
#define UARTE      0x11
/************************************/
void __irq IRQ_uart(void)
{
  unsigned char pt;
  pt = 1;
}
/*************************************
*************初始化*********************
**************************************/
void uart_Interrupt_con(void)
{
   VIC1IntSelect = 0x0;
   VIC1VectCntl2 = 0x37;
   VIC1VectAddr2 = (unsigned int)IRQ_uart;
   VIC1IntEnable = UART1RXINTR1;
  }
  /*********************************/
  void enter(void)
  { 
   const char *fmt3;
   fmt3="\r\n";
   uart_str_send(fmt3,2);
   }
/*************************************
*************初始化*********************
**************************************/
void uart_init_start(void)
{
  
  PwrCnt = UARTBAUD;
  DeviceCfg = U1EN;
  UART1LinCtrlHigh = uart_CtrlHigh;
  UART1LinCtrlMid  = H_BR;
  UART1LinCtrlLow  = L_BR;
  UART1Ctrl = UARTE;
}
/*************************************
**************单个数据发送*********************
**************************************/
void uart_data_send(unsigned char data)
{
     while((UART1Flag&0x8)!=0);
     UART1Data = data;
     while((UART1Flag&0x8)!=0);
     
}
/*************************************
***************数组数据发送***********************
**************************************/
void uart_sev_send(unsigned char *sev,unsigned char len) 
{  
     
     unsigned char i;
   for(i=0;i<len;i++)
   {
      while((UART1Flag&0x8)!=0);
      UART1Data = sev[i];
    }
   enter();
}
/*************************************
****************字符发送**********************
**************************************/
void uart_str_send(const char *str,unsigned char len) 
{  
   
   unsigned char i;
   for(i=0;i<len;i++)
   {
      while((UART1Flag&0x08)!=0);
      UART1Data =str[i];
      
   }  
    
}
/*************************************
***************uart打印函数***********************
**************************************/
void  printf(const char *fmt,unsigned int dt)
{  
   const char *fmt1;
   unsigned int ddt; 
   unsigned char len1,i,t;
   unsigned char tdt[16]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46};
   len1 = strlen(fmt);
   if(fmt[0] == '\n')
   {
       fmt1 = "\r";
       uart_str_send(fmt1,1);
   }
   if((fmt[len1-2]=='%')&&(fmt[len1-1]=='d'))
   {
     uart_str_send(fmt,len1-2);
     uart_data_send(0x20);
     uart_data_send(0x30);
     uart_data_send(0x78);
    ddt =dt;
   for(i=0;i<8;i++)
   {
    t =ddt/0x10000000;
    uart_data_send(tdt[t]);
    ddt = ddt<<4;
    }
    uart_data_send(0x20);
   }
   else
   {
   uart_str_send(fmt,len1);
   //uart_data_send(0x20);
  }
  if(fmt[len1-1]!='>') 
  {
    enter();
  }
}

/*************************************
***************uart接收***********************
**************************************/
unsigned int receive(unsigned char *p)
{
  unsigned int rev=0;
  unsigned int rev1;
  const char *fmt2;
  //unsigned char *pd;
  loop1:
   while((UART1Flag&0x40)==0);
   p[rev] =  UART1Data;
   UART1IntIDIntClr = 0x0;
   if(p[rev]!=0x0d)
   {
     rev = rev+1;
     goto loop1;
   }
   rev1 = rev;
   rev = 0;
   fmt2="\r\n";
   uart_str_send(fmt2,2);
  //*pd = p[0];  
  return rev1;
 }

⌨️ 快捷键说明

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