本帖最后由 渔夫的烟斗 于 2016-12-29 12:00 编辑
#include <reg52.h>
void Delay1000ms() //@11.0592MHz
{
unsigned char i, j, k;
i = 43;
j = 6;
k = 203;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void uart_init()
{ TMOD=0x20;
PCON=0x00;
SCON=0x50;
TL1=0xfd;
TH1=0xfd;
TR1=1;
}
void main()
{
//char a;
uart_init();
while(1)
{
SBUF=0x56;
Delay1000ms();
}
}
void uart_int() interrupt 4
{
if(RI)
{
RI=0;
SBUF=0X11;
}
if(TI)
{
TI=0;
SBUF=0X77;
}
}
经过候修改发现PROTUES中的串口应该是直连(相当于是单片机串口的延长线,在vspd软件中默认为两个串口是绞合连接)。修改完这个后,利用STC下载软件上的串口助手调试,发现,只能通过HEX格式进行发送单片机才会有回应。但是接收到的若以文本格式来接收却是显示乱码(?之类的),以HEX来显示,显示的值却不能对上号,比如 在单片机设置在接收到PC发送的数据则回应一个 “o” ,在串口助手中显示FA(以HEX显示,因为文本显示不出来。)
void uart_itp() interrupt 4
{
if(RI)
{
RI=0;
p=SBUF;
if(p==1){P1=0XFF;}//send_str();
if(p==2){P1=0X00;send_str();}
if(p==0x03){P1=0XFF;}//send_str();
if(p==0x04)P1=0X00;
}
}
TI在发送函数中进行清零操作
|