×
单片机 > 单片机程序设计 > 详情

AVR中断收发程序atemga128A

发布时间:2020-08-24 发布时间:
|

#include
#include

 int k=0,i=0,j=0;
 char s[4];
 /*
 *程序的作用是将电脑端发送过来的数据再发送回去
 */
 void usart0_init()
 {
   UCSR0A=0X00;
   UCSR0B = 0x00;
   UCSR0C=0X00;
   UCSR0C=(1<    UBRR0L=51;//波特率 8MHZ下9600
   UBRR0H=0;
   UCSR0B=(1<    PORTE=0X03;
   DDRE=0X02; //单片机端口RX0与TX0要有作用,RX0对应的PE扣设为输入模式,且要上拉有效,TX0要设为输出模式
 }
 int main(void)
 { 
  DDRA=0XFF;
  PORTA=0XFF;  
  DDRB=0XFF;
  PORTB=0X00;
  usart0_init();
  sei(); 
  while(1)
  {
    PORTA=(s[0]<<8)+s[0];
  }  
 }

/*
*接收结束中断
*/
ISR(USART0_RX_vect)
{
  cli();
  if(i<2)
  {
    s[i]=UDR0;//每次接受4个字符
    i++;
  }
  else
  {
    i=0;
 while(!(UCSR0A&(1<  sei();//这句与下一句不能调换位置,否则可能出错
 UDR0=s[0];
  }
 
}
/*
*发送结束中断
*/
ISR(USART0_TX_vect)
{
      cli();
   j++;
      while(!(UCSR0A&(1<    if(j<2)UDR0=s[j];//
   else j=0;
   sei();
}



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
ARM 汇编的必知必会