单片机串行口是什么意思_单片机串行口什么意思? - CSDN
  • 串口和并口都是用来做数据传递的 ,...如A表示0x55,即A8~A1依次为01010101。 单片机启动时有默认的总线速率,一般烧录程序会用外接晶振重新配置总线速率。然后根据要实现的功能配置相关的寄存器。然后就是主程序了
    串口和并口都是用来做数据传递的 ,串口是用连续的高低位表示数据,如0x55就是连续的01010101,高低电平间隔时间相等。具体间隔由总线速度和你配置的串口波特率有关。并口是用同一时刻几个端口的状态组合表示数据的。如A口表示0x55,即A8~A1依次为01010101。
    单片机启动时有默认的总线速率,一般烧录程序会用外接晶振重新配置总线速率。然后根据要实现的功能配置相关的寄存器。然后就是主程序了。主程序就可以自由实现算法等了。
    展开全文
  • 51单片机串行口中断的使用初始化中断服务程序主程序 初始化 void SCON_init() { SCON = 0x50; //0101 0000 TMOD = 0x20; //0010 0000 TH1 = 256 - 3; TL1 = 256 - 3; ES = 1; EA = 1; TR1 = 1; } 上一篇有...

    51单片机串行口中断的使用

    这个程序的功能是,通过上位机发送数字给单片机,然后再由单片机把这个数字返回给上位机。
    

    初始化

        void SCON_init()
    {
    	SCON = 0x50; //0101 0000
    	TMOD = 0x20; //0010 0000
    	TH1 = 256 - 3;
    	TL1 = 256 - 3;
    	ES = 1;
    	EA = 1;
    	TR1 = 1;
    }
    

    上一篇有介绍:
    1、串行口寄存器SCON用于控制串行口的工作方式
    2、波特率发生器由定时器T1构成

    中断服务程序

    void zhongduan4() interrupt 4
    {
    	if(RI == 1)
    	{
    		recdat = SBUF;
    		RI = 0;
    		flag = 1;
    	}
    	if(TI == 1)
    	{
    	    TI = 0;
    		SBUF = 	recdat;
    		while(!TI);		//等待数据全部发送完成
    		TI = 0;
    	}
    }
    

    1、第一个TI = 0 是将TI恢复初始状态,这样将数据发送到SBUF时,TI能够正常置位
    2、第二个TI = 0 时清除中断产生的标志位

    主程序

    void main()
    {
    	SCON_init();
    	while(1)
    	{
    		if(flag == 1)
    		{
    			TI = 1;
    			flag =0;
    		}
    
    	}
    }
    

    TI = 1 目的是强行进入中断,在中断里面实现数据的发送,这样就不会那么杂乱

    展开全文
  • 基本概念51单片机串行通讯:1、串行口有两个数据缓冲寄存器SBUF,一个是发送缓冲寄存器,一个是接收缓冲寄 存器。2、串行口工作方式有2种,1为查询法,2为中断法。这里用中断法。3、串口的初始化:void init(void) ...

    基本概念

    51单片机串行通讯:

    1、串行口有两个数据缓冲寄存器SBUF,一个是发送缓冲寄存器,一个是接收缓冲寄 存器。

    2、串行口工作方式有2种,1为查询法,2为中断法。这里用中断法。

    3、串口的初始化:

    void init(void)				//串口初始化
    {
    	 EA=0;          //暂时关闭总中断
    	 TMOD=0x20;    //定时器1工作在模式2--常数自动重装的8位定时器工作模式
    	 SCON=0x50;     //0101 0000 串口工作在方式1--8位UART,波特率由T1和SMOD位决定
    		 TH1=256-jingzhen/(botelv*384);   //计算定时器重装值
    		 TL1=256-jingzhen/(botelv*384);
    	 PCON|=0x00;    //0000 0000  SMOD=0,串口波特率不加倍
    		 EA=1;         //总中断允许
    		 ES=1;         //Enable Serial   串行中断允许     
    		 TR1=1;        //启动定时器1
    		 REN=1;        //SCON中的 REN=1 (软件置1)允许串行口接收数据 
    	 
    }

    4、例如串行口工作在方式一时:SCON=0x50;

    如图所示:

    void send(unsigned char d)      //发送一个字节的数据,形参d即为待发送数据。
    	 			{
    				 SBUF=d; //将数据写入到 串口发送缓冲器
    				 sending=1;	 //设置发送标志,说明收到数据了
    				 while(sending); //等待发送完毕
    				}

    5、中断什么时候产生?--如上图,中断由硬件决定,当硬件置TI=1后,就触发了串口中断,因此,51程序里,中断函数是没有调用的,中断是由硬件决定的。当发送下一个数据时,再存入SBUF缓冲器,存完后由硬件将TI置1,再进入中断服务程序,判断RI或TI的情况。

    void uart(void) interrupt 4		 //串口发送中断
    						 {
    						 if(RI)    //如果数据接收完了,软件将RI清0
    						 {
    						  RI=0;   
    						 }
    						 else      //还没接收完的话,不让发送
    						 {
    						  TI=0;			 ///保持接收
    						  sending=0;  //清正在发送标志
    						 }
    						}

    2、方式1输入:


    展开全文
  • 单片机串行口结构   串行口结构如上图   发送时,SBUF中写入数据后,串行口通过发送控制器,将SBUF中的数据逐个逐位地通过串行输出口TXD引脚逐个发出,当一个字节发送结束后,触发TI中断位,通知单片机发送结束...
    单片机串行口结构

    在这里插入图片描述
      串行口结构如上图
      发送时,SBUF中写入数据后,串行口通过发送控制器,将SBUF中的数据逐个逐位地通过串行输出口TXD引脚逐个发出,当一个字节发送结束后,触发TI中断位,通知单片机发送结束
      接收时,先向REN引脚写1,外部引脚RXD会实时检测电平变化,当满足串行接收数据的条件时,会逐位接收数据并保存到SBUF,当一个字节接收结束后,触发RI中断位,通知单片机接收结束


    串行口控制寄存器SCON

    SCON D7 D6 D5 D4 D3 D2 D1 D0
    98H SM0 SM1 SM2 REN TB8 RB8 TI RI

    SM0、SM1用于设定串行口工作方式   fosc :晶振频率

    SM0 SM1 方式 功能 波特率
    0 0 方式0 移位寄存器方式 fosc/12
    0 1 方式1 8位异步通信方式 可变
    1 0 方式2 9位异步通信方式 fosc/32或fosc/64
    1 1 方式3 9位异步通信方式 可变

    SM2:多机通信控制位
    REN:允许接收控制位
    TB8/RB:发送/接收的第9位数据
    TI:发送中断标志位
    RI:接收中断标志位


    电源控制寄存器

    PCON D7 D6 D5 D4 D3 D2 D1 D0
    87H SMOD

    当SMOD位为1时,串行口方式1、方式2、方式3的波特率加倍


    这里只介绍方式0与方式1的应用

    方式0
      方式0通常用来外接移位寄存器,用作扩展I/O口,方式0工作时波特率固定为 fsoc/12,工作时,串行数据通过RXD输入、输出,同步时钟通过TXD输出
      发送:TI = 0 时,SBUF写入数据后,发送过程启动,发送结束后,TI被置为1,并向CPU申请中断
      接收:在 RI = 0 时,将REN置"1"就启动一次接收过程,RXD上的串行数据一次移入移位寄存器,当一个字节发送完成之后,接收中断标志RI被置为"1",同时向CPU申请中断
      方式0波特率固定,也无需编程设定定时器

    方式0应用实例:扩展并行I/O口
      当外接串入并出的移位寄存器时,即是扩展并行输出口,当外接并入串出的移位寄存器时,相当于扩展并行输入口

    原理图如下
    在这里插入图片描述
    4094模块使用方式:
    在这里插入图片描述
    D接RXD,CLK接TXD,STB接P1.0,OE接EA

    扩展并行输出口控制流水灯程序如下:

    #include<reg52.h>
    sbit P1_0 = P1^0;
    void main(){
    	unsigned char i;
    	unsigned int j;
    	SCON = 0x00;//设置串行口工作方式
    	i = 0x01;//00000001b   发送的用于控制LED灯的变量
    	for(;;){
    		P1_0 = 0;//将4094接入串口
    		SBUF = i;//
    		while(TI==0);
    		P1_0 = 1;//将STB置1,准备4094发送
    		TI = 0;//TI归位
    		for(j = 0;j<0xffff;j++);//适当延时
    		i = i*2;
    		if(i==0){
    			i = 0x01;//循环
    		}
    	}
    }
    

    方式1
      方式1位8位异步通信方式,在方式1下,一帧信息为10位,1位起始位(0),8位数据位(低位在前)和1位停止位(1)
      发送:在 TI = 0 时,向SBUF写入数据,启动发送过程,数据有TXD引脚送出,当一帧数据发送完毕后,TI 被置为"1"
      接收:当 REN = 1 时,接收控制器开始接收数据,数据依次被移入移位寄存器,当8位数据及停止位全部移入后,进行响应操作
      方式1下,TXD数据发送端,RXD为数据接收端,波特率可变,由定时/计数器T1的溢出率和电源控制寄存器PCON中的SMOD位决定,故可编程设定定时器以设定波特率,其中溢出率 = 计数器一秒钟内溢出的次数
     波特率 = 2SMOD × (T1的溢出率) / 32
     T1溢出率 = fsoc / ( 12 × 计数值 )
    所以
     T1的初值 = MAX值 - fsoc × 2SMOD / (12 × 波特率 × 32)

    在这里插入图片描述
    分析如下:
    在这里插入图片描述
    甲机发送程序:

    #include<reg52.h>
    void main(){
    	unsigned char i;
    	SCON = 0x40;
    	TMOD = 0x20;
    	TL1 = 0xE6;
    	TH1 = 0xE6;
    	TR1 = 1;//设定完毕
    	P1 = 0xff;//为读取准备
    	while(1){
    		i = P1;
    		SBUF = i;
    		while(TI==0);//等待发送完成
    		TI = 0;
    	}
    }
    

    乙机接收程序:

    #include<reg52.h>
    void main(){
    	SCON = 0x50;
    	TMOD = 0x20;
    	TL1 = 0xE6;
    	TH1 = 0xE6;
    	TR1 = 1;
    	EA = 1;
    	ES = 1;
    	while(1);
    }
    
    void setLED() intrrupt 4{
    	if(RI){
    		RI = 0;
    		P2 = SBUF;
    	}
    }
    

    2019/3/5

    展开全文
  • 本文主要讲了单片机串行口和并行口的区别,希望对你的学习有所帮助。
  • 51单片机串行口中断的使用(指针)初始化中断服务函数主函数 这个程序的功能是通过上位机发送数字1234给单片机,单片机再把对应的数组发送给上位机 初始化 unsigned char shu1[] = {1}; unsigned char shu2[] = {1,...
  • 51单片机串行口扩展并行口输入输出Proteus仿真
  • MCS-51单片机串行口

    千次阅读 2010-01-09 18:27:00
    一、串行口的控制寄存器MCS-51单片机串行口是由缓冲器SBUF、移位寄存器、串行口控制寄存器SCON、电源控制寄存器PCON及波特率发生器T1组成。1.串行口数据缓冲器SBUFMCS-51单片机内的串行接口部分,具有两
  • 单片机串行口及应用

    千次阅读 2016-11-03 23:26:29
    并行通信除了数据线以外还有通信联络控制线,例如“选通”信号和“状态”信号,数据发送方在发数据前,要询问数据接收方是否“准备就绪”。数据接收方收到数据后,要向数据发送方回送数据已经接收到的“应答”信号。
  • 51单片机串口通讯,max232的连接与使用,单片机串行口编程应用
  • 一、实验内容 甲乙两个单片机进行串行通信。...理解单片机串行口实现通信的各种工作方式 掌握单片机串行通信程序设计、调试方法 三、实验设备 DELL台式机 、keilC51版本7、proteus版本6 四、实验电路图
  • 8051单片机串行口及串行通信

    千次阅读 2010-10-07 10:19:00
    <br />8051单片机串行口及串行通信   一、串行通信的基础知识 CPU与其他外部设备要进行信息交换,一台计算机与其他计算机之间有时也要交换信息,这些信息交换就称为通信。通信有并行通信和...
  • 单片机串行口介绍

    2020-07-10 10:34:07
     串行口单片机与外界进行信息交换的工具,8051单片机的通信方式有两种:  并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。 串行通信的方式  异步通信  用一个起始位0表示字符的...
  • 51单片机串行口波特率计算

    千次阅读 2019-06-19 22:10:40
    方式 0 :这种工作方式比较特殊,与常见的微型计算机的串行口不同,它又叫同步移位寄存器输出方式。在这种方式下,数据从 RXD 端串行输出或输入,同步信号从 TXD 端输出,波特率固定不变,为振荡率的 1/12 。该方式...
  • 利用模拟串行口的模式0组成一串行输出显示器: 用模拟51单片机模式0的输出脉冲时序,将数值0~F分时输出到实验板的4位八段显示器上。
  • 单片机--串行口实验

    2019-11-30 16:10:40
    目的:利用“模块化单片机教学实验平台”,加深对单片机串行口的理解。 任务:利用单片机串行口完成程序设计。 实验内容 使用AT89S52单片机串行口通过RS232通信接口与PC机进行通信,让单片机把接收到的每一...
  • 51单片机串行口的使用与串行通信串行通信:俩个概念:RS232接口标准:串行口的使用:串行口的结构:串行口相关寄存器:串行口的工作方式:方式0:同步移位寄存器方式利用方式0扩展并行I/O口:方式1:8位异步通信方式...
  • 单片机串行口及应用 通信方式: ​ 1.并行通信:数据的各位同时进行传送。速度快、效率高、成本高 ​ 2.串行通信:数据一位一位地按顺序进行传送。减少传输线、降低通信成本 按照数据传送方向: 单工、半双工、全...
  • 51单片机串行口控制寄存器SCON

    千次阅读 2019-05-31 11:23:40
    51单片机串行口控制寄存器SCON 串行口控制寄存器SCON的格式 D7 D6 D5 D4 D3 D2 D1 D0 SCON SM0 SM1 SM2 REN TB8 RB8 TI RI 98H 位地址 9FH 9EH 9DH 9CH 9BH 9AH 99H 98H ​ SM0、SM1——串行口...
  • 利用8031单片机串行口,实现与PC机通讯。 本实验实现以下功能,将从实验机键盘上键入的数字,字母显示到PC机显示器上,将PC机键盘输入的字符(0-F)显示到实验机的数码管上。 二.实验目的 1.掌握串行口工作方式的...
1 2 3 4 5 ... 20
收藏数 7,589
精华内容 3,035
关键字:

单片机串行口是什么意思