资源简介
本程序经过高手大哥调试正确可用 下载就可直接使用 精度准确

代码片段和文件信息
#include “reg51.h“
#include “intrins.h“
typedef unsigned char BYTE;
typedef unsigned int WORD;
#define UART_IDLE 0
#define UART_SND_BUSY 1
#define UART_RCV_BUSY 1
#define FOSC 11059200L
//缓冲区大小
#define RECV_BUFFER_SIZE 5
//sbit bit9 = P2^2;
bit busy;
//接收缓冲数据结构
struct RecvBuffer
{
BYTE buffer[RECV_BUFFER_SIZE];//使用数组定义缓存大小
long out;
long in;
long rbufCount;//缓存大小计数
};
struct RecvBuffer rbuf;
//--------------------------------------------------------
//发送程序
//--------------------------------------------------------
void SendData(BYTE dat)
{
while(busy != UART_IDLE);
busy = UART_SND_BUSY;//清标志位
SBUF = dat;
}
//--------------------------------------------------------
//初始化发送的数据
//--------------------------------------------------------
//发送字符串
void SendString(char *s)
{
while(*s)
{
SendData(*s++);
}
}
//---------------------------------------------------------
//接收缓存区定义
//---------------------------------------------------------
//uart接收数据缓冲区
void rbuf_init(struct RecvBuffer * rbuf);
long rbuf_conten_size(struct RecvBuffer * rbuf);
void rbuf_clear(struct RecvBuffer * rbuf);
void delay(long count);
//-----------------------------------------------------
//-----------------------------------------------------
//uart接收缓冲 初始化
void rbuf_init(struct RecvBuffer * rbuf)
{
rbuf_clear(rbuf);
}
//uart接收缓冲 清空缓冲
void rbuf_clear(struct RecvBuffer * rbuf)
{
rbuf->rbufCount = rbuf->out = rbuf->in = 0;
}
//清空串口数据
void uartFlash()
{
rbuf_clear(&rbuf);
}
//--------------------------------------------------------
//--------------------------------------------------------
//uart接收缓冲 获取数据大小
long rbuf_conten_size(struct RecvBuffer * rbuf)
{
return rbuf->rbufCount;
}
//----------------------------------------------------------------
//uart接收缓冲 从缓冲读取
//----------------------------------------------------------------
long rbuf_write_to_buf(struct RecvBuffer * rbufBYTE * bufferlong count)
{
//计算COPY的大小
long i;
long rbufCount = rbuf_conten_size(rbuf);//-----?
long cpyCount;
//rbuf没有数据
if(rbufCount == 0)
{
return 0;
}
//不拷贝数据
if(count == 0)//count没有赋初值?
{
return 0;
}
//保证要拷贝的大小,不超过缓冲区
cpyCount = rbufCount > count? count : rbufCount;
for(i = 0 ; i < cpyCount ; i++)
{
//COPY 串口数据更新rbuf
buffer[i] = rbuf->buffer[rbuf->out];
++rbuf->out;
rbuf->out = rbuf->out % RECV_BUFFER_SIZE;
}
//
while(busy == UART_RCV_BUSY);
ES = 0;
rbuf->rbufCount -= cpyCount;
ES = 1;
return cpyCount;
}
//---------------------------------------------------------
//串口初始化
//---------------------------------------------------------
void uartInit(long baud)
{
TMOD= 0x20;//定时器工作方式选择
SCON=0x50;//串口工作方式选择
TH1= TL1 = -(FOSC/12/32/baud);//装载计数初值
TR1 = 1;//开启定时器1
ES = 1;
EA = 1;
rbuf_init(&rbuf);
}
//----------------------------------------------------------
//接收
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4231 2012-11-24 19:02 光电编码\51uart.c
文件 604 2012-11-26 13:16 光电编码\51uart.h
文件 8878 2012-11-28 21:15 光电编码\51uart.LST
文件 10270 2012-11-28 21:15 光电编码\51uart.OBJ
....... 50521 2012-11-24 17:10 光电编码\guangdian.uvopt
....... 0 2012-11-24 17:09 光电编码\guangdian_uvproj.bak
文件 3954 2012-11-28 21:15 光电编码\HXA.c
文件 16253 2012-11-28 21:15 光电编码\光电编码
文件 3253 2012-11-28 20:56 光电编码\光电编码.c
文件 5970 2012-11-28 21:15 光电编码\光电编码.hex
文件 48 2012-11-28 21:15 光电编码\光电编码.lnp
文件 10417 2012-11-28 21:15 光电编码\光电编码.LST
文件 20408 2012-11-28 21:15 光电编码\光电编码.M51
文件 7674 2012-11-28 21:15 光电编码\光电编码.OBJ
文件 169 2012-11-28 21:16 光电编码\光电编码.plg
....... 57310 2012-11-28 21:16 光电编码\光电编码.uvopt
....... 13413 2012-11-24 19:08 光电编码\光电编码.uvproj
....... 57306 2012-11-28 21:15 光电编码\光电编码_uvopt.bak
....... 13247 2012-11-24 17:09 光电编码\光电编码_uvproj.bak
目录 0 2012-11-28 21:16 光电编码
----------- --------- ---------- ----- ----
283926 20
- 上一篇:ft3i0y.rar
- 下一篇:opencv 人数统计
相关资源
- STM32串口输出MPU-9250九轴传感器
- STM32 5路ad采集 串口输出
- 旋转编码器脉冲计数及转向检测.zip
- stm32 mpu6050 串口输出
- SerialChart一款可以实时输出串口数据并
- mpu6050互补滤波算法角度串口输出stm
- stm32+MPU6050+GPS+SD卡读写+ad采集+串口输
- 基于STM32F4系列的4个编码器4倍频的转
- KY-040 旋转编码器
- STM32F103标准库 旋转编码器测速和读取
- 通过串口波形软件显示单片机串口输
- STM32F103C8 2路PWM捕捉 2路串口输出
- stm32超声波读取数据串口输出数据
- 基于stm32的超声波测距串口输出US100模
- stm32读取ADXL345加速度传感器数据IIC协
- STM32旋转编码器程序
- EC11_stm32的程序
- 基于位置控制、速度控制、位移控制
- 欧姆龙旋转编码器技术篇.pdf
- STM32F103硬件i2c读取bmp085串口输出
- MPU6050+串口输出
- STM32串口输出MPU-9250测试过
- 基于STC15W204S的高低电平时间检测串口
- stm32+jy901+hc06+角度准确输出+上位机3
- TCP转串口socket转SerialPort
- FPGA 编码器输入信号4倍频处理
- 一种高精度旋转编码器单片机计数电
- 51单片机 MPU6050读取并通过串口输出
- 旋转编码器的抗抖动计数电路
- msp430f5438的AD转换结果通过串口输送到
评论
共有 条评论