登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] 串口通信2

[复制链接]
发表于 2022-1-20 21:31:21 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 单片机
学习安排: 单片机
开始时间: 2022-01-20
结束时间: 2022-01-20
本帖最后由 房一鹏 于 2022-1-21 14:47 编辑

关于串口通信,波特率的计算是十分重要的,在我们的板子上因为32768000/12/32/9600=8.8888......,而我们在使用的时候256-32768000/12/32/9600计算时为256-8省去了小数部分0.8888......,程序是无法在单片机上起到应有的效果的,所以在波特率计算的时候用的是255-32768000/12/32/9600.注意是255!!!
另外在我们使用stc-isp是选用的是文本模式(输入输出都是),当我们输入一个123时输出的是一个234,而不是124,我认为是123为三个字符而不是一个数字,输出的也是三个字符,需要对照ASCⅡ表。

补充选用的是文本模式的话输入的是字符,选用的是hex模式的话输入的是数字

#include<reg52.h>

void configUART(unsigned int baud)
{
        SCON=0x50;
        TMOD&=0x0F;
        TMOD|=0x20;
        TH1=255-(32768000/12/32)/baud;
        TL1=TH1;
        ET1=0;
        TR1=1;
}
void main()
{
        configUART(9600);
        while(1)
        {
                while(!RI);
                RI=0;
                SBUF = SBUF+1;
                while(!TI);
                TI=0;
        }
}


利用串口中断的程序

#include<reg52.h>

void configUART(unsigned int baud)
{
        SCON=0x50;
        TMOD&=0x0F;
        TMOD|=0x20;
        TH1=256-(32768000/12/32)/baud;
        TL1=TH1;
        ET1=0;
        TR1=1;
        ES=1;
}

void main()
{
        EA=1;
        configUART(9600);
        while(1);
}

void interruptUATA() interrupt 4
{
        if(RI)
        {
                RI=0;
                SBUF=SBUF+1;
        }
        if(TI)
        {
                TI=0;
        }
}




好懒~~不想说~~~
 楼主| 发表于 2022-1-20 22:35:51 | 显示全部楼层
另外字母也有效果可以试试看
好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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