专栏中心

EEPW首页 > 专栏 > 第三十七课 串口通讯之查询法

第三十七课 串口通讯之查询法

发布人:0750long 时间:2009-06-17 来源:工程师 发布文章

第三十七课 串口通讯之查询法

在学习本节之前,希望大家对前一节的知识有所了解

程序讲解:

/*---------------------------------------------------------------*/
//串口通讯
//按下按钮,单片机发送数据"Hello! I am glad to see you again.\r"给主机
//单片机晶振:11.0592MHz
//波特率:   9600bps

/*---------------------------------------------------------------*/
#include<reg52.h>
#include<intrins.h>


/*---------------------------------------------------------------*/
sbit K1 = P3^3;  //对应开发板硬件


/*---------------------------------------------------------------*/
unsigned char tmp;   //单片机向电脑发送的数据
unsigned char code str[]={"Hello! I am glad to see you again.\r\n"};


/*---------------------------------------------------------------*/
void send_str(void); //发送字符串
void send_char(unsigned char txd);  //发送字符
void delayms(void);


/*---------------------------------------------------------------*/
void main(void)
{
 TMOD = 0x20;   //定时器1工作在方式2(8位,自动装载)用作波特率发生
 TH1  = 0xfD;        //9600bps
 TL1  = 0xfD; 

 SCON = 0x50;  //串口工作方式为1 允许接受  
 PCON = 0x00;  // SMOD="0"  波特率不变(为1时,波特率变为两倍)

 TR1 = 1;           //允许定时器1工作
 IE  = 0x00;        //禁止所有中断

 while(1)
 {
  if(K1==0){delayms();if(K1==0){send_str();while(K1==0);}}

  if(RI)                    //判断是串口否接收到数据
  {
   RI = 0;                //清除中断标志
   tmp = SBUF;      //保存串行口数据缓冲器的数据
   P1 = ~(tmp-48);  //送到P1显示
   send_char(tmp);  //将从电脑上传过来的数据回传到电脑上显示
  }
 }
}


/*---------------------------------------------------------------*/
//传送一个字符
void send_char(unsigned char txd)
{
 SBUF = txd;        //送到数据缓冲区
 while(!TI);            //等待上一数据发送完成
 TI = 0;                 //软件清除中断标志
}


/*---------------------------------------------------------------*/
//传送字符
void send_str(void)
{
 unsigned char i="0";
 while(str[i]!='\0')   //判断字符串是否发送完成
 {
  send_char(str[i]); //发送字符
  i++;                     //指向下一个字符
 }
}


/*---------------------------------------------------------------*/
//延时10000+0us 函数定义
void delayms(void)
{
  unsigned char i,j,k;
  for(i=5;i>0;i--)
  for(j=4;j>0;j--)
  for(k=248;k>0;k--);
}

本节重点:

1、串口通讯的初始化(SCON、PCON寄存器的设置)

2、发送接收数据缓冲区的理解(共用一个地址0x99),及串口串行发送数据的认识!

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

慕尼黑上海电子展热点追踪:如何为6G打造坚固的技术底座

2026-05-18

移动端DRAM合约价格再上涨

2026-05-18

一卡多号读卡器电路原理图

新一代的晶圆代工服务与你共赢新兴的中国半导体市场

视频 2009-12-21

慕尼黑上海电子展众多头部连接器展商已就位,共赴年度之约!

纳芯微推出固态继电器NSI7117,以卓越EMC性能应对汽车BMS系统电磁挑战

电容式触控IC解决方案及产品发展状况

视频 2009-12-21

工业级互连技术在恶劣环境中的可靠应用

U盘电路原理图

资源下载 2007-12-30

串口转红外的电路

鼠标电路原理图

资源下载 2007-12-30

慕尼黑上海电子展热点追踪:告别算力虚火,回归硬件原生

2026-05-18

利用高压母线转换模块 (BCM) 为LED驱动器供电

视频 2010-01-04

低功耗MCU的比较:nanoWatt XLP与MSP430

USB转并口、串口电路图(ch341).

Arm遭遇监管危机:FTC针对其技术授权启动反垄断调查

2026-05-18

MCP6V01热电偶自动调零参考设计

视频 2009-12-28

国家“算力网”:像用水用电一样用AI

2026-05-18

洞见2026:慕尼黑上海电子展聚焦10大产业热词!

2026-05-18

2026 年 AI 数据中心扩容潮 推动云服务商资本开支大涨 79%

更多 培训课堂
更多 焦点
更多 视频

技术专区