找回密码
 立即注册
查看: 238|回复: 1

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

[复制链接]
  • 打卡等级:偶尔看看III
  • 打卡总天数:34
  • 最近打卡:2025-03-16 18:14:50

6

主题

6

回帖

228

积分

中级会员

积分
228
发表于 2024-10-8 16:47:32 | 显示全部楼层 |阅读模式
本帖最后由 DebugLab 于 2024-10-8 17:19 编辑

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

不理解wptr&=0xf为什么


回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:458
  • 最近打卡:2025-05-01 07:48:22
已绑定手机
已实名认证

110

主题

2219

回帖

5452

积分

版主

积分
5452
发表于 2024-10-8 17:31:21 | 显示全部楼层
因为0x0f为十进制15。
当wptr为15时,加一则变成16(0x10)。
此时通过wptr&=0x0f,则将高四位消去。
变成wptr=0x00。
从而实现0~15的不断循环
回复 支持 1 反对 0

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:21 , Processed in 0.135320 second(s), 55 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表