51单片机串口通信 采用中断方式

发布者:朝霞暮雨最新更新时间:2018-06-09 来源: eefocus关键字:51单片机  串口通信  中断方式 手机看文章 扫描二维码
随时随地手机看文章
  1. /*-----------------------------------------------  

  2. 功能: 连接串口到电脑,下载该程序,打开电源  

  3.         打开串口调试助手,将波特率设置为2400,无奇偶校验  

  4.         晶振12MHz,发送和接收使用的格式相同,如都使用  

  5.         字符型格式,设置正确后接受框可以显示出:  

  6.         The UART test, 请在发送区输入信息  

  7. ------------------------------------------------*/  

  8.   

  9. #include //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义                          

  10.   

  11. /*------------------------------------------------  

  12.                    函数声明  

  13. ------------------------------------------------*/  

  14. void SendStr(unsigned char *s);  

  15.   

  16. /*------------------------------------------------  

  17.                     串口初始化  

  18. ------------------------------------------------*/  

  19. void InitUART  (void)  

  20. {  

  21.   

  22.     SCON  = 0x50;               // SCON: 模式 1, 8-bit UART, 使能接收    

  23.     TMOD |= 0x20;               // TMOD: timer 1, mode 2, 8-bit 重装  

  24.     //TH1   = 0xF3;               // TH1:  重装值2400    

  25.       

  26.         TH1=0xfd;  

  27.       TL1=0xfd; //11.0592MHZ晶振 9600波特率 对应应装初值  

  28.       

  29.     TR1   = 1;                  // TR1:  timer 1 打开                           

  30.     EA    = 1;                  //打开总中断  

  31.    // ES    = 1;                  //打开串口中断  

  32. }                              

  33. /*------------------------------------------------  

  34.                     主函数  

  35. ------------------------------------------------*/  

  36. void main (void)  

  37. {  

  38.   

  39. InitUART();  

  40.   

  41. SendStr("The UART test, 请在发送区输入信息");  

  42.   

  43. ES    = 1;                  //打开串口中断  

  44. while (1)                         

  45.     {  

  46.       

  47.     }  

  48. }  

  49.   

  50. /*------------------------------------------------  

  51.                     发送一个字节  

  52. ------------------------------------------------*/  

  53. void SendByte(unsigned char dat)  

  54. {  

  55.  SBUF = dat;  

  56.  while(!TI);  

  57.       TI = 0;  

  58. }  

  59. /*------------------------------------------------  

  60.                     发送一个字符串  

  61. ------------------------------------------------*/  

  62. void SendStr(unsigned char *s)  

  63. {  

  64.  while(*s!='\0')// \0 表示字符串结束标志,通过检测是否字符串末尾  

  65.   {  

  66.   SendByte(*s);  

  67.   s++;  

  68.   }  

  69. }  

  70. /*------------------------------------------------  

  71.                      串口中断程序  

  72. ------------------------------------------------*/  

  73. void UART_SER (void) interrupt 4 //串行中断服务程序  

  74. {  

  75.     unsigned char Temp;          //定义临时变量   

  76.      

  77.    if(RI)                        //判断是接收中断产生  

  78.      {  

  79.       RI=0;                      //标志位清零  

  80.       Temp=SBUF;                 //读入缓冲区的值  

  81.       P1=Temp;                   //把值输出到P1口,用于观察  

  82.       SBUF=Temp;                 //把接收到的值再发回电脑端  

  83.      }  

  84.    if(TI)                        //如果是发送标志位,清零  

  85.      TI=0;  

  86. }


关键字:51单片机  串口通信  中断方式 引用地址:51单片机串口通信 采用中断方式

上一篇:51单片机之中断的实现过程
下一篇:Keil C51重定向printf到串口

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

51单片机C语言程序100例分析(4)外设
和我预想的一致,接下来该涉及外设了! /******************************************************** *********数码管显示*****数码管显示******************** 数码管显示****************数码管显示 ***************************************************/ //实例60:用LED数码显示数字5 #include reg51.h //包含51单片机寄存器定义的头文件 void main(void) { P2=0xfe;//P2.0引脚输出低电平,数码显示
[单片机]
基于89C51单片机的485总线接口的软硬件设计提高可靠性和稳定性
引言 近年来,由于人们防火意识的不断增强以及有关法律、法规的不断完善,火灾自动报警系统得到迅猛发展和广泛应用,已成为预防火灾、保障人民生命和财产安全的最重要手段。这就要求火灾自动报警系统必须具有很高的可靠性和稳定性。 目前,国内火灾报警系统多采用RS485半双工异步通信总线进行联网,实现火灾报警控制器之间,以及火灾报警控制器与火灾显示盘之间的通信。但在实际使用中,往往由于设备数量多、通信线路远以及现场的各种干扰等,造成通信可靠性、稳定性不高,致使联网系统的质量得不到保证。 在火灾自动报警系统的联网设计中,经大量试验,发现在使用RS485总线时,如果简单地按常规方式设计电路,那么在实际工程中可能存在以下两个问题:一是通信数据
[单片机]
基于89C<font color='red'>51单片机</font>的485总线接口的软硬件设计提高可靠性和稳定性
基于51单片机的直流数字电压表(0-5V)
利用串行A/D转换器TLC549对输入信号电压源进行采集转换成数字信号给 51单片机 ,经单片机进行数据处理后给1602液晶显示。 误差小于1%. #include reg52.h #include intrins.h #define uint unsigned int #define uchar unsigned char uchar LCD ; //电压数据转换成LCD1602液晶字符显示 uint Volt; sbit DO = P1^0; //时钟 sbit CS = P1^1; //片选 sbit CLK = P1^2; //数据输出 sbit RS = P2^0; //160
[单片机]
基于<font color='red'>51单片机</font>的直流数字电压表(0-5V)
51单片机键盘接口电路(含源程序)
键盘是由若干按钮组成的开关矩阵,它是单片机系统中最常用的输入设备,用户能通过键盘向计算机输入指令、地址和数据。一般单片机系统中采和非编码键盘,非编码键盘是由软件来识别键盘上的闭合键,它具有结构简单,使用灵活等特点,因此被广泛应用于单片机系统。 按钮开关的抖动问题 组成键盘的按钮有触点式和非触点式两种,单片机中应用的一般是由机械触点组成的。在下图中,当开 键盘结构图 图1 图2 关S未被按下时,P1。0输入为高电平,S闭合后,P1。0输入为低电平。由于按钮是机械触点,当机械触点断开、闭合时,会有抖动动,P1。0输入端的波形如图2所示。这种抖动对于人来说是感觉不到的,但对计算机来说,则
[单片机]
<font color='red'>51单片机</font>键盘接口电路(含源程序)
基于51单片机的GSM智能快递柜设计
一.硬件方案 本设计基于STC89C52单片机的快递货柜模拟设计GSM短信发送验证码。该装置主要由单片机、电源模块、继电器电路、LED灯光报警模块、控制模块、GSM模块、键盘模块、LCD显示模块、机械开关等组成,借助成熟的GSM移动网络,当货物柜检测到快递的存在,会自动发送验证码给用户手机上,真正实现了远距离、高效率传递信息。 主要由51单片机+LCD1602液晶+GSM模块+按键+继电器设计而成;如图: 二.设计功能 (1)采用LCD1602液晶显示当前快递柜的状态。 (2)有数字按键(0-6)可以输入短信验证码,进行开柜。 (3)快递员将货物存入柜子中,可以通过GSM模块向指定人发送随机的验证码。 (4)验证码成功打开
[单片机]
基于<font color='red'>51单片机</font>的GSM智能快递柜设计
51单片机计时器和中断
计时器,中断 ############################ EX0(IE.0),外部中断0允许位; ET0(IE.1),定时/计数器T0中断允许位; EX1(IE.2),外部中断0允许位; ET1(IE.3),定时/计数器T1中断允许位; ES(IE.4),串行口中断允许位; EA (IE.7), CPU中断允许(总允许)位。 初始化对定时计数器操作: 第一步: 对TMOD赋值,以确定T0,T1的工作方式 第二部: 计算初值,写入TH0,TL0或者TH1,TL1 第三步: 中断方式,对IE赋值开放中断 第四步: 使TR0或者TR1置位,启动定时计数器工作方式是定时或者计数 TMOD: 低4位控制T
[单片机]
基于C8051单片机的无线心电监护系统设计
   1 引言   随着经济的快速发展和人们生活水平的不断提高,健康已成为人们关注的焦点。心脏疾病是危害人类健康的一大杀手,其偶然性与突发性的特点使得心电监护系统具有重要的临床应用价值。由于传统的心电监护仪不能进行远距离的实时监护,所以便携式无线心电监护系统显得更加重要。无线医疗监护系统主要由生理信息与数据采集、无线数据通信、控制和显示等单元组成。目前国内已有用于临床的无线心电监护产品,但其采用的方案大都是“采集器+发送器(PDA或手机)”,从成本上看其价格昂贵;从无线传输方面看,大多是将心电数据以模拟信号传输,这必然导致信号在传输过程中发生失真。此外,由于人体电阻差异导致心电信号在1~10 mV之间变动,固定放大倍数系统缺乏适
[单片机]
MCS-51单片机控制跑马灯的三种方法
  在MCS一51单片机的控制系统中,它的四个并行8位输入输出端口P0一P3是我们经常使用的。在并行端口的编程学习中,“跑马灯”是单片机并行端口输出控制的典型实例。所谓跑马灯,是指将八个发光二极管分别连接到单片机的某一并行端口的八根线上,通过编程控制这八个发光二极管从低到高或从高到低依次点亮。      图1 跑马灯电路图   如图1所示,将8个发光二极管阴极接到MCS一51单片机P1端口的8根端口线上,阳极通过限流电阻接+5V电源。要让发光二极管点亮,则对应的端口线应该为低电平(‘’0’);而要让其熄灭,对应的端I=I线应该为高电平(“1”)。由此,我们假定“跑马灯”由端I=1的低位向高位轮流点亮.可以得到如下状态:   表
[单片机]
MCS-<font color='red'>51单片机</font>控制跑马灯的三种方法
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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