您的位置 首页 嵌入式

单片机与PC机通讯示例

#includeSTC89C51RC_RD_PLUS.h#defineSENDBUFSIZE0x0f#defineBR_19K20xfd#defineRMAX0x10//必须是2的整数次幂。21ic上

#include “STC89C51RC_RD_PLUS.h”

#define SENDBUFSIZE 0x0f
#define BR_19K20xfd
#defineRMAX0x10//有必要是2的整数次幂。21ic上看到的,好像是“刘长辈”的构思
unsigned char xdata*cpSendBufPtr;
unsigned charcFront;
unsigned charcBack;
unsigned charsendData;
bitcTranFlag;
unsigned charcTranData;
bitcRecFlag;
unsigned charcRecData;
bitcJudge;
unsigned chartemp;

void HardWareInit();
void Uart_Init(void);
void Uart_Init(void);
void COMM_Init(unsigned char cBaudRate, bit bSMOD); //初始化UART

//sfr AUXR = 0x8E;
//MODE COM4 19200,0,8,1;ASSIGN COM4 SOUT
//波特率为19200Hz,将串口接纳到的数据,从头转发出去?
//数据接纳速度或许大于发送速度,增加缓冲区,优先保存接纳的数据
main()
{
sendData=0;
cFront=0; //
cBack=0;//
cRecFlag=0; //还未接纳到数据
cTranFlag=1;//体系复位后,只需行列非空,随时能够发送数据
RS0 = RS1 = 0;// 运用寄存器组0
AUXR = 0x01; //制止ALE信号输出
EA = 0;
P1 = 0xFF;
P2 = 0xFF;
P3 = 0xFF;
P4 = 0xFF;

ES = 0;
TR1 = 0;
TMOD = TMOD & 0x0f | 0x20;
TH1 = BR_19K2;
TL1 = BR_19K2;////——————————————————————————————
PCON = 0x80; // 若SMOD=1, 波特率倍增

SCON = 0x50;// 8位
IP = 0x10;// 串口优先中止
ES = 1;

// wifi模块: 波特率19200/38400/57600/115200bps 数据位:8bits 校验位:无 中止位:1bits 流控 :无
EA = 1;
TR1 = 1;
//SBUF=0x12;
while(1)
{
/*
*/// 14 15 16 17 18 19 20 21
if(cRecFlag)
{
temp=((cFront+1)^cBack)&0x0f;

if(temp!=0)//循环链表还没有填满,能够持续增加数据
{
cFront=cFront+1;
cFront=cFront&(RMAX-1);
cpSendBufPtr[cFront]=cRecData;
cRecFlag=0;
}
}
if(cTranFlag)
{
temp=(cBack^cFront)&0x0f;//发送了一个新的数,这一个当地是cBack而不是cBack+1

if(temp!=0)//循环链表非空时能够发送数据
{

cBack=cBack+1;
SBUF=cpSendBufPtr[cBack];
cpSendBufPtr[cBack]=0x00;
cBack=cBack&(RMAX-1);
cTranFlag=0;
}
}
}
}

/*******************************************************************************
// 功用: UART完结数据收发发生中止程序
// 输入参数: 无
// 输出参数: 无
// 返回值: 无
*******************************************************************************/
void COMM_INT() interrupt 4 using 3
{
if(RI)//若正在处理承受的数据,则丢掉SBUF中的数据^cRecFlag
{
cRecData=SBUF;
cRecFlag=1;
RI=0;
}
if(TI)
{
cTranFlag=1;
TI=0;
}//发送完结,一起cTranData被赋新值*/
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/266727.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部