单片机与PC机通信示例

发布者:csZhou最新更新时间:2016-09-14 来源: eefocus关键字:单片机  PC机  通信示例 手机看文章 扫描二维码
随时随地手机看文章
#include "STC89C51RC_RD_PLUS.h"

#define  SENDBUFSIZE  0x0f
#define  BR_19K2   0xfd
#define  RMAX   0x10 //必须是2的整数次幂。21ic上看到的,好像是“刘前辈”的创意
unsigned char xdata *cpSendBufPtr;
unsigned char  cFront;
unsigned char  cBack;
unsigned char  sendData;
bit     cTranFlag;
unsigned char  cTranData;
bit     cRecFlag;
unsigned char  cRecData;
bit     cJudge;
unsigned char  temp;

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被赋新值*/
}

关键字:单片机  PC机  通信示例 引用地址:单片机与PC机通信示例

上一篇:DAC0832产生三角波与正弦波
下一篇:关于模拟串口的波特率的分析研究

推荐阅读最新更新时间:2024-03-16 15:09

基于单片机的脑波治疗仪的软件设计研究
   O 引言   依据现代脑电生理神经心理学的研究,脑波活动依据特定波长主要分为四组模式:β、α、θ、δ,脑波活动的某一模式与特定的精神状态相关联。脑波治疗仪是新型的医疗仪器,它依据脑波同步及脑波频率引导原理,采用生物信息 模拟 技术,用电脑模拟各种频率的脑电波,并调制成脑波音乐信号反馈给使用者,影响调节人体的脑电活动水平及兴奋水平,使大脑经常处于特定的脑波状态。目前常用的脑波软件产生方法有调用函数算法生成和模拟DSS采样输出的方法,本文采用基于普通单片机的模拟DSS采样输出的方法对系统进行设计。    1 系统硬件介绍   如图l所示,系统由单片机,程序存储器,数模转换器,放大滤波电路,立体声耳机,节目指示灯,节目时间
[单片机]
基于单片机的交流电机软启动器及其在机床电力拖动中应用
  众所周知,三相异步电动机以其低成本、高可靠性和易维护等特点,被广泛应用在各个行业。特别是 机床 设备中,它作为一种主要的动力设备,常常用来拖动主轴、工作台、冷却泵、油泵等装置。但是它在直接启动时,由于启动电流高达额定电流的5~7倍,所以会对电网及负载造成很大的冲击,影响了周边电器的工作,增加了机械传动部件的磨损,降低了设备的寿命。这里所介绍的基于 单片机 AT89C5l的三相异步电动机 软启动器 不但可以解决上述问题,从本质上改善交流电动机的启动特性,而且具有节电运行、过流保护、过载保护、缺相保护等功能。    1 工作原理及硬件构成   该软启动器的硬件电路结构框图如图1。   启动时(接到启动指令),从单片机输出
[单片机]
基于<font color='red'>单片机</font>的交流电机软启动器及其在机床电力拖动中应用
贸泽开售Renesas Electronics最新款32位单片机
半导体和电子元件的全球授权分销商贸泽电子 (Mouser Electronics) 即日起备货Renesas Electronics的RX130系列32位单片机。RX130单片机采用全新的电容式触控专有技术,提高了敏感度与耐用性,非常适合采用非传统触控材料设计的装置或需要在潮湿或肮脏环境下工作的装置,例如人机界面、家庭厨房和浴室、 电机控制及工厂应用。 贸泽电子供应的Renesas RX130单片机搭载一个50-DMIPS RX内核以及最高512 KB的闪存,无需等待,便可立即执行代码。除了允许扩展内存外,此系列单片机还将封装增加到了100个引脚,以提高性能并提升与RX231/RX230 系列触控式单片机的兼容性。  
[半导体设计/制造]
基于89C51单片机串行A/D驱动程序的设计
  串行A/D转换器转换后的结果是以串行方式输出,数字量以串行方式输出可简化系统的连线,缩小电路板的面积,节省系统的资源。下面以TLC2543为例,介绍串行A/D驱动程序的设计。      89C51单片机与TLC2543芯片的接口电路图如下图所示。TLC2543的3个控制输入端CS(的反)、I/OCLOCK、DATAINPUT和一个数据输出端DATAOUT分别与单片机的P1.4、Pl.l、P1.2和P1.3引脚相连,单片机采用的晶振频率为12MHz。      电路设计时,我们将TLC2543有两个基准电压输入REF+、REF-分别与电源(VCC)、GND相连,这样连接可保证数字输出的满度和零点,但在高精度的测量要求中,如果VC
[单片机]
基于89C51<font color='red'>单片机</font>串行A/D驱动程序的设计
AD7751的典型应用
由AD7751和89C51单片机构成电能计量系统的简化电路如图所示.C1~C4为+5V电源的退耦电容.R端经上拉电阻R1接UDD使R=1,令复位端失效.由3.579545MHZ的石英晶体与电容器C3、C6构成晶振电路,向AD7751提供时钟。C7为UREF端的消噪声电容。89C51中P1口的P1.0~P1.5分别用来设定G0、G1、S0、S1和SCF端的逻辑电平。P2口接键盘。 由AD7751输出的FC信号,同时送给89C51的TO定时器、T1定时器的输入端。现利用TO定时器测量频率FC+T1定时器则对FC脉冲进行累加计数,再通过程序计算出有功功率和在一定时间内所消耗的电能。P、W的串行数据通过TXD端分别发送给显示卡、接口卡
[单片机]
AD7751的典型应用
基于STM8L15x单片机的串口printf输出程序分享
这里我们以STM8L15x系列单片机使用ADC内部参考电压测量VDD电压并将电压值value通过窗口打印为例编写程序,(STM8L使用ADC内部参考电压通道测量VDD电压) usart.h头文件: #ifndef _usart_H #define _usart_H #include “stm8l15x.h” void Usart_Init(void); #endif usart.c源文件: #include “usart.h” void Usart_Init(void) { CLK_PeripheralClockConfig (CLK_Peripheral_USART1,ENABLE); //开启USART1时钟 USART_
[单片机]
基于STM8L15x<font color='red'>单片机</font>的串口printf输出程序分享
基于STM32的 USB设计 --单片机程序篇
   首先,我们来看看usb的工作过程。   当usb设备接入到主机时,主机开始枚举usb设备,并向usb设备发出指令要求获取usb设备的相关描述信息,其中包括设备描述(device descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。   usb通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步
[单片机]
在进行单片机设计时需要注意哪些事项
1.降低外时钟频率 外时钟是高频的噪声源,除能引起对本应用系统的干扰之外,还可能产生对外界的干扰,以8051单片机为例最短指令周期1μs时,外时钟是12MHz。而同样速度的Motorola单片机系统时钟只需4MHz微控制器产生的最有影响的高频噪声大约是时钟频率的3倍。 2.低噪声系列单片机 改进的技术将电源、地安排在两个相邻的引脚上,外部去耦电容在PCB设计上更容易安排。 3.时钟监测电路、看门狗技术与低电压复位 时钟监控有效与省电指令STOP是一对矛盾。只能使用其中之一。 看门狗技术是监测应用程序中的一段定时中断低电压复位技术是监测单片机电源电压,当电压低于某一值时产生复位信号。由于单片机技术的发展,单片机本身对电源电压
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
更多每日新闻
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved