首页 > 其他 > 51单片机与PC串口通信程序及硬件电路图

51单片机与PC串口通信程序及硬件电路图

来源:互联网发布者:刘德华河北分华 更新时间: 2020/11/14

#include
#define BUFFERLEGTH 10
//-----------------------------------------------------------------
void UART_init(); //串口初始化函数
void COM_send(void); //串口发送函数
char str;
char j;
//-------------------------------------------------------------------
void main(void)
{
unsigned char i;
UART_init();
j=0; //初始化串口
for(i = 0;i < 10 ;i++)
{
COM_send(); //首先发送一次数据作为测试用

};

while(1);
}


//-------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: UART_init()串口初始化函数
// 函数功能: 在系统时钟为11.059MHZ时,设定串口波特率为9600bit/s
// 串口接收中断允许,发送中断禁止
//--------------------------------------------------------------------------------------------------
void UART_init()
{
//初始化串行口和波特率发生器
SCON =0x50; //选择串口工作方式1,打开接收允许
TMOD =0x20; //定时器1工作在方式2,定时器0工作在方式1
TH1 =0xfA; //实现波特率9600(系统时钟11.0592MHZ)
PCON = 0x80;
TR1 =1; //启动定时器T1
ET1 =0;
ES=1; //允许串行口中断
PS=1; //设计串行口中断优先级
EA =1; //单片机中断允许
}
//------------------------------------------------------------
void COM_send(void)
{
unsigned char point = 0;
for(point=0;str!="\0";point++) //连续发送二十位数据 //把缓存区的数据都发送到串口
{
SBUF=str;
while(!TI);
TI=0;
//str="\0";
}

}
//--------------------------------------------------------------
//--------------------------------------------------------------------------------------------------
// 函数名称: com_interrup()串口接收中断处理函数
// 函数功能: 接收包括起始位"S"在内的十位数据到数据缓冲区
//--------------------------------------------------------------------------------------------------
void com_interrupt(void) interrupt 4 using 3
{
unsigned char RECEIVR_buffer;
bit flag=1;
if(RI) //处理接收中断
{
RI=0; //清除中断标志位
RECEIVR_buffer=SBUF; //接收串口数据
str=SBUF;
if (RECEIVR_buffer == "$")
{ ES=0;
str="\0";
SCON =0x40; //接收不允许
COM_send(); //发送数据
ES=1;
j=0;
flag=0;
SCON=0x50; //接收允许
}
if(flag)
j++;
}
}

提问/讨论

这里还没有内容,您有什么问题吗?

我要提问/讨论

推荐帖子 最新更新时间:2024-11-13 09:13

求一道verilog的解答?
比赛用计时器(有复位按钮、start/pause按键、4个数码管) 用verilog语言变写 跪求!!! 求一道verilog的解答? 友情帮顶下。 这个很多例程都可以借鉴下,建议楼主百度下。 比数字钟还简单呢
 jbcfelix嵌入式系统
【工程源码】基于FPGA的音频采集+FFT频谱分析+VGA显示频谱值
非原创,网上下载的,不过进行了一点修改,原来的程序中用的是寄存器实现了9K的存储器,非常消耗逻辑资源,我给改成使用双口RAM存储了,资源立马降下来了,FFT使用的是VHDl格式的源码,不是IP核。 https://bbs.eeworld.com.cn/forum.php?
 小梅哥Altera SoC
NAND flash和NOR flash在软件支持方面的差别
NAND 闪存的缺点在于读速度较慢,它的I/O 端口只有8 个,比 NOR 要少多了。这区区 8 个I/O 端口只能以信号轮流传送的方式完成数据的传送,速度要比 NOR 闪存的并行传输模式慢得多。再加上 NAND 闪存的逻辑为电子盘模块结构,内部不存在专门的存储控制器,一旦出现
 13691982107移动便携
元器件背后的那些门门道道
对于从事电子行业的工程师来说,是每天都需要去接触,每天都需要用到的,但其实里面的门门道道很多工程师未必了解。这里列举出工程师门常用的十大电子元器件,及相关的基础概念和知识,和大家一起温习一遍。 一、电阻 作为电子行业的工作者,电阻是无人不知无人不晓的。它的重要性,毋庸
 Jacktang模拟与混合信号
modelsim的前仿真 FPGA(cyclone4)开发板心得第07贴
总感觉时序仿真才是fpga的重中之重.奈何网上找不到靠谱的资料,能借到的书也都版本过低,只能自己摸索了.. 用quartus生成的testbench,没有做任何改动.进入modelsim之后用force添加输入信号,但是很奇怪的是,有些输出信号会改变,有些却总是x signal是
 astwygFPGA/CPLD
脑子卡了...就两句代码的报错
用宏定义 一个stm32的IO口操作,然后....说不清楚啊,上代码说~ 先是这样, #define KEY_SET GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_0); 然后我又这样 if (KEY_SET==Bit_SET ) { LwIP_I
 yl20084784stm32/stm8

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版 版权声明

EEWORLD 电路图 站点相关: 下载中心 Datasheet 参考设计

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved