打印

串口

[复制链接]
1443|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lainanfeng|  楼主 | 2009-3-19 11:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
j=150;
void senddate(uchar indata)       //发送一个字节函数
{  SBUF=indata;
   while(!TI&j)
     j--;
   TI=0;

 senddate(Bb);
 senddate(Dd);
j是为了要是没发送的话,不会一直等待,我想发送BbDd 字符指令  这样可以吗?

相关帖子

沙发
芯行天下| | 2009-3-19 11:13 | 只看该作者

最好不要这样写

发送和接收数据最好还是在中断中进行。不要用程序去等待。

使用特权

评论回复
板凳
lainanfeng|  楼主 | 2009-3-19 11:15 | 只看该作者

刚才的

j=150;
void senddate(uchar indata)       //发送一个字节函数
{  SBUF=indata;
   while(!TI&j)
     j--;
   TI=0;
}  
void  lxfa(void)                  //连续测量
{   
    senddate(0xBb);
    senddate(0xDd);
    fasong=1;
    delay(1);
}

使用特权

评论回复
地板
wjy1107| | 2009-3-19 11:17 | 只看该作者

没这么用过,提几点疑问

1、你咋知道正常发送一个字节的时间一定小于J从150到0的时间呢?

2、每调用一次senddate 函数就要给j赋一次值?

使用特权

评论回复
5
lainanfeng|  楼主 | 2009-3-19 11:17 | 只看该作者

芯行天下

回"芯行天下" 能详细点吗?我还担心发送的是16进制,而不是字符,本意是想发送字符.

使用特权

评论回复
6
lainanfeng|  楼主 | 2009-3-19 11:21 | 只看该作者

wjy1107

回"wjy1107" J在发送正常的时候是不用考虑的,J还是150 .每次调用的时候在全局变量中已经给它值了150. 我感觉是这样的,谢谢

使用特权

评论回复
7
wjy1107| | 2009-3-19 11:28 | 只看该作者

晕,16进制?字符?

lz在说啥啊?
字符也是可以用16进制表示的!
你是想发送ASC码吧

使用特权

评论回复
8
芯行天下| | 2009-3-19 11:29 | 只看该作者

回楼主

你最好找个这样的例程看一下,发送和接收都在中断中进行。
发送:将你发送的数据写入一个缓存区,并定义一个全局变量,保存你要发送的长度,在中断外发送一个字节,然后这个字节发送完后会进中断,你在中断中继续发送其它字节就行了,要根据长度来确定是否发送完成。

接收时也在中断中进行接收。

使用特权

评论回复
9
lainanfeng|  楼主 | 2009-3-19 14:09 | 只看该作者

谢谢芯行天下wjy1107了

使用特权

评论回复
10
zxt37| | 2009-3-19 16:03 | 只看该作者

用中断很简单的

  同意楼上的建议,发送和接受都用中断,很方便的。主程序还可以做其他的处理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

57

帖子

1

粉丝