急求关于51单片机与PC串口通信的C程序,在线等待…… 关于通过串口修改单片机相关数据,并显示操作界面

功能如下:
1、程序烧进去,串口接收显示一个菜单!《如图》A、B、……分别代表一定的功能
例如:A项,代表修改ds1302的时间的数组
2、按照菜单的提示,如:发送A就进入了修改ds1302的时间函数,串口接收界面显
示 A,像图片那种,并显示修改ds1302的操作方法,如从串口发送界面发送
0162115347就表示10年10月16日21时15分34秒星期7,
3、正如第二所说,马上输入1010162115347,就成功的修改了ds1302相关数据,
并返回change success!到串口界面!
4、设置一个功能就是返回主菜单界面。然后又可以就行第二、三步的操作!
5、通过串口,读取单片机里面相关的数据,如时钟的数据
6、说明:可以不要ds1320相关的程序,可以用发光二极管亮来代表修改功能!
如有程序的,请直接发到我邮箱 416185263@qq.com
其实我说的这些,我就遇到一个难题:发单个字符完全能行,但是在发送上面提到的1010162115347这种修改数据就不行,只能给连续接收两个值,我查过资料,是中断这方面处理问题!我耗时三天,吃没吃好,睡没睡好,还是没有做出来……身体透支了,我承认失败了!望高手指点。将万分感激……
我分只有这些了,全豁出来了,还请笑纳。我马上去回答问题赚分,用于奖励回答得很好的高手们……
刚刚在知道里得的分就加上了,望高手能指点指点……

看样子你是UART口知道怎么发多个字节,但是不知道怎么收多个字节,希望下面的代码能帮你理解原理。

//UART读一个字节,这个函数被下面的函数调用。
uint8 UART_RX_CHAR(void)
{
uint8 i,RTBYTE;
RTBYTE=0;
i=10;
while(i--)
{
if(RI){RTBYTE=SBUF;RI=0;i=0;}
}
return RTBYTE;
}

//UART接收,这个函数被UART中断函数调用,产生中断后即调用此函数。当然之前你要先定义一个接收数组,并注意数组长度。
void UART_RX_DATA(void)
{
uint8 i;
for(i=0;i<UART_RX_LEN;i++) //接收到数组
{
UART_RX_BUF[i] = UART_RX_CHAR();
}
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-10-16
你定义一个RXBUF[4]的数组,然后用再用一个全局变量i,每接收一次RXBUF[i++]=SBUF;i>3就i=0

如果对您有帮助,请记得采纳为满意答案,谢谢!祝您生活愉快!

vaela
第2个回答  2010-10-16
呵呵, 能力有限,爱莫能助,学会了再来赚分
第3个回答  2010-10-31
经验,仅供参考:
中断中仅储存数据,把接收到的数据存入一数组,当数据全部接收完成后,再开始处理。 切忌接收一个数据,往DS1302中写一个数据,影响通信。
第4个回答  2010-10-17
你把分换成rmb然后x5 再试试看看有人给你写吗?
相似回答
大家正在搜