单片机简单的串口通信

发布者:电子创意达人最新更新时间:2017-01-15 来源: eefocus关键字:单片机  串口通信 手机看文章 扫描二维码
随时随地手机看文章

 1 /*-------------------------------------------

 2 简单的串口通信

 3 -------------------------------------------*/

 4 #include

 5 

 6 #define uint unsigned int

 7 #define uchar unsigned char

 8 

 9 

10 uchar flag,a,i;                    //标志接收串口中断标志,接收SBUF内容

11 uchar code table[]="I get ";

12 /*--------------------------------------------

13 延时函数 

14 ---------------------------------------------*/

15 void delay_ms(uint z)        

16 {

17     uint y;

18     while(z--)

19         for(y=110;y>0;y--);

20 }

21 /*--------------------------------------------

22 USAR初始函数 

23 ---------------------------------------------*/

24 void USRT_init()

25 {

26     TMOD=0x20;            //设置T1定时器工作方式2

27     TH1=0xfd;            //T1定时器装初值

28     TL1=0xfd;

29     TR1=1;                //启动T1定时器

30     REN=1;                //允许串口中断接收

31     SM0=0;                //设定串口工作方式

32     SM1=1;

33     EA=1;                //开总中断

34     ES=1;                //开串口中断

35 }

36 /*--------------------------------------------

37 串口中断程序

38 ---------------------------------------------*/

39 void ser()interrupt 4

40 {

41     RI=0;

42     a=SBUF;

43     flag=1;

44 }

45 /*--------------------------------------------

46 主函数

47 ---------------------------------------------*/

48 void main()

49 {

50     USRT_init();

51     while(1)

52     {

53         if(flag==1)                //检测到串口中断。表示有数据传过来了

54         {

55             ES=0;                //关闭串口中断,接下来要发送数据,如果不关闭每次发送之后串口中断都会执行又进入if(flag==1)那里,然后死循环

56             for(i=0;i<6;i++)    //将table[]中的前6个发送出去

57             {

58                 SBUF=table[i];

59                 while(!TI);        //每次等待发送完毕,再执行下一条

60                 TI=0;            //手动清0

61             }

62             SBUF=a;                //将收到的数据发送出去

63             while(!TI);

64             TI=0;

65             ES=1;

66             flag=0;

67         }

68     }

69 }


关键字:单片机  串口通信 引用地址:单片机简单的串口通信

上一篇:nRF24L01 无线模块 测试 按键-灯-远程控制
下一篇:SPI nRF24L01无线 [可以放在2个单片机里实现通信]

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

基于51单片机驱动A4988实现步进电机逆时针转动
一、简介 A4988 是一款完全的微步电动机驱动器,带有内置转换器,易于操作。该产 品可在全、半、1/4、1/8 及 1/16 步进模式时操作双极步进电动机,输出驱动 性能可达 35 V 及 ±1 A。A4988 包括一个固定关断时间电流稳压器,该稳压器 可在慢或混合衰减模式下工作。转换器是 A4988 易于实施的关键。只要在“步 进”输入中输入一个脉冲,即可驱动电动机产生微步。无须进行相位顺序表、高 频率控制行或复杂的界面编程。 二、接线 典型接线图 实际接线 此处为方便 MS1-MS3不接ENABLE 低电平有效 此处不接 有需要可自行连接配置 A4988 模块 STC89C52RC 步进电机 电源 DIR P
[单片机]
基于51<font color='red'>单片机</font>驱动A4988实现步进电机逆时针转动
51单片机学习笔记6 -- 定时器中断
1.引脚复用 通过原理图可以发现定时器0(T0)和定时器1(T1)是P3.4引脚和P3.5引脚的复用功能,当将这两个引脚配置为定时器功能时,引脚外接的传感器(模块)将不能正常使用,即引脚同一时间只能作为一个功能使用(普通I/O或复用功能) T0、T1是两个16位定时器/计数器,每经过1个机器周期内部的16位计数寄存器的值加1,当计数器装满时会溢出,在定时模式时单次最大的定时时间是 65535*1.085us 的时间(单位us) 2.定时器配置 定时器0配置需要用到的寄存器(TCON、TMOD、TL0、TH0) 1.定时器/计数器控制寄存器TCON TCON为定时器/计数器T0、T1的控制寄存器,同时也锁存T0、T1溢出
[单片机]
51<font color='red'>单片机</font>学习笔记6 -- 定时器中断
ADC0832模数转换MSP430单片机程序+电路图
下面是电路图: ADC0832封装图 ADC0832与单片机连接图 ADC0832时序图 程序源码下载: #include msp430f2121.h #define DO (P1IN&BIT7) #define uchar unsigned char #define uint unsigned int /*********************************************** sbit cs=P2^0; sbit clk=P2^1; sbit DI=P2^2; sbit DO=P2^6; ***************************************
[单片机]
ADC0832模数转换MSP430<font color='red'>单片机</font>程序+电路图
PIC单片机将2个16进制数转换为5位十进制数并显示
#INCLUDE P16F877.inc W_TEMP EQU 20H ; 实际上20H、A0H、120H和1A0H STATUS_TEMP EQU 21H ;在体0中建立保护单元 PCLATH_TEMP EQU 22H ;在体0中建立保护单元 ORG 000H GOTO A1 ORG 004H;定时中断入口地址 GOTO ZD01; ORG 0CH A1 MOVLW 1;位1显示数 MOVWF 5AH; MOVLW 2;位2显示数 MOVWF 5BH; MOVLW 3;位3显示数 MOVWF 5CH; MOVLW 4;位4显示数 MOVWF 5DH; MOVLW 4;显示位数 MO
[单片机]
AT89S51单片机与82C55接口芯片的设计
1.硬件接口电路 下图所示为AT89S51单片机扩展一片82C55的电路图。图中,74LS373是地址锁存器,P0.1、P0.0经74LS373与82C55的地址线A1、A0连接;P0.7经74LS373与片选端CS相连,其他地址线悬空;82C55的控制线RD(的反)、WR(的反)直接与AT89S51单片机的RD(的反)和WR(的反)端相连;AT89S51单片机的数据总线P0.0~P0.7与82C55的数据线D0~D7连接。 2.确定82C55端口地址 图中82C55只有3条线与AT89S51单片机的地址线相接,片选端CS、端口地址选择端Al、A0,分别接于P0.7、P0.1和P0.0,其他地址线全悬空。显然只要保证PO.7为
[单片机]
AT89S51<font color='red'>单片机</font>与82C55接口芯片的设计
16位Σ-Δ A/D转换器AD7705与微控制器的接口设计
   AD7705是 AD公司新推出的16位Σ-ΔA/D转换器。器件包括由缓冲器和增益可编程放大器(PGA)组成的前端模拟调节电路,Σ-Δ调制器,可编程数字滤波器等部件。能直接将传感器测量到的多路微小信号进行A/D转换。这种器件还具有高分辨率、宽动态范围、自校准、优良的抗噪声性能以及低电压低功耗等特点,非常适合仪表测量、工业控制等领域的应用。它采用三线串行接口,有两个全差分输入通道,能达到0.003%非线性的16位无误码数据输出,其增益和数据输出更新率均可编程设定,还可选择输入模拟缓冲器,以及自校准和系统校准方式。工作电压3 V或5 V。3 V电压时,最大功耗为1 mW,等待模式下电源电流仅为8 μA。    1 内部结构
[模拟电子]
单片机处理触摸按键例程
//文件touchbutton.h #ifndef _TOUCHBUTTON_H_ #define _TOUCHBUTTON_H_ //=========宏定义=========================================== #define DEF_WATCH_TKREFER //查看参考 -用于测试 //=========================================================== #define V_REFER 1 //AD值超过此值 更新参考值 #define V_PRESS 7 //AD值-参考 大于此
[单片机]
<font color='red'>单片机</font>处理触摸按键例程
单片机内部模拟比较器的应用
一般来说,内部带A/D转换器的单片机价格都比较昂贵,而且一般只有8到10位的分辨率,这在高分辨率要求的场合显然不适用;而普通的单片机则根本没有A/D转换器。随着现代电子技术的发展,出现了一些体积小、内含模拟比较器的单片机,如ATMAL的AT89C2051、ZILOG的Z86E04、MICROCHIP的PIC16C620等,这些单片机在使用时连接比较器的端口一般只作普通I/O使用,而对其内置的模拟比较器的应用却很少。下面以AT89C2051为例,谈谈利用单片机内置模拟比较器来构成A/D转换器的新方法。 1 硬件转换电路 AT89C2051是MCS51单片机系列中的一种,它虽然只有20个引脚,却集成了51系列单片机的标准内核,
[模拟电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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