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

📄 usart2._c

📁 AVR单片机串口异步通信,通过电脑串口助手使电脑和单片机运行简单的数据通讯
💻 _C
字号:
#include<iom16v.h>
#include <macros.h>
#define key (PIND&0x04)          //定义按键PD2
/*****************函数原型声明************************/
void USART_Init(unsigned int baud);
void USART_Transmit(unsigned char dat);
void delayms(unsigned int t);
unsigned char USART_Receive(void);
/******************接收中断函数****************************/
#pragma interrupt_handler uart0_rx_isr:12
void uart0_rx_isr(void)
{ unsigned char dat;
   if(UCSRA&(1<<RXC)){  //把要接收的数据全部接收
   dat=UDR; 
   USART_Transmit(dat);
   }
}	
/*****************************************************/
void main(void)
{ unsigned char rec;
    PORTB=0xff;
    DDRB=0xff;
    PORTD=0x07;
	DDRD=0x02;
	UCSRA=0x00;
    USART_Init(71);//波特为9600,外部晶振11.0592
	SEI();
    while(1)
	{ 	
	   if(key==0)
	     {            //按键按下发送一字节数据
	     delayms(10);
		 if(key==0){
		 while(!key);
		 USART_Transmit(0x22);
		           }
	     }
     }		 
}

/******************USART初始化***********************/    
void USART_Init(unsigned int baud)
 {
  UBRRH=(unsigned char)(baud>>8);
  UBRRL=(unsigned char)baud;  //设定波特率
  UCSRB=0x98;                 //使能接收和发送,开接收中断
  UCSRC=0x8e;                 //设置帧格式8数据位,2停止位
 }
/************发送函数****************************/
void USART_Transmit(unsigned char dat)
 {
   while(!(UCSRA&(1<<UDRE)));
   UDR=dat;
 }
/************接收函数*****************************/
unsigned char USART_Receive(void)
 {
  while(!(UCSRA&(1<<RXC)));
  return UDR;
 }
/**********延时*********************************/
void delayms(unsigned int t)
 {
   unsigned int i,j;
   for(i=0;i<t;i++)
    for(j=0;j<100;j++);
 }	  
    

⌨️ 快捷键说明

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