查看: 1187|回复: 0
打印 上一主题 下一主题

017、异步串行接口UART的C语言编程方式二

[复制链接]
跳转到指定楼层
沙发
发表于 2015-4-29 20:51:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

/********************************************************************
                            汇诚科技
网址:http://www.ourhc.cn
产品有售淘宝店:http://shop36330473.taobao.com   
*********************************************************************/
#include <iom16v.h>
#include <macros.h>
/********************************************************************
                      串口初始化子程序
*********************************************************************/
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("zhang xin chun ");
   Puts("Http://www.ourhc.cn");
   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.ourhc.cn");
         Puts("ATMega16 UART TEST");
         Putchar(0x0a);
         Putchar(0x0d);
      }
   }
}







本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?加入中科因仑

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入中科因仑

本版积分规则

快速回复 返回顶部 返回列表