最后的倾述 发表于 2012-8-15 17:51:43

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();
   
}




最后的倾述 发表于 2012-8-16 07:41:43

各位帮忙看一下啊,有图有程序,谢谢。

最后的倾述 发表于 2012-8-17 09:00:12

坛子真冷,还是自己慢慢查吧

_laoy 发表于 2012-8-24 16:24:53

。。竟然和我用一样的单片机

1、检查一下你的硬件:接上的你的232,用串口调试助手,自发自收一下,正常情况下能收到自己发的东西;
2、程序:检查一下你的寄存器的设置,若是认为设置没问题,就用示波器量一下波形;

这款单片机的资源还是蛮多的,就是慢点;

wscf123 发表于 2012-12-6 13:09:45

楼上的调好没?能否说一下什么原因?

kingway815 发表于 2012-12-10 20:26:55

这个情况一般是你串口寄存器没有配置对。
1.先用示波器检测TXD有没有信号输出。没有的话,仔细查看寄存器配置
2.有信号,那就是波特率没有配置对。查看时钟选择的相关寄存器。

最后的倾述 发表于 2012-12-20 10:35:45

这个早就调好了,问题出在仿真器默认时钟为4M,所以时钟寄存器设置不对。谢谢大家,结贴了。
页: [1]
查看完整版本: 78F0485,232串口通信失败,求指教,谢谢。