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

📄 uart.c

📁 本代码可以实现上位机与与单片机相互通信.如通过上位机发送启动命令后
💻 C
字号:
#include"hal.h"
#define RE_EN (U0CSR|=0X40)
#define RTX_BY (U0CSR&0X01==1)
#define TX_BYYE (U0CSR&0X02)

BYTE RX_IN;
int i;
char data[20]={5,2,3,4,5,6,7,8,9,11,12,12,13,13,34,5,45,67,0,21};
void EI();
void DI();
void initialUART();
void main(void)
{   
  P2SEL=0X00;
  IO_DIR_PORT_PIN(2,0,IO_OUT);
  IO_DIR_PORT_PIN(2,1,IO_OUT);  
  P2_1=1;
  P2_0=1;
  while(1){ 
  initialUART(); 
  for(int j=0;j<200;j++);
  //U0UCR|=0X3D;                // 9 BIT odd   2 low stop bit and low start bit;   
  URX0IF=0;
  UTX0IF=0; 
  INT_ENABLE(INUM_URX0, INT_ON);   
  EI();
  U0CSR|=0X40;
  i=1;
  while (!URX0IF); 
  if(RX_IN==0X01){ 
  INT_ENABLE(INUM_UTX0, INT_ON); 
  EI();
  U0DBUF=data[0];
  while( i<22&&i>1);       
  }
 }
}
#pragma vector = URX0_VECTOR
__interrupt void URX0_ISR(void){ 
  DI();
  INT_SETFLAG(INUM_URX0, 0);  //urxif set 0;
  P2_1=!P2_1;
  RX_IN=U0DBUF;
  INT_ENABLE(INUM_URX0, INT_ON);
  EI();
  
  
  }
#pragma vector = UTX0_VECTOR
__interrupt void UTX0_ISR(void){
   DI();
   INT_SETFLAG(INUM_UTX0,0);   
   P2_0=!P2_0; 
   U0DBUF=data[i++];      
   INT_ENABLE(INUM_UTX0, INT_ON);  
   EI();
    }    

void initialUART(){
  SET_MAIN_CLOCK_SOURCE(CRYSTAL);
  IO_PER_LOC_UART0_AT_PORT0_PIN2345();   //UART0 SELECT
  UART_SETUP(0,9600,HIGH_STOP);                 //High start bit
}

void  EI(){
   
  INT_GLOBAL_ENABLE(INT_ON);
}
  
void DI(){ 
  DISABLE_ALL_INTERRUPTS();
}

  

⌨️ 快捷键说明

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