当前位置:首页 >> 信息与通信 >>

一个简单易懂的串口通讯例子程序


一个简单易懂的串口通讯例子程序

只有基 本的 功能 , 用于串 口操 作的 演 示,如 果需 要结 构 化的程 序, 到 http://www.avrvi.com/avr_examples/usart.html RS232 电路图

本程序在本站的开发板上通过,绝对没有问题,欢迎讨论。 测试效果,启动时发送 http://www.avrv

i.com 加回车换行,然后,收到什么,返回什么,如 果给它发送一个小 a,会多发回一个 OK,如果发的是大 A,则发回 Hello 字符串。 串口程序测试

// ICC-AVR application builder : 2007-5-20 17:21:25 // Target : M16 // Crystal: 7.3728Mhz // AVR mega16 串口测试 // AVR 与虚拟仪器 http://www.avrvi.com 古欣 #include <iom16v.h> #include <macros.h> #define F_CPU 7372800 const unsigned char buffer[]="http://www.avrvi.com"; void USART_Init( unsigned int baud ) { unsigned int tmp; /* 设置波特率*/ tmp= F_CPU/baud/16-1; UBRRH = (unsigned char)(tmp>>8); UBRRL = (unsigned char)tmp; /* 接收器与发送器使能*/

UCSRB = (1<<RXEN)|(1<<TXEN); /* 设置帧格式: 8 个数据位, 2 个停止位*/ UCSRC = (1<<URSEL)|(1<<USBS)|(1<<UCSZ0)|(1<<UCSZ1); } /* UMSEL 模式选择 0 异步操作 1 同步操作 USBS 停止位位数 0 1 1 2

UCSZ2 UCSZ1 UCSZ0 字符长度 0005 位 0016 位 0107 位 0118 位 1 0 0 保留 1 0 1 保留 1 1 0 保留 1119 位 */ // ICC 生成的初始化 //UART0 initialize // desired baud rate: 9600 // actual: baud rate:9600 (0.0%) // char size: 8 bit // parity: Disabled void uart0_init(void) { UCSRB = 0x00; //disable while setting baud rate UCSRA = 0x00; UCSRC = BIT(URSEL) | 0x06; UBRRL = 0x2F; //set baud rate lo UBRRH = 0x00; //set baud rate hi UCSRB = 0x18; } //下面两个函数直接从数据手册上拷贝过来的 // 数据发送【发送 5 到 8 位数据位的帧】 void USART_Transmit( unsigned char data ) {

/* 等待发送缓冲器为空 */ while ( !( UCSRA & (1<<UDRE)) ) ; /* 将数据放入缓冲器,发送数据 */ UDR = data; }

// 数据接收【以 5 到 8 个数据位的方式接收数 据帧】 unsigned char USART_Receive( void ) { /* 等待接收数据*/ while ( !(UCSRA & (1<<RXC)) ) ; /* 从缓冲器中获取并返回数据*/ return UDR; } //连续发送字符 void USART_Transmit_2( void ) { while ( !( UCSRA & (1<<UDRE)) ) ; UDR = 'H'; while ( !( UCSRA & (1<<UDRE)) ) ; UDR = 'e'; while ( !( UCSRA & (1<<UDRE)) ) ; UDR = 'l'; while ( !( UCSRA & (1<<UDRE)) ) ; UDR = 'l'; while ( !( UCSRA & (1<<UDRE)) ) ; UDR = 'o'; }

void main(void) { unsigned char n=0,tmp=0; USART_Init(9600); //波特率 9600 初始化串口

// uart0_init(); for(i=0;n<20;n++) //发送数组里面的字符串,http://www.avrvi.com { USART_Transmit(buffer[n]); } USART_Transmit(0x0d); //发送一个回车 USART_Transmit(0x0a); //发送一个换行 while(1) { if(UCSRA&(1<<RXC)) //如果接收缓存区有数据 { tmp=USART_Receive(); //接收数据 USART_Transmit(tmp); //发送数据 if(tmp=='a') { USART_Transmit('O'); USART_Transmit('K'); } if(tmp=='A') { USART_Transmit_2(); } } } } //对接收到的数据进行,如果是 A,再发一个 Hello 回来 //对接收到的数据进行,如果是 a,再发一个 OK 回来


相关文章:
一个简单易懂的串口通讯例子程序
一个简单易懂的串口通讯例子程序_信息与通信_工程科技_专业资料。串口通讯例子程序一个简单易懂的串口通讯例子程序 只有基 本的 功能 , 用于串 口操 作的 演示...
C#最简单易懂的串口读写入门程序
C#最简单易懂的串口读写入门程序_信息与通信_工程科技_专业资料。using System;...这基本上是一个最简单的读写串口的程序, 中间完全没有对数据结构和异常的处理...
串口通讯方法的三种实现
串口通信方便易行,应用广泛。在 Windows 应用程序的...1串口通讯原理 串口通信的原理非常简单,串口按位(...3编程复杂性 从上面的这两个例子可以看出,用API...
C51很简洁易懂的RS232串口通信接收程序
C51很简洁易懂的RS232串口通信接收程序_信息与通信_工程科技_专业资料。C51很...请使用串口调试助手(Baud 4800、数据位 8、停止位 1、效验位无)做为上位机...
C51很简洁易懂的RS232串口通信接收发送程序
C51很简洁易懂的RS232串口通信接收发送程序_信息与通信_工程科技_专业资料。C51...RS232 串口通信试验 ( 接受与发送 ) * * * * 1.通过本例程了解串口的基本...
C51很简洁易懂的RS458串口通信接收发送程序
C51很简洁易懂的RS458串口通信接收发送程序_理学_高等教育_教育专区。RS458通信接收和发送发送程序/*** * * 标题: RS485 串口通信试验 ( 接受与发送 ) * *...
用SerialPort类设计串口通讯程序
的串口通讯,在 Visual Studio 6.0 中编写串口通讯程序,一 般都使用 Microsoft ...SerialPort 类提供了七个重载的构造函数,既可以对已经实例化的 SerialPort 对象...
Visual Basic串口通信程序设计典型实例
Visual Basic串口通信程序设计典型实例_信息与通信_工程科技_专业资料。第 6 章...实际上就是编写一个简单的双机聊天程序。 6.1.5 任务实现 6.1.5.1 利用 ...
C语言 做串口通讯程序
C语言 做串口通讯程序_计算机软件及应用_IT/计算机_专业资料。一、 引言: 现在...本文通过 C 语言控制 PLC 实现简单的物料传送为例子。 二、 硬件介绍: 1、...
串口通讯程序汇总
下面结合一个具体的例子来说明串行通信程序的开发。本程序的编程环境是 Win98 ...在单线程中实现自定义的串口通信类 --- 控件简单易用,但由于必须拿到对话框中...
更多相关标签:
wincc串口通讯例子 | qt5 串口通讯例子 | python 串口通讯例子 | 串口通讯 | arduino 串口通讯 | c 串口通讯 | 串口通讯服务器 | 易语言串口通讯 |