资源简介
本程序经过高手大哥调试正确可用 下载就可直接使用 精度准确
代码片段和文件信息
#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 人数统计
相关资源
- 51单片机 MPU6050读取并通过串口输出
- 旋转编码器的抗抖动计数电路
- msp430f5438的AD转换结果通过串口输送到
- 6/4开关磁阻电机开环运行程序基于5
- 旋转编码器解码程序
- esp8266 探测MAC地址,串口输出.环境
- 安防测试用 pelco-d、p协议测试用 串口
- stm32F407ADC电压采集串口输出程序
- STM32 MPU6050-DMP-欧拉角串口输出 滤波
- ESP8266串口输入字符串,同时用0.96寸
- STC15F2K60S2读取DHT11温湿度传感器数据串
- AS5040旋转编码器中文手册
- AB旋转编码器stm32嵌入式上的代码实现
- 基于STM32的HMC5883L+MPU6050串口输出测试
评论
共有 条评论