色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機atmega16串口中斷接收和發(fā)送程序

          AVR單片機atmega16串口中斷接收和發(fā)送程序

          作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
          // Target : M16

          // Crystal: 8.0000Mhz
          //AVR單片機atmega16串口中斷接收和發(fā)送程序。接收到字符后再發(fā)送出去
          #include
          #include
          unsigned char com_in_buf[1];
          void port_init(void)
          {
          PORTA = 0xFF;
          DDRA = 0xFF;
          PORTB = 0x00;
          DDRB = 0x00;
          PORTC = 0x00;
          DDRC = 0x00;
          PORTD = 0x00;
          DDRD = 0x00;
          }

          本文引用地址:http://cafeforensic.com/article/201611/316518.htm

          //UART0 initialize
          // desired baud rate: 9600
          // actual: baud rate:9615 (0.2%)
          // char size: 8 bit
          // parity: Disabled
          void uart0_init(void)
          {
          UCSRB = 0x00; //disable while setting baud rate
          UCSRA = 0x00;
          UCSRC = BIT(URSEL) | 0x06;
          UBRRL = 0x33; //set baud rate lo
          UBRRH = 0x00; //set baud rate hi
          UCSRB = 0x98;
          }

          void send_data(unsigned char back)
          {
          while( !( UCSRA & (1< UDR=back;
          }

          #pragma interrupt_handler uart0_rx_isr:12
          void uart0_rx_isr(void)
          {
          //uart has received a character in UDR
          com_in_buf[0]=UDR;
          send_data(com_in_buf[0]);
          }

          //call this routine to initialize all peripherals
          void init_devices(void)
          {
          //stop errant interrupts until set up
          CLI(); //disable all interrupts
          port_init();
          uart0_init();

          MCUCR = 0x00;
          GICR = 0x00;
          TIMSK = 0x00; //timer interrupt sources
          SEI(); //re-enable interrupts
          //all peripherals are now initialized
          }

          void main(void)
          {
          char j;
          init_devices();
          while(1)
          {
          for(j=1;j<100;j++)
          ;
          }
          }



          關(guān)鍵詞: AVR單片機atmega16串口中

          評論


          技術(shù)專區(qū)

          關(guān)閉