78F0485,RS232串口通信失败,求指教,谢谢。
时间:10-02
整理:3721RD
点击:
程序向PC发数据,但串口调试助手收不到,程序如下,自己排查好久了,麻烦大家帮忙看一下。
#pragma SFR
#pragma EI
#pragma ACCESS
#pragma ROT
#pragma NOP
#pragma ASM
#define uchar unsigned char
#define uint unsigned int
sreg uchar flag_ASIF6;
void f_send_data(uchar);
void DelayMS(uint x)
{
uint i;
while(x--)
{
for(i=29;i>0;i--)
{ NOP(); }
}
}
void system_init()
{
IMS=0b11001111;
IXS=0xA;
OSCCTL=0x40;
RCM=0x3;
MSTOP=0;
MCM=0x7;
//IO INIT
PM1=0b10101110; //TXD6 output RXD6 input P1.0 p1.4 output
P1=0B01000000; //TXD6=1
}
void UART6_init()
{
TXE6 = 0; /* uart6 transmit disable */
RXE6 = 0; /* uart6 receive disable */
STMK6 = 1; /* INTST6 disable */
SRMK6 = 1; /* INTSR6 disable */
STIF6 = 0; /* INTST6 IF clear */
SRIF6 = 0; /* INTSR6 IF clear */
CKSR6=1; //n=2;
BRGC6=208; //9600=(f/n)/(2*K) 8MHZ
ASIM6=0B00000101; //no ERR;data_length 8 stop_bit 1 INTSR6
ASICL6=0B00010110; //SBF_out 13 LSB OUTPUT_normal
ISC=0B00110011; //TXD P16 RXD6 P15
PF1=0B01000000; //P16 TXD6
}
void UART6_start()
{
// STMK6 = 0; /* INTST6 enable */
// SRMK6 = 0; /* INTSR6 enable */
POWER6 = 1; /* uart6 enable */
TXE6 = 1; /* uart6 transmit enable */
RXE6 = 1; /* uart6 receive enable */
}
void main()
{
system_init();
UART6_init();
UART6_start();
EI();
// P1.0=1; //led
NOP();
while(1)
{
P1.0=~P1.0;
f_send_data(0X76);
NOP();NOP();
DelayMS(100);
}
}
void f_send_data(uchar send_data)
{
flag_ASIF6= ASIF6;
while( flag_ASIF6.1)
{
flag_ASIF6= ASIF6;
}
TXB6=send_data;
NOP();NOP();
NOP();NOP();
}
#pragma SFR
#pragma EI
#pragma ACCESS
#pragma ROT
#pragma NOP
#pragma ASM
#define uchar unsigned char
#define uint unsigned int
sreg uchar flag_ASIF6;
void f_send_data(uchar);
void DelayMS(uint x)
{
uint i;
while(x--)
{
for(i=29;i>0;i--)
{ NOP(); }
}
}
void system_init()
{
IMS=0b11001111;
IXS=0xA;
OSCCTL=0x40;
RCM=0x3;
MSTOP=0;
MCM=0x7;
//IO INIT
PM1=0b10101110; //TXD6 output RXD6 input P1.0 p1.4 output
P1=0B01000000; //TXD6=1
}
void UART6_init()
{
TXE6 = 0; /* uart6 transmit disable */
RXE6 = 0; /* uart6 receive disable */
STMK6 = 1; /* INTST6 disable */
SRMK6 = 1; /* INTSR6 disable */
STIF6 = 0; /* INTST6 IF clear */
SRIF6 = 0; /* INTSR6 IF clear */
CKSR6=1; //n=2;
BRGC6=208; //9600=(f/n)/(2*K) 8MHZ
ASIM6=0B00000101; //no ERR;data_length 8 stop_bit 1 INTSR6
ASICL6=0B00010110; //SBF_out 13 LSB OUTPUT_normal
ISC=0B00110011; //TXD P16 RXD6 P15
PF1=0B01000000; //P16 TXD6
}
void UART6_start()
{
// STMK6 = 0; /* INTST6 enable */
// SRMK6 = 0; /* INTSR6 enable */
POWER6 = 1; /* uart6 enable */
TXE6 = 1; /* uart6 transmit enable */
RXE6 = 1; /* uart6 receive enable */
}
void main()
{
system_init();
UART6_init();
UART6_start();
EI();
// P1.0=1; //led
NOP();
while(1)
{
P1.0=~P1.0;
f_send_data(0X76);
NOP();NOP();
DelayMS(100);
}
}
void f_send_data(uchar send_data)
{
flag_ASIF6= ASIF6;
while( flag_ASIF6.1)
{
flag_ASIF6= ASIF6;
}
TXB6=send_data;
NOP();NOP();
NOP();NOP();
}
RS232部分

哪位大侠指点一下啊
给你说个排查方法:1先检查硬件是不是有问题,一般是232有时候会多少存在那么一点点小问题,下一步检查接受或者发送固定的一个数据,看是否ok,后面再继续。一步一步来。
嗯,感谢小编!还是要靠自己慢慢查,不吃透是不行的
1. 先检查硬件是否无误 2. 用示波器检查发送端口 是否有波形 3.最后看看程序是否有错
谢谢小编分享学习资料
RS-232转RS-485转换器,rs485集线器(485HUB),rs485中继器,TCPIP转RS-232/485,光纤转232/485(光猫),数字视频光端机系列,usb转232/485接口转换器
深圳市研通科技szyantong
