C51--小车——串口控制
2023-12-18 18:45:18
建立串口分文件:uart.c 和 uart.h文件声明函数
#include "reg52.h"
#include "motor.h"
#include "string.h"
#define SIZE 12
sfr AUXR = 0x8E;
char buffer[SIZE]; //数组操作发送字符串
//串口初始化
void UartInit(void) //9600bps@11.0592MHz
{
PCON &= 0x7F; //波特率不倍速
SCON = 0x50; //8位数据,可变波特率
AUXR &= 0xBF; //定时器1时钟为Fosc/12,即12T
AUXR &= 0xFE; //串口1选择定时器1为波特率发生器
TMOD &= 0x0F; //清除定时器1模式位
TMOD |= 0x20; //设定定时器1为8位自动重装方式
TL1 = 0xFD; //设定定时初值
TH1 = 0xFD; //设定定时器重装值
ET1 = 0; //禁止定时器1中断
TR1 = 1; //启动定时器1
EA = 1; //开启总中断
ES = 1; //开启串口中断
}
//中断函数
void UART_Rountine(void) interrupt 4
{
static int i = 0; //静态的局部变量,被初始化一次
char tmp;
if(RI){ //接收中断
RI = 0; //软件复位
tmp = SBUF; //读数据
if(tmp == 'M'){ //连接失败显示FAIL
i = 0;
}
buffer[i] = tmp;
i++;
if(buffer[0] == 'M'){
switch(buffer[1]){
case '1':
go_Forward();
break;
case '2':
go_Back();
break;
case '3':
go_Left();
break;
case '4':
go_Right();
break;
default:
go_Storp();
break;
}
}
if(i == 12){
memset(buffer,'\0',SIZE);
i = 0;
}
}
if(TI); //发送中断
}
声明函数:串口初始化
void UartInit();
文章来源:https://blog.csdn.net/weixin_48208102/article/details/134981724
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!