串口

[复制链接]
 楼主| 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赋一次值?

 楼主| lainanfeng 发表于 2009-3-19 11:17 | 显示全部楼层

芯行天下

回"芯行天下" 能详细点吗?我还担心发送的是16进制,而不是字符,本意是想发送字符.
 楼主| lainanfeng 发表于 2009-3-19 11:21 | 显示全部楼层

wjy1107

回"wjy1107" J在发送正常的时候是不用考虑的,J还是150 .每次调用的时候在全局变量中已经给它值了150. 我感觉是这样的,谢谢
wjy1107 发表于 2009-3-19 11:28 | 显示全部楼层

晕,16进制?字符?

lz在说啥啊?
字符也是可以用16进制表示的!
你是想发送ASC码吧
芯行天下 发表于 2009-3-19 11:29 | 显示全部楼层

回楼主

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

接收时也在中断中进行接收。
 楼主| lainanfeng 发表于 2009-3-19 14:09 | 显示全部楼层

谢谢芯行天下wjy1107了
zxt37 发表于 2009-3-19 16:03 | 显示全部楼层

用中断很简单的

  同意楼上的建议,发送和接受都用中断,很方便的。主程序还可以做其他的处理
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

57

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部

16

主题

57

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部