zhaojingbo111 发表于 2024-10-8 16:47:32

8g单片机中串口通讯wptr &= 0x0f;

本帖最后由 DebugLab 于 2024-10-8 17:19 编辑

void Uart1Isr() interrupt 4
{
      if (TI)                                                                                        // 发送中断标志置1时
      {
                TI = 0;                                                                              // 清零发送中断标志
                busy = 0;                                                                        // 清零忙状态
      }
      if (RI)                                                                                        // 接收中断标志置1时
      {
                RI = 0;                                                                              // 清零接收中断标志
//                buffer = SBUF;      // 接收长度16
//                wptr &= 0x0f;                                                // 接收长度16
               
                buffer = SBUF;                                        // 接收长度1
                if(buffer == '1')                         // 当接收到的字符是‘1’时
                {
                        blinkflag = 1;                                       // LED闪烁标志置1
                }
      }
}

不理解wptr&=0xf为什么


王昱顺 发表于 2024-10-8 17:31:21

因为0x0f为十进制15。
当wptr为15时,加一则变成16(0x10)。
此时通过wptr&=0x0f,则将高四位消去。
变成wptr=0x00。
从而实现0~15的不断循环
页: [1]
查看完整版本: 8g单片机中串口通讯wptr &= 0x0f;