基于AVR的串口与PC机通信代码(uart8位数据)

为了以后根据此代码继续改进功能,特意把代码放在此处,也和大家一起学习。

/************************************

AVR时钟:8.00MHz

*波特率9600(51)8位数据,1位停止,当波特率设置为19200时,UBRR=25,4800=103

*注:波特率设置9600最佳,别的数据不稳定,不同波特率对应的UBRR值参考手册

*PC机向开发板发送一个字符,开发板将其大写字母回写给PC机

***********************************/

#include<iom16v.h>

#include<macros.h>

void USART_Init( unsigned int baud )

{

/* 设置波特率,baud的值查数据手册*/

UBRRH = (unsigned char )(baud>>8);

UBRRL = (unsigned char )baud;

/* 接收器与发送器使能*/

UCSRB = (1<<RXEN)|(1<<TXEN);

/* 设置帧格式: 8 个数据位, 2个停止位*/

UCSRC = (1<<URSEL)|(1<<USBS)|(3<<UCSZ0);

}

void USART_Transmit( unsigned char data )

{

/* 等待发送缓冲器为空 */

while ( !( UCSRA & (1<<UDRE)) )

;

/* 将数据放入缓冲器,发送数据 */

UDR = data;

}

unsigned char USART_Receive( void )

{

/*等待接收数据*/

while ( !(UCSRA & (1<<RXC)) )

;

/* 从缓冲器中获取并返回数据*/

return UDR;

}

void main()

{

unsigned char cr;

DDRD=0X02;  //端口PD2(TXD)输出,端口PD1(RXD)输入上拉

PORTD=0XFF;

//CLR_PORTD(BUZZER);

USART_Init(51);  //波特率对应的UBRR值做形参初始化

while(1)

{

cr = USART_Receive();

cr-=32;

USART_Transmit(cr);

}

}

//大写字母和小写字母的ASCII码相差32,如果PC机发送的是非小写字母,开发板可能会发回乱码。

时间: 2024-10-04 18:41:37

基于AVR的串口与PC机通信代码(uart8位数据)的相关文章

Rayeager PX2测试tcp与PC机通信的测试程序分享

之前学linux时做过一个小例程,测试PX2开发板上的tcp通信,现发到论坛里和大家分享一下, 主要是实现板与PC机的一个简单的通信测试,首先,配上两个程序(程序中没注释,不过具体函数的功能想了解也可以百度下),一个是tcp中负责接收的(tcp_ser.c),一个负责发送数据的(tcp_cli.c),如果在linux下编译,再分别开启两个终端执行,会是如下效果: 由于PC是x86内核的,而PX2板是arm内核的,故我们要在板上运行就得通过别的方式编译下,编译过程如下: 1.先在根目录先,执行so

基于C/S模式的android手机与PC机通信系统的开发

原文链接: http://blog.csdn.net/nupt123456789/article/details/8213486 基于C/S模式的android手机与PC机通信系统的开发 作者:郑海波 单位:南京邮电大学 通信与信息工程学院 信号与信息处理 6班 学号:1012010638 邮箱:[email protected] -----------------------------------------------------------------------------------

PC蓝牙通信C#代码实现

PC蓝牙通信C#代码实现 这篇文章主要为大家详细介绍了PC蓝牙通信C#代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 本文实例为大家分享了C#实现PC蓝牙通信代码,供大家参考,具体内容如下 添加引用InTheHand.Net.Personal.dll 首先创建一个蓝牙类 class LanYa { public string blueName { get; set; } //l蓝牙名字 public BluetoothAddress blueAddress { get; set; }

stm32RS485串口通信——中断接收发送数据

功能:通过PC机的串口调试助手发送数据给串口A,串口B接收到串口A发送的数据,再由串口B将接收到的数据返回给PC机的串口调试助手. PC->串口A->串口B->PC. 实验平台:stm32f407 /********************************************************************* 本平台具有六个串口: com1  485 com2 com3  232 需一个管脚控制DTU com4 485 com5  调试串口  TTL com6

下位机单片机c语言发送数据到串口,上位机pc机java语言获取端口数据

环境: Windows7 64b,jdk64b,myeclipse8.5,rxtx开发包,STC,keil,格西烽火,51单片机,rs232USB转串口线. 下位机c代码 #include <reg51.h> #include <string.h> #define INBUF_LEN 7   //数据长度 unsigned char inbuf1[INBUF_LEN]; unsigned char checksum,count3,count=0; bit           rea

基于X86平台的PC机通过网络发送一个int(32位)整数的字节顺序

1.字节顺序 字节顺序是指占内存多于一个字节类型的数据在内存中的存放顺序,通常有小端.大端两种字节顺序.小端字节序指低字节数据存放在内存低地址处,高字节数据存放在内存高地址处:大端字节序是高字节数据存放在低地址处,低字节数据存放在高地址处.计算机中读取数据的时候是从高地址到低地址,存储数据时候相反! 2.主机字节序到网络字节序 基于X86平台的PC机是小端字节序的,而有的嵌入式平台则是大端字节序的.因而对int.uint16.uint32等多于1字节类型的数据,在这些嵌入式平台上应该变换其存储顺

局域网控制系统-上位机-PC机

C#程序代码: 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Windows.Forms; 9 using System.IO.Ports; 10 //using System

pc机进入android的shell

一直都知道自己很死板,刚刚再一次验证了..下载下来android开发必备的工具之后,就按部就班的一步步的来了,没想过这些工具有没有其他用处,更有甚者,在刚开始接触android的时候,竟然不知道自己写的app可以在真机上运行..不得不承认,我不是一个好的学习者.学习,应该处处充满好奇心! 言归正转,进入android shell很简单,只需要你进入adb的存放目录,执行./adb shell就可以了.但是android的目录颜色和文件的颜色都是白色,不知道是不是可以通过设置来改变. 又让我联想到

如何利用PC机搭建综合实验环境之Vmware workstation篇

无论学习windows还是linux,还是学习这些系统上的应用,我们都需要一台甚至多台服务器.但一台服务器动辄上万元,做为正在学习的学生或个人根本无力购买.况且一些实验不止需要一台,还需要多台服务器.再加上供电等因素,个人买服务器来做实验真的是不可能的事情.但不通过实验的话又很难将知识串联起来,实践是检验真理的唯一标准.因此,今天我们来讲如何通过一台PC模拟多台服务器.PC,并且模拟交换机.路由器.防火墙.AAA服务器,最后将交换机,路由器.防火墙.服务器连接起来,搭建成一个综合的实验环境,完成