/******************** (C) COPYRIGHT 2014 FeiHong Robot **************************
* 文件名 :UART.C
* 描述 :与串口相关的一些函数
* 实验平台:飞鸿16路舵机控制板 单片机STC12C5A60S2
* 作者 :许长华
* 博客 :http://blog.163.com/fh_robot
* 淘宝 :http://fh-robot.taobao.com
**********************************************************************************/
#define MAIN_Fosc 12000000L //定义主时钟
#define RX1_Lenth 106 //串口接收缓冲长度
#define BaudRate1 115200UL //选择波特率
#define Timer1_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 1 重装值, 对应300KHZ
#define Timer2_Reload (65536UL -(MAIN_Fosc / 4 / BaudRate1)) //Timer 2 重装值, 对应300KHZ
#include "STC15Fxxxx.H"
#include "uart.h"
uint8 UartRevBuf[20];
bit FlagRevCmd=0; //标志位,串口接收到命令后置1
/***************************************************************************************************************
函 数 名:UART1_Init(void)
功能描述:串口1初始化
日 期:2011-3-3.
作 者:许长华
备 注:晶振12M。波特率38400,波特率不加倍,波特率独立发生器
****************************************************************************************************************/
void UART1_Init(void)
{
S1_8bit(); //8位数据
S1_USE_P30P31(); //UART1 使用P30 P31口 默认
AUXR &= ~(1<<4); //Timer stop 波特率使用Timer2产生
AUXR |= 0x01; //S1 BRT Use Timer2;
AUXR |= (1<<2); //Timer2 set as 1T mode
TH2 = (uint8)(Timer2_Reload >> 8);
TL2 = (uint8)Timer2_Reload;
AUXR |= (1<<4); //Timer run enable
REN = 1; //允许接收
ES = 1; //允许中断
EA = 1; //允许全局中断
}
/***************************************************************************************************************
函 数 名:UART1_SendOneChar(uint8 val)
功能描述:串口发送一个字节
日 期:2012-3-3.
作 者:许长华
备 注:
****************************************************************************************************************/
void UART1_SendOneChar(uint8 val)
{
SBUF = val;
while(TI == 0);
TI = 0;
}
/***************************************************************************************************************
函 数 名:UART1_Int(void)
功能描述:串口1接受中断函数
日 期:2011-3-3.
作 者:许长华
备 注:
****************************************************************************************************************/
void UART1_Int(void) interrupt 4
{
static uint16 n=0;
if(RI == 1) // 检测是不是接收数据引起的中断
{
RI = 0;
UartRevBuf[n] = SBUF; //将收到的字符放到数组中
n++;
if(UartRevBuf[n-1]=='!') //!,表示字符串结束,一个指令结束
{
FlagRevCmd=1; //标志位置1 ,等待处理
n=0;
}
}
return;
}
/***************************************************************************************************************
函 数 名:StrToValu
功能描述:把字符型转换成数值型
日 期:2011-12-31.
作 者:许长华
备 注:
****************************************************************************************************************/
uint8 StrToValu(uint8 asc)
{
uint8 valu;
switch(asc)
{
case 0x30:valu=0;break; //0的ASC码时0x30,,十进制48
case 0x31:valu=1;break;
case 0x32:valu=2;break;
case 0x33:valu=3;break;
case 0x34:valu=4;break;
case 0x35:valu=5;break;
case 0x36:valu=6;break;
case 0x37:valu=7;break;
case 0x38:valu=8;break;
case 0x39:valu=9;break;
}
return valu;
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
MPU6050 串口输出.zip (26个子文件)
MPU6050 串口输出
two_balance_car.M51 21KB
two_balance_car.c 2KB
two_balance_car.opt.bak 1KB
two_balance_car.uvproj 13KB
uart.c 3KB
two_balance_car.uvgui.唐荣永 76KB
I2C.h 5KB
two_balance_car_Uv2.Bak 2KB
two_balance_car.plg 182B
two_balance_car.uvgui.tangrongyong 73KB
two_balance_car.uvgui_tangrongyong.bak 73KB
two_balance_car.lnp 75B
two_balance_car.LST 5KB
DELAY.h 867B
two_balance_car_Opt.Bak 1KB
two_balance_car_uvproj.bak 13KB
uart.OBJ 24KB
two_balance_car.Uv2.bak 2KB
two_balance_car.hex 6KB
uart.LST 7KB
MPU6050.H 2KB
two_balance_car.uvopt 55KB
two_balance_car_uvopt.bak 55KB
__Previews
MPU6050.HPreview 78KB
UART.H 215B
two_balance_car.uvgui_唐荣永.bak 70KB
共 26 条
- 1
资源评论
- ruchiruzui20122018-12-19uart.c的程式 进行单独编译出错,有一个地方缺少一个分号
tangrongyong00
- 粉丝: 2
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功