Board logo

标题: 串口通信一 [打印本页]

作者: wxg1988    时间: 2011-12-1 18:35     标题: 串口通信一

/*********************************************************
  程序实现功能:单片机向串口调试助手连续发送256个数,范围
0-255,串口调试助手以16进制的形式显示在接收区。

注:波特率要设定为4800,选择COM1,以16进制的形式显示
**********************************************************/
 
 
#include <iom16v.h>
#include <macros.h>

 
/**********************************************
                  延时函数
**********************************************/
void delay_us(unsigned int delay_counter)//延时1us
  {
    do
  {
   delay_counter--;
  }
 while(delay_counter>1);
  }
 
void delay_ms(unsigned int delay_counter)//延时1ms
  {
    while(delay_counter!=0)
   {
     delay_us(1000);
  delay_counter--;
   }
  }
/***********************************************
             串口初始化子程序
***********************************************/
void INIT_USART(void)
  {
    UCSRB = 0x00; //disable while setting baud rate
    UCSRA = 0x00;
    UCSRC = BIT(URSEL) | 0x06;//设置帧格式: 8个数据位, 1个停止位,无奇偶校验位
    UBRRL = 0xcf; //波特率=4800
    UBRRH = 0x00; //波特率=4800
    UCSRB = 0x18; // /*接收、发送器使能*/

  }
 
 
/***********************************************
             发送一个字符子程序
***********************************************/
void send_char(unsigned char input_char)
  {
    UDR="input"_char;
    while ((UCSRA&0x40)!=0x40);//没有发送完就等待
  }
/***********************************************
                  初始化MCU
***********************************************/ 
void INIT_MCU(void)
  {
 MCUCR=0x00;
  }
 
/************************************************
                 主程序
/************************************************/
void main(void)
   { 
     unsigned int i;
 
  INIT_MCU();//初始化单片机
 
  INIT_USART();//初始化串口
 
  for(i=0;i<=255;i++)
    {
     send_char(i);
  delay_ms(5);//延时一下,可以减少误码率
    }
  while(1);
   }




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0