注册
登录
电子工程世界-论坛
返回首页
EEWORLD首页
频道
EE大学堂
下载中心
Datasheet
专题
单片机
物联网
汽车电子
嵌入式
手机/便携
模拟电子
家用电子
网络通信
电源管理
工业控制
测试测量
半导体设计/制造
安防电子
传感器
医疗电子
大能苗的个人空间
https://home.eeworld.com.cn/space-uid-423121.html
[收藏]
[复制]
[分享]
[RSS]
空间首页
动态
记录
日志
相册
主题
分享
留言板
个人资料
借用开发板
论坛
淘帖
Collection
查看新帖
最新回复
社区活动
联系管理员
我的空间
帖子
日志
收藏
好友
勋章
积分
安全验证
请完成以下验证码
日志
UART通信问题
已有 3361 次阅读
2012-9-11 17:35
写了一个很简单的UART的程序,就是按照“0xBB 八位数据 0xEE”的数据帧格式通过串口给mega16发数据,(数据在0-9之间),然后通过数码管显示。
UART设置是9600波特率,1M时钟。
现在问题是:
1.发送数据总是发好几遍才可以使数码管值改变
2.发数据0x01总是显示溢出
3.用proteus仿真,显示数据帧格式不对
不知道是什么原因,想请指教,程序如下:
#include
#include
#define RXB8 1
#define TXB8 0
#define UPE 2
#define OVR 3
#define FE 4
#define UDRE 5
#define RXC 7
#define FRAMING_ERROR (1 << FE)
#define PARITY_ERROR (1 << UPE)
#define DATA_OVERRUN (1 << OVR)
#define RX_COMPLETE (1<
#define DATA_REGISTER_EMPTY (1<
#define UART_BEGIN_STX 0xBB
#define UART_END_STX 0xEE
#define TX_BUFFER_SIZE 5
#define RX_BUFFER_SIZE 5
unsigned char tx_buffer[TX_BUFFER_SIZE];
unsigned char tx_wr_index,tx_rd_index,tx_counter;
unsigned char rx_buffer[RX_BUFFER_SIZE];
unsigned char rx_counter;
unsigned char Uart_RecvFlag;
unsigned char a;
unsigned char led[10] = {0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};
#pragma interrupt_handler USART_RXC_isr:iv_USART_RXC
void USART_RXC_isr(void)
{
unsigned char status,data;
status = UCSRA;
data = UDR;
if(!Uart_RecvFlag) //判断是否可以接收一个新的数据包
{
if((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN)) == 0)
{
rx_buffer[rx_counter] = data;
rx_counter++;
switch(rx_counter)
{
case 1: //校检起始字符
if(data != UART_BEGIN_STX) rx_counter = 0;
break;
case 3:
if(data == UART_END_STX) Uart_RecvFlag = 1;
rx_counter = 0;
break; //表示正确接受到一个数据包
}
}
}
}
void main(void)
{
DDRB = 0xff;
PORTA = 0x01;
DDRA |= 0xFF; //初始化数码管输出使能和段选信号口
//UART initialization
CLI();
USART_INIT();
SEI(); //Global enable interruPts
while(1)
{
if(Uart_RecvFlag)
{
PORTB = led[rx_buffer[1]];
Uart_RecvFlag = 0;
}
}
}
收藏
邀请
举报
全部
作者的其他最新日志
•
有木有做电力线载波的
•
IAR仿真问题
•
请教SPI通信的几个问题
•
求基于ST7538的电力线载波源程序
•
求助一个模拟电路分析
评论 (
0
个评论)
涂鸦板
您需要登录后才可以评论
登录
|
注册
评论
大能苗
加为好友
给我留言
打个招呼
发送消息
热门文章
头条资讯
公益“芯”之旅|480盒蜡笔的旅程
与开发困境说No!全套中文Keil MDK视频学习资料免费公开
【7月18日 | 广州】泰克2019测试测量巡回研讨会
Linux页框分配器之内存碎片化整理
2400万元!中芯国际又砸重金留梁孟松:全力冲刺7nm工艺
2017年最大的一场物联网盛会,带上期待Qorvo邀您共赏
新增数据手册
464-NWL5H-CW0
E213J3V7PE22
MP180-2ESMMC
GSX-531/L21NF14.40MHZ
700920.9880.25LF
SIP-U4789-12-6981-C-Q-5
热搜器件
ABM40DTAT
TPS3306-33QDRG4Q1
D38999/24ZC8BB
872S480BKLFT
VJ0603D620MLBAT
PESD36VS1UJX
推荐下载
2013年全国大学生电子设计竞赛电磁控制运动装置设计报告.doc
C8051F020的稳压电源设计方案
数字电子技术精品课件-740页-15.4M-PPT格式.zip
PCBM_LP_Viewer_V2009
Breadth first search algorithm in C. Example are countries in Romania traversals.
FPGA和Nios_软核的语音识别系统的研究
推荐关注
220v转5v3.3v2.7v紧凑型无电感设计的离线式线性稳压器
想让 WSL 用上 USB 相机?手把手教你改内核,你还不试试?
深度解析SD2351核心板:硬核视频处理+工业级可靠性设计
康谋方案 | 基于AI自适应迭代的边缘场景探索方案
AXS4056:1000mA单节锂电池充电芯片参数资料、内置锂电池反接保护功能
《图解入门——功率半导体基础与工艺精讲(原书第3版)》阅读心得——碳化硅与氮化镓