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

📄 m16串口通信.c

📁 AVR例子程序和protues仿真
💻 C
字号:
//-----------------------------------------------------------
//程序由AVR辅助开发工具V2.0.0自动生成     
//MCU系统的处理器为:    ATMega16
//MCU系统的晶振频率:    8.0000 Mhz
//-----------------------------------------------------------

#include <avr/io.h>
/*             AVR-ARM开发网论坛                    */
/*           http://www.avrarm.com                  */
/*              MCU串口测试程序                     */
/*--------------------------------------------------*/
/*     程序由AVR串口开发工具V2.0.0自动生成          */
/*     MCU系统的处理器为:   ATMega16               */
/*     MCU系统的晶振频率:   8.0000 Mhz             */
/*--------------------------------------------------*/
//-----------------------------------------------------------
//串口初始化子程序
//字符长度:8位
//奇偶校验:禁止
//通讯模式:异步
//-----------------------------------------------------------
void Uart_Init(void)
{
    UCSRB  =  0x00;     //disable while setting baud rate
    UCSRA  =  0x00;     //Bit1为1则倍速发送
    UCSRC  =  0x86;  
    UBRRL  =  0x33;     //波特率:9600 Bps
    UBRRH  =  0x00;     //误差率:0.156%
    UCSRB  =  0x18;  
}

//-----------------------------------------------------------
//串口接收字节子程序
//-----------------------------------------------------------
unsigned char Getchar(void)
{
   while(!(UCSRA& (1<<RXC)));
   return UDR;
}

//-----------------------------------------------------------
//串口发送字节子程序
//-----------------------------------------------------------
void Putchar(unsigned char c)
{
   while (!(UCSRA&(1<<UDRE)));
   UDR=c;
}

//-----------------------------------------------------------
//串口发送字符串子程序
//-----------------------------------------------------------
void Putstr(char *s)
{
   while (*s)
   {
      Putchar(*s);
      s++;
   }
}

//-----------------------------------------------------------
//串口发送字符串子程序(带有换行符)
//-----------------------------------------------------------
void Puts(char *s)
{
   while (*s)
   {
      Putchar(*s);
      s++;
   }
   Putchar(0x0a);   //回车换行
   Putchar(0x0d);
}


//-----------------------------------------------------------
//主函数
//-----------------------------------------------------------
void main(void)
{
   unsigned char i=0;

   Uart_Init();

   Puts("AVR-ARM RS232 TEST CODE");
   Puts("Http://www.avrarm.com");
   Puts("ATMega16 UART TEST");
   Putchar(0x0a);
   Putchar(0x0d);

   while(1)
   {
      i=Getchar();
      if (i!=0)    //发送0x0F开始测试
      {
         i=0;
         Puts("AVR-ARM RS232 TEST CODE");
         Puts("Http://www.avrarm.com");
         Puts("ATMega16 UART TEST");
         Putchar(0x0a);
         Putchar(0x0d);
      }
   }
}

⌨️ 快捷键说明

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