我想实现发送什么,,接收到什么,,
你可以试试发送
welcometotssinghome
返回会少掉几个字符....
代码只有几行,,很容易看懂,,,
请帮忙,,谢谢
[ 本帖最后由 tssing 于 2008-7-20 13:25 编辑 ]
com.rar
(2008-07-20 11:05:13, Size: 37.6 KB, Downloads: 22)
虚拟串口.rar
(2008-07-20 11:05:13, Size: 1.94 MB, Downloads: 22)
sscom32T.rar
(2008-07-20 11:05:13, Size: 275 KB, Downloads: 15)

最新回复
tssing (2008-7-20 11:53:48)
[ 本帖最后由 tssing 于 2008-7-20 12:39 编辑 ]
QQ截图未命名.gif
QQ截图未命名1.GIF
QQ截图未命名2.gif
tssing (2008-7-20 13:47:43)
tssing (2008-7-20 15:48:58)
tssing (2008-7-20 18:45:33)
tssing (2008-7-20 19:34:39)
tssing (2008-7-20 22:05:39)
panhearii (2008-7-21 08:22:04)
现在人来了 正在看
panhearii (2008-7-21 08:50:30)
void InterruptSerial() interrupt SIO_VECTOR
{
RI = 0;
P1 = SBUF;
ES = 0;
SBUF = P1;
while(!TI);
TI = 0;
ES = 1;
}
ES别关
SBUF同一名字 实际上好像是有2个寄存器 一个只能读 一个只能写
panhearii (2008-7-21 08:53:40)
中断里的工作越少越好
把中断要做的活都给WHILE(1)来做
以下程序为转载 依然是
仅供参考
仅供参考
#include <reg51.h>
#include <string.h>
#define INBUF_LEN 4 //数据长度
unsigned char inbuf1[INBUF_LEN];
unsigned char checksum,count3;
bit read_flag= 0 ;
void init_serialcomm( void )
{
SCON = 0x50 ; //SCON: serail mode 1, 8-bit UART, enable ucvr
TMOD |= 0x20 ; //TMOD: timer 1, mode 2, 8-bit reload
PCON |= 0x80 ; //SMOD=1;
TH1 = 0xF4 ; //Baud:4800 fosc=11.0592MHz
IE |= 0x90 ; //Enable Serial Interrupt
TR1 = 1 ; // timer 1 run
// TI=1;
}
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}
//向串口发送一个字符串,strlen为该字符串长度
void send_string_com( unsigned char *str, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(str + k));
k++;
} while (k < strlen);
}
//串口接收中断函数
void serial () interrupt 4 using 3 //其实这里不用写这么多的 除了ch=SBUF; 这步骤外全部放到WHILE(1)里去做
{
if (RI)
{
unsigned char ch;
RI = 0 ;
ch=SBUF;
if (ch> 127 )
{
count3= 0 ;
inbuf1[count3]=ch;
checksum= ch- 128 ;
}
else
{
count3++;
inbuf1[count3]=ch;
checksum ^= ch;
if ( (count3==(INBUF_LEN- 1 )) && (!checksum) )
{
read_flag= 1 ; //如果串口接收的数据达到INBUF_LEN个,且校验没错,
//就置位取数标志
}
}
}
}
main()
{
init_serialcomm(); //初始化串口
while ( 1 )
{
if (read_flag) //如果取数标志已置位,就将读到的数从串口发出
{
read_flag= 0 ; //取数标志清0
send_string_com(inbuf1,INBUF_LEN);
}
}
}
[ 本帖最后由 panhearii 于 2008-7-21 08:57 编辑 ]
tssing (2008-7-21 13:03:00)
不是返回的问题...
tssing (2008-7-21 13:28:16)
还有我怀疑不能运行,,因为当我RI==1时,,,如果没有运行如下语句,,下次中断就无法进入
SBUF = P1;
while(!TI);
TI = 0;
tssing (2008-7-21 13:53:52)
panhearii (2008-7-21 15:14:13)
我估计是你关的时候 数据刚好过来。。。。 猜的
我猜我猜 我猜猜猜~
tssing (2008-7-21 17:13:24)
谢谢帮忙
tssing (2008-7-21 17:25:54)
故曰 (2008-7-21 19:12:27)
发贴还有字符限制,太奇怪了。
zyp005 (2008-7-23 12:47:19)
aaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaa
zyp005 (2008-7-23 12:50:36)
。。。。。。。。。。。。。。。
zyp005 (2008-7-23 12:51:35)
xiaoxiao132 (2008-7-23 13:32:48)