找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4287|回复: 1
收起左侧

基于平衡车主板串口收发实验——————moyuqilin

[复制链接]
ID:77578 发表于 2016-1-24 21:32 | 显示全部楼层 |阅读模式
     上次做好了LED灯的闪烁实验,这次要做串口实验了,串口对于调试程序很重要,有时候程序死了,又不知道是死在哪了,我们就可以在怀疑的地方加上一个串口输出,就可以查到程序死在什么地方了。
       参考STC8F系列的参考手册,发现单片机具有4个串口,我只做了串口1的模式1,
      配置串口主要是选择串口号及模式,给定时器装初值,开中断,不过在喵呜的程序里串口应该是并没有用到中断,但是因为之前的一贯思维,我还是写了中断,这里还是一样,开总中断EA=1;开串口中断ES=1,允许接受REN=1;
        在配置串口的寄存器中出现了一个以前没有碰到过的寄存器  辅助寄存器  AUXR,用于选择哪一个定时器产生波特率生么的,开始的时候,我认认真真的在那对着数据手册算,又是系统频率又是什么的,说到系统频率,主板上用的是单片机内部的震荡源,系统的工作频率是在烧录时,在烧录软件上选择的,这里选择的是20M,然后设置串口的初始化有着很简便的方法,在所使用的STC烧录器版本上可以根据选择生成需要的串口初始化函数,不用在自己去算了。 IX`F{(P[C[~JLT4E44(K7]W.png
        这就是串口1的初始化函数了,然后串口发送和51一样,还是SBUF寄存器的操作,接收的时候也是一样的,但是在这款单片机里具有4个串口,我写接收中的时候就不知道该怎么写了,后来看到了手册上的中断序号,串口1依旧是4,所以还是一样的写,
#include<iap15w4k61s4.h>                                 //这个头文件在keil 4的编译环境里并没有,需要自己添加
unsigned char date=0x00;   //
unsigned int flag=0;

void UartInit(void)                //115200bps@20.000MHz
{
        SCON = 0x50;                //8位数据,可变波特率
        AUXR |= 0x04;                //定时器2时钟为Fosc,即1T
        T2L = 0xD5;                //设定定时初值
        T2H = 0xFF;                //设定定时初值
        AUXR |= 0x01;                //串口1选择定时器2为波特率发生器
        AUXR |= 0x10;                //启动定时器2
}


void main()
{
        UartInit();
    REN=1;          //允许串口接收
        EA=1;          //开总中断
        ES=1;          //开接受中断
    while(1)
        {
                if(flag)
            {
                        SBUF=date;          //发送
                        while(TI==0);                //等待发送完毕
                        TI=0;
                        flag=0;
            }
        }
}

void UART1_Routine() interrupt 4                        //串口1接收中断
{
        RI=0;
        date=SBUF;
        flag=1;
}
程序很简单,收到一个字节,再发回来,但是只要这个基础的对了,对于复杂的,只是繁琐
       5[$L_RGD@_L7@9W)]W@5.png
下一个   
           PWM电机控制
回复

使用道具 举报

ID:295783 发表于 2018-4-23 15:59 | 显示全部楼层
请问一下 你第一张图片用的是什么软件???
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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