只有一小89s52 UART的问题

G

garg29

Guest
喜的朋友,我只是尽在2 - 89S52通信微控制器。

一个是传播“你好”和另一种是接收和显示相同的液晶(16x2)它。转交的一点是确定正如我在超级终端检查结果。接收端也显示“你好”,而是一个小问题,在一审中的“你好”是正确显示但之后的日子作为“HHELLO”,即字符的H两次显示显示。在函数“无效uart_gets(字符*秒)”我试图把一条线的“S - ,”这显示“天蛾”('魔'消失)第一次
, 但“你好”(正确)之后,continoulsy。以下是代码。
谢谢大家给予时间阅读我的问题。关心。
最后由garg29编辑于2009年6月4日9点36分,编辑2次共

 
代码:字符uart_getc(无效)/ /从异步字符



/ / SBUF的= 0; / /为什么?????

而(里== 0);里= 0;

返回SBUF的;


 
感谢回答Kurenai_ryu。我只是尽量把SBUF的= 0;但did'nt作出任何改变。我也试着海峡[7],但也没有帮助。

这是我的液晶代码
代码:无效

lcd_puts(const字符* š)



LCD_RS = 1; / /写字

而(* š)

lcd_write(* š );

 
问题不在于“多”的H'你看,但你看不到!
我猜你的发射端发送一个“Hello \ṛ\ N”的(这是一个普通的“Enter”,或一个CR =字符0x0D(13)后跟一个低频=字符0x0A(10))。
你的'uart_gets()'等待
, 直到它看到一个CR(13),它取代了空
, 并返回,但在UART的接收缓冲区中会出现低频(10)下一次调用'uart_gets左字符()' ,并且将检索字符的字符串中的第一个元素,在每小时
你必须处理所有接收到的字符,并刷新他们(没有SBUF的= 0,不会做,你必须做的
, 而不是一个虚拟读)。

请不要介意我说
, 你的编码风格只是错误回避。虽然正确的,您选择的名称与全球的同名形式参数都非常混乱,不遑论其余的代码混淆。
我希望你知道
, 这将只在这个特定情况下的工作
, 绝不应使用此代码作为模板通用。

阿瑟

 

Welcome to EDABoard.com

Sponsor

Back
Top