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

📄 uart._h

📁 uart软件仿真实现
💻 _H
字号:
/**********串口端口定义**********/
#define RxD  PD0
#define TxD  PD1

#define baudrate  9600      	//波特率
#define F_CPU     8000000UL     //定义晶振频率

void uart_init(void)
{
  /*****RS232口线设置*****/
  PORTD|=BIT(RxD)|BIT(TxD);
  DDRD&=~BIT(RxD);
  DDRD|=BIT(TxD);
  
  /* 设置波特率*/
  UBRRL=(F_CPU/baudrate/16-1)%256; //本设置波特率不加倍及U2X=0
  UBRRH=(F_CPU/baudrate/16-1)/256;
  /*U2X=1的设置波特率*/
  //UBRRL= (F_CPU/BAUDRATE/8-1)%256;
  //UBRRH= (F_CPU/BAUDRATE/8-1)/256;

  /* 接收器与发送器使能*/
  //UCSRB=(1<<RXEN)|(1<<TXEN);
  UCSRB=BIT(4)|BIT(3);
  
  /*设置传输格式*/
  //异步,8位数据,无奇偶校验,一个停止位,无倍速
  //UCSRC=(1<<URSEL)|(1<<UCSZ0)|(1<<UCSZ1);
  UCSRC=BIT(7)|BIT(2)|BIT(1);  
}

//串口数据发送,查询方式
void putc(unsigned char c)
{
   /* 等待发送缓冲器为空 */
   while (!(UCSRA&(1<<UDRE)));
  /* 将数据放入缓冲器,发送数据 */
   UDR = c;
}

//串口字符串发送,查询方式
void puts(unsigned char *s)
{
  while(*s)
  {
   putc(*s);
   s++;
  }
  putc('\n');
  //return 1;
}

//串口数据接收,查询方式
unsigned char getc(void)
{
  /* 等待接收数据*/
  while (!(UCSRA&(1<<RXC)));
  /* 从缓冲器中获取并返回数据*/
  return UDR;
}

//串口接收数据存储,存储到数组中
void get_s(unsigned char *js,unsigned int num)
{
 unsigned int i; 
   for(i=0;i<num;i++)
   {
	 js[i]=getc();		//保存数据到数组里面
   }
}

⌨️ 快捷键说明

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