找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1205|回复: 1
打印 上一主题 下一主题
收起左侧

STC89C52单片机串口接收数据+2并返回,只加1其他数字都没问题

[复制链接]
跳转到指定楼层
楼主
ID:711313 发表于 2020-5-17 13:42 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
原来的程序是网上的一段+1返回的程序,然后突然想+2试试,发现怎么都是错的,只加+1.改成+3+4的话,返回的数值就是正确的。但是如果用中间变量+2之后再给SBUF赋值的话,也可以实现正确的+2

void ConfigUART(unsigned int baud){
    SCON = 0x50; //配置串口为模式 1
    TMOD &= 0x0F; //清零 T1 的控制位
    TMOD |= 0x20; //配置 T1 为模式 2
    TH1 = 256 - (11059200/12/32)/baud; //计算 T1 重载值
    TL1 = TH1; //初值等于重载值
    ET1 = 0; //禁止 T1 中断
    ES = 1; //使能串口中断
    TR1 = 1; //启动 T1
}
/* UART 中断服务函数 */
void InterruptUART() interrupt 4{
    if (RI){ //接收到字节
        RI = 0; //手动清零接收中断标志位
        SBUF = SBUF+2; //接收的数据+1 后发回,左边是发送 SBUF,右边是接收 SBUF
    }
    if (TI){ //字节发送完毕
        TI = 0; //手动清零发送中断标志位
    }
}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:213173 发表于 2020-5-17 20:58 | 只看该作者
/* UART 中断服务函数 */
void InterruptUART() interrupt 4
{
        unsigned char i;
        RI=0;
        i=SBUF;
        SBUF=i+2;
        while(!TI);
        TI=0;
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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