精华内容
下载资源
问答
  • 单片机串行通信总结

    2013-06-09 11:41:22
    一、串口通信模式 模式1 10位异步通信  1起始位   8数据位  1停止位(起始位和停止位是自动产生的)   发送过程:TI=0时,SBUF自动加上起始位、停止位发送,发送完TI置位,并自动让TXD保持高电平,TI由软件...

    一、串口通信模式

    模式1

    10位异步通信      1起始位

                      8数据位

                      1停止位(起始位和停止位是自动产生的)

        发送过程:TI=0时,SBUF自动加上起始位、停止位发送,发送完TI置位,并自动让TXD保持高电平,TI由软件复位。

       接收操作必须在RI=0 & REN=1下运行,在接收到停止位时,必须满足RI=0和SM2=0或者停止位为1,才能把8位放到SBUF中;把停止位送入RB8中,并使RI=1和发送串口中断请求,若不满足上述两个条件,数据被丢弃。SMOD控制倍频

     

    模式3

    11位异步收发模式  1起始位

                      8数据位

                      1奇偶校验位

                      1停止位

        发送:其他类似,数据位有9位,8位数据位+TB8中的1位,可以是奇偶校验或者其他控制内容

        接收:RB8放的是第九位数据,接收条件是RI=0和SM2=0或者接收到的第九位数据为1

    注:上述条件一:是要求SBUF空,即用户应预先读走SBUF,条件二:提供了利用SM2和第九位数据位共同对接收加以控制,若第九位是奇偶校验位,则可以让SM2=0来确保串口接收,如果是接收控制,则可以让SM2=1,然后依靠第九位来确定接收是否有效。

     

    二、奇偶校验

    偶校验:发送的8位数据的1的个数为偶数时,TB8=0,否则为1

    奇校验:发送的8位数据的1的个数为奇数时,TB8=1,否则为0

     

    三、用到的SFR

    PSW寄存器中的第0位 P:奇偶校验标志位

    若ACC中1的个数为奇数,P=1,即默认偶校验方式

     

    展开全文
  • 单片机串行通信发射机 单片机串行通信发射机 单片机串行通信发射机
  • VB 单片机 串口通信 串口通信VB 单片机 串口通信 串口通信
  • 单片机串口通信

    2016-12-24 18:57:32
    单片机串口通信
  • 本文对51单片机串口通信中字符发送进行了总结
  • 单片机串行通信

    2013-06-09 22:44:04
    单片机串行通信
  • 51单片机串行通信

    2018-04-19 13:22:07
    51单片机串行通信,使用串口USART/UART进行双机通信,收发数据,包括发送端程序和接收端程序
  • 单片机 串口通信

    2012-01-05 16:55:41
    单片机 串口通信 8052 实现两个单片机串口通信 运用8052 单片机实现
  • 单片机串口通信单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据从而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语“hello”,然后电脑输入...
  • 单片机串行通信发射机单片机串行通信发射机单片机串行通信发射机单片机串行通信发射机单片机串行通信发射机
  • 51 单片机串口通信程序,RS232串口通信 含详细例子。 含详细例子,RS232串口通信单片机接收发送数据的 C51程序,手把手教你用增强型51 实验板实现RS232 串口通信 51串口通信
  • 51单片机串口通信

    2018-04-10 21:47:44
    51单片机串口通信例程,串口一中断输出,串口通信的基本认识通信分为并行通信和串行通信,并行通信时的数据各个位同时传送.
  • 本文主要介绍的是一款单片机串口通信电路图。
  • 本文主要为单片机串口通信协议代码,下面一起来学习一下
  • 单片机串行通信(合集),单片机串口通信程序,包括单片机之间,单片机与PC之间
  • PIC单片机 串行通信

    2010-02-04 15:11:29
    PIC单片机串行通信 PIC单片机串行通信 PIC单片机串行通信
  • 单片机串口通信程序

    2013-12-12 22:18:46
    单片机串口通信单片机非常好用的一项功能,可以和电脑和其他的单片机进行通信和交换数据从而达到某种效果。近期我们做了个程序:利用单片机串口通信编译一个程序在打开时向电脑发送问候语“hello”,然后电脑输入...
  • PC机与单片机串行通信
  • 单片机串口通信.pdf

    2010-08-08 16:13:19
    单片机串口通信.pdf 单片机串口通信.pdf 单片机串口通信.pdf
  • Atmega16单片机串口通信

    千次阅读 2019-05-27 15:27:31
    Atmega16单片机串口通信Atmega16单片机串口通信串口通信需要使用到的内部寄存器程序代码 Atmega16单片机串口通信 本篇文章参考自叶大鹏老师于2008年4月5日完成的UART通信PPT制作而成。 串口通信需要使用到的内部...

    Atmega16单片机串口通信

    本篇文章参考自叶大鹏老师于2008年4月5日完成的UART通信PPT制作而成。

    串口通信需要使用到的内部寄存器

    在进行程序编写前需要对16单片机中的寄存器的作用和使用方法有所了解,下面为16单片机串口通信使用到的几个寄存器:

    1. USART I/O 数据寄存器 - UDR (UDR寄存器用于数据在传输中的存储):
      UDR寄存器用于数据在通信中的存储
    2. USART控制和状态寄存器A - UCSRA
      UCSRA寄存器
      寄存器中位的定义
      寄存器中位的定义
    void uart_sendB(uchar data)        /*发送函数*/
    {
        while(!(UCSRA&(BIT(UDRE))));   //等待发送缓冲器为空
        UDR=data;                      //将数据存入UDR寄存器
    }
    
    1. USART控制和状态寄存器B - UCSRB
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    void uart_rx(void)              /*串口接收函数*/
    {
        UCSRB&=~BIT(RXCIE);         //校验数据是否传输完成,关闭接收中断
        rdata=UDR;                  //将接收到的数据存入rdata
        flag=1;                     //标志位至1
        UCSRB|=BIT(RXCIE);          //接收完毕,开启中断
    }
    
    1. USART控制和状态寄存器C - UCSRC
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
      在这里插入图片描述
    2. USART波特率寄存器 - UBRRL和UBRRH
      在这里插入图片描述
      在这里插入图片描述
    #define mclk 8000000
    
        baud=mclk/16/baud-1;    //程序片段
        UBRRL=baud;             //设置波特率,先写低位再写高位
        UBRRH=baud>>8;          //设置波特率,先写低位再写高位
    

    程序代码

    本段程序编译环境为ICCAVR7 for AVR。
    #include<iom16v.h>
    #include<macros.h>
    #define uchar unsigned char
    #define uint unsigned int
    #define mclk 8000000
    #pragma interrupt_handler uart_rx:12
    uchar rdata,flag=0;
    void uart_init(uint baud)        //串口初始化
    {
        UCSRB=0x00;
        UCSRA=0x00;
        UCSRC=(1<<URSEL)|(0<<UPM0)|(3<<UCSZ0);
        
        baud=mclk/16/baud-1;
        UBRRL=baud;
        UBRRH=baud>>8;
        UCSRB=(1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
        
        SREG=BIT(7);                    //开中断
        DDRD|=0x02;                     //设计发送口(TX)为输出,这很重要
    }
    void uart_rx(void)                  //串口接收函数
    {
        UCSRB&=~BIT(RXCIE);         //校验数据是否传输完成,关闭接收中断
        rdata=UDR;                  //将接收到的数据存入rdata
        flag=1;                     //标志位至1
        UCSRB|=BIT(RXCIE);          //接收完毕,开启接收中断
    }
    
    
    void uart_sendB(uchar data)   //发送函数
    {
        while(!(UCSRA&(BIT(UDRE)))); //等待发送缓冲器为空
        UDR=data;                    //将数据存入UDR
        while(!(UCSRA&(BIT(TXC))));
        UCSRA|=BIT(TXC);          
    }
    
    void main(void)
    {
        uchar i=4;
        uart_init(19200);
        while(1)
        {
            if(flag)
            {
                uart_sendB(i);
                flag=0;
            }
        }
    }
    
    展开全文

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,562
精华内容 12,624
关键字:

单片机串行通信总结