78F0485,232串口通信失败,求指教,谢谢。
实验程序很简单,单纯发送数据,但串口调试助手收不到数据,自己排查好久了,请大家帮忙看一下。#pragma SFR
#pragma EI
#pragma ACCESS
#pragma ROT
#pragma NOP
#pragma ASM
#define uchar unsigned char
#define uintunsigned 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 LSBOUTPUT_normal
ISC=0B00110011; //TXD P16RXD6 P15
PF1=0B01000000; //P16TXD6
}
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();
}
各位帮忙看一下啊,有图有程序,谢谢。 坛子真冷,还是自己慢慢查吧 。。竟然和我用一样的单片机
1、检查一下你的硬件:接上的你的232,用串口调试助手,自发自收一下,正常情况下能收到自己发的东西;
2、程序:检查一下你的寄存器的设置,若是认为设置没问题,就用示波器量一下波形;
这款单片机的资源还是蛮多的,就是慢点; 楼上的调好没?能否说一下什么原因? 这个情况一般是你串口寄存器没有配置对。
1.先用示波器检测TXD有没有信号输出。没有的话,仔细查看寄存器配置
2.有信号,那就是波特率没有配置对。查看时钟选择的相关寄存器。 这个早就调好了,问题出在仿真器默认时钟为4M,所以时钟寄存器设置不对。谢谢大家,结贴了。
页:
[1]