作者matlling (kk)
看板Electronics
标题[问题] RS232和超级终端机传输问题
时间Sun May 29 17:45:50 2011
想请问RS232传输的问题(8051新手)
我晶片用89S51,接max232传输,都是照着书上接电路的
#include <reg51.h>
sbit LED=P1^0;
char RI_DATA[] = 5;
int RI_END;
char TI_DATA[] = {0x41,0x01,0x61,0x3f,0x33};
void DELAY(int );
main()
{
int i;
TMOD = 0x20;
PCON &= 0x7f;
TH1 = TL1 = 0xfd;
SCON = 0x50;
TR1 = 1;
EA = ES = 1;
LED = 0;
RI_END = 0;
while(1)
{
DELAY(200);
if(RI_END)
{
for (i=0;i<5;i++)
{
TI = 0;
SBUF = TI_DATA[i];
while (TI == 0);
}
RI_END = 0;
}
}
}
void serial_INT(void) interrupt 4
{
if((RI == 1)&&(RI_END == 0))
{
RI = 0;
RI_DATA[0] = SBUF;
//if (RI_DATA[0] =='1')
LED = ~LED;
RI_END = 1;
RI = 0;
}
}
void DELAY(int X)
{
int i,j;
for(i=0;i<X;i++)
for(j=0;j<60;j++);
}
超级终端机
鲍率设 "9600"
流量控制设 "无"
确定後进入内容点 "ASCII设定"
"行尾传送换行符号"打勾
若"回应输入的字元"打勾在按终端机时会出现同样的字
例如:我按a就再出现一个a,这正常吗?
可以接收(我设定按一下,LED就闪)
但不知道接收了什麽
以上是我的程式和其他设定,有两个问题
1.在接数时多了if判断收到的为 1 ,但我在终端机上按1,没法让我的LED灯闪一下
要怎麽修改才可以进入if的判断?
2.接收到时,我会传出5个字串,但终端机都不会收到,为什麽?
晶片设定有错吗?
麻烦各位大大了~谢谢
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 114.47.79.161