打印
[MCU]

请问RI置1串口还能接收数据吗

[复制链接]
1325|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
入门小生|  楼主 | 2016-1-19 08:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
ningling_21| | 2016-1-19 08:27 | 只看该作者
明显程序有问题

使用特权

评论回复
板凳
NE5532| | 2016-1-19 10:10 | 只看该作者
肯定是程序问题啊。

使用特权

评论回复
地板
入门小生|  楼主 | 2016-1-19 11:49 | 只看该作者
程序找半天没发现问题

使用特权

评论回复
来自iphone 5s
5
入门小生|  楼主 | 2016-1-19 13:36 | 只看该作者
void UART0_Interrupt (void) interrupt 4
{
        if (RI0 == 1)
        {       
                str1 = str0;
                str0 = SBUF0;
                if ((str0 == 0x09) && (str1 == 0x7e) && (biao == 0))                        //帧头判断
                {
                        str_IN[0] = str1;
                        str_IN[1] = str0;
                        biao = 1;
                        str_L = 1;
                }
                if (biao == 1) //&& (str_L < 7))
                {
                        str_IN[str_L] = str0;
                        str_L++;
                }
                if ((biao == 1)  && (str_L >= 6) && (str_IN[str_L-1] == 0x7e))        //接收结束完毕
                {
                        str_IN[str_L] = str0;
                        biao = 0;
                        str_L = 0;

                        TX_Ready = 1;//接收完毕标志位

                }
                if((biao == 1) && (str_L > 7))
                {
                        biao = 0;
                        str_L = 0;
                }
                RI0 = 0;                //接收中断标志位
        }
        TI0=0;
}

使用特权

评论回复
6
入门小生|  楼主 | 2016-1-19 13:37 | 只看该作者
void PORT_Init (void)
{
   P0MDOUT |= 0x10;                    // Enable UTX as push-pull output
   XBR0    = 0x01;                     // Enable UART on P0.4(TX) and P0.5(RX)
   XBR1    = 0x40;                     // Enable crossbar and weak pull-ups
}
void Oscillator_Init (void)
{
   OSCICN = 0x83;                      // Set the internal oscillator to
                                       // 24.5 MHz
}

void UART0_Init (void)
{
   SCON0 = 0x10;                       // SCON0: 8-bit variable bit rate
                                       //        level of STOP bit is ignored
                                       //        RX enabled
                                       //        ninth bits are zeros
                                       //        clear RI0 and TI0 bits
   if (SYSCLK/BAUDRATE/2/256 < 1)
   {
      TH1 = -(SYSCLK/BAUDRATE/2);
      CKCON &= ~0x0B;                  // T1M = 1; SCA1:0 = xx
      CKCON |=  0x08;
   }
   else if (SYSCLK/BAUDRATE/2/256 < 4)
   {
      TH1 = -(SYSCLK/BAUDRATE/2/4);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 01
      CKCON |=  0x01;
   }
   else if (SYSCLK/BAUDRATE/2/256 < 12)
   {
      TH1 = -(SYSCLK/BAUDRATE/2/12);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 00
   }
   else
   {
      TH1 = -(SYSCLK/BAUDRATE/2/48);
      CKCON &= ~0x0B;                  // T1M = 0; SCA1:0 = 10
      CKCON |=  0x02;
   }

   TL1 = TH1;                          // init Timer1
   TMOD &= ~0xf0;                      // TMOD: timer 1 in 8-bit autoreload
   TMOD |=  0x20;
   TR1 = 1;                            // START Timer1
   TX_Ready = 0;                      // Flag showing that UART can transmit
   IP |= 0x10;                         // Make UART high priority
   ES0 = 1;                            // Enable UART0 interrupts
}

使用特权

评论回复
7
ningling_21| | 2016-1-19 14:57 | 只看该作者
入门小生 发表于 2016-1-19 13:37
void PORT_Init (void)
{
   P0MDOUT |= 0x10;                    // Enable UTX as push-pull output

你进入调试模式运行程序,看看问题在哪里

使用特权

评论回复
8
入门小生|  楼主 | 2016-1-19 15:16 | 只看该作者
主程序错了

使用特权

评论回复
来自iphone 5s
9
入门小生|  楼主 | 2016-1-19 15:19 | 只看该作者
我之前在主程序里加了个falsh存储程序。每次进入就会关中断。  循环一次关一次..后面的就进入不了了

使用特权

评论回复
来自iphone 5s
10
入门小生|  楼主 | 2016-1-19 15:19 | 只看该作者
我之前在主程序里加了个falsh存储程序。每次进入就会关中断。  循环一次关一次..后面的就进入不了了

使用特权

评论回复
来自iphone 5s
11
李不走寻常路| | 2016-1-20 09:19 | 只看该作者
这不是接收数据的程序吗,你提的问题不是发送数据吗

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

30

帖子

1

粉丝