单片机串行口不够c51_51单片机串行口中断 - CSDN
  • 基本的 51 单片机有四个并行口,其中还包含了一个串行口。当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法,几乎无人...

    基本的 51 单片机有四个并行口,其中还包含了一个串行口。


    当接口不够用的时候,大家就会想到,使用什么外接芯片来扩充。


    但是,各种教材、参考书、网络文章,介绍扩充并行口的花样不少,扩充串行口的方法,几乎无人问津。


    偶尔见到一个,也是使用 8250、8251 等“巨型”芯片来扩充的。

    使用这些芯片,就要占用单片机很多的更为紧缺的并行口,基本上就是得不偿失。更别说还要设置复杂的控制字了。


    做而论道使用简单的三态门,即可为单片机扩充串行口,仅仅占用单片机的一、二个引脚作为控制引线而已。


    这个方法,在以前的各种书籍、杂志、网文中,都没有见到过,可以说是做而论道的独创。


    呵呵,小小的自豪一下,请不要拍砖。


    实际上是很简单的,就像使用 74LS373、74LS244 扩充并行口一样,为串行口,配上合适三态门就行了。


    选用 74LS125(低电平开门)、74LS126(高电平开门) 都行。


    使用其它的具有三态输出的芯片也可以,如:74LS244、74LS373 等等。

    只是这些芯片的控制线,是成组的控制,不是单独的一个门、一个门的进行控制,就有些不够方便。


    下面就是做而论道设计的扩充两个串口通道的电路图:


    51 单片机串口的扩充方法 - 非著名博主 - 电子信息角落


    图片链接:http://xiangce.baidu.com/picture/detail/64e03b5b7608f83bacba4eb956749736c1c3430d


    为了控制简单,以及介绍全面一些,在图中使用了两种三态门。用同一种,也是可以的。


    两组三态门,均以 P3.4 作为控制信号。


    当 P3.4 输出高电平时,74LS126 开门,通道1导通,单片机即可对 74LS164 进行串行输出,驱动数码管;


    当 P3.4 输出低电平时,74LS125 开门,通道2导通,单片机即可与其它串口设备进行全双工的通信。


    如果需要,还可以在 125 的右边再接上 TTL-RS232 电平转换芯片(或 RS485 总线芯片),进行远距离通信。

    图中是接上了一个 PROTEUS 软件的虚拟终端,用来代表另一个串口通信设备。


    做而论道用汇编语言写了一小段程序,可以控制这个串口扩展电路进行工作。


    ;=================================================

        ORG   0000H

        SJMP  START

        ORG   0023H

        AJMP  S_INT

    START:

        MOV   TMOD, #20H

        MOV   TH1, #0FDH ;设置波特率9600@11.0592MHz

        MOV   TL1, #0FDH

        SETB  TR1


        MOV   IE, #90H   ;开串口中断


        CLR   P3.4       ;选通74LS125(通道2)

        MOV   SCON, #50H ;串口方式1, 可接收


        SJMP  $

    ;-----------------------------------

    S_INT:               ;串口中断程序

        JNB   RI, S_END

        CLR   RI


        MOV   A, SBUF    ;取出收到的数据

    ;---------------------

        SETB  P3.4       ;选通74LS126(通道1)

        MOV   SCON, #0   ;串口通信方式0


        MOV   B, #16

        DIV   AB

        XCH   A, B

        ADD   A, #(TAB - $ - 3)

        MOVC  A, @A + PC ;取七段码

        MOV   SBUF, A    ;串口输出

        JNB   TI, $      ;等待发送完毕

        CLR   TI

        

        MOV   A, B

        ADD   A, #(TAB - $ - 3)

        MOVC  A, @A + PC

        MOV   SBUF, A

        JNB   TI, $

        CLR   TI

    ;---------------------

        CLR   P3.4       ;选通74LS125(通道2)

        MOV   SCON, #50H ;串口方式1, 可接收


        MOV   SBUF, #'O'

        JNB   TI, $

        CLR   TI

        MOV   SBUF, #'K'

        JNB   TI, $

        CLR   TI

        MOV   SBUF, #13  ;<CR>

        JNB   TI, $

        CLR   TI

        MOV   SBUF, #10  ;<LF>

        JNB   TI, $

        CLR   TI

    ;---------------------

    S_END:

        RETI


    TAB:                 ;共阳段码表

        DB  0C0H, 0F9H, 0A4H, 0B0H, 099H, 092H, 082H, 0F8H;0~7

        DB  080H, 090H, 088H, 083H, 0C6H, 0A1H, 086H, 08EH;8~F


    END

    ;=================================================


    程序执行后,屏幕截图如下:


    51 单片机串口的扩充方法 - 非著名博主 - 电子信息角落


    图片链接:http://xiangce.baidu.com/picture/detail/e59dd034244a30296b66430ce57b73137ef91a4d


    在程序控制下,51 单片机随时监听通道2,一旦虚拟终端发来了一个字节的串行数据,单片机都要向虚拟终端回送 'OK'<CR><LF>。


    这时,就是单片机和上位机之间的双工串行通信。


    然后,单片机转向串口通道1,以方式0 输出两组七段码,令外接的 74LS164 显示刚刚收到的数据的高、低四位。


    这时,就是简单的 SPI 通信方式。


    在图中可以看到,数码管显示的是 41,这是在虚拟终端窗口中键入'A'时的现象,41 即字符 A 的 ASCII 码。


    虚拟终端,它并不显示键入的内容,它仅仅显示单片机发出的信息,在图中可以看到显示出来的 OK、回车、换行。




    74LS125 和 74LS126 都是 14 引脚的集成芯片,和 8250、16550A 等 40 引脚的专用串口芯片相比,要小巧的多。


    每片(125 或 126)都含有四个独立工作的三态门。实际上,使用一片 125 或 126,也就可以实现上述的两个通道串口通信了。

    注意:如果使用了一片芯片,那么通道控制的电平信号是相同的,这就需要使用单片机的两个引脚来分别控制两个通道。


    多用几片三态门,为单片机多扩充几个串行口,也是可行的。



    做而论道设计的这种串口扩充方案,硬件电路和软件,都已经在实际电路中做过实验,可以正常通信。



    展开全文
  • C51单片机————串行接口 定时(定时控制、测量、延时。。。)和计数(对外部事件统计数目)。 Created with Raphaël 2.1.2张三张三李四李四嘿,四哥, 定时器和计数器有哪几种实现哦?想了想主要有三种方法那...

    C51单片机————串行接口


    Created with Raphaël 2.1.2张三张三李四李四嘿,四哥,我最近在学习串行接口?想了想!有我啥事嗯!牛逼我有点不懂?哪里不懂哇额! 都不懂。。。

    1.引文

    计算机和外界的信息交换叫做通信。

    串行和并行

    基本的通信方式分为2种:串行和并行
    串行通信:这种通信方式发送/接收数据是一位一位按顺序(bit)的进行传输的(相当于公路的单行道吧!)

    传输线多(每次多传一位就多一根线)、价格贵、适合近距离的传输、传输速度快

    并行通信:发送/接收数据可以是多位同时传输的(到底是多少位一起传输,要看硬件设备了)

    传输线只需要1到2根就可以、便宜、远距离传输、但是速度慢(别人一次传几个,你一次传一个你说慢不慢)


    同步和异步

    这个怎么区分呢?
    根据帧信息的格式区分的!
    同步:我的理解就是通信的双方拥有相同的时间线,严格按照此时间线进行通信
    1. 通信的数据格式是 :同步字符–连续的数据–校验字节
    2. 速度高于异步,硬件结构高
    异步:可以看做不同时间轴的操作
    1. 通信的数据格式是 :一帧数据为11位的帧格式:起始位–数据8位–校验位-停止位 (1帧==11位)

    通俗点的理解:
    大家都买过衣服吧!在商场去买和在某宝上买就像同步和异步操作。
    在商场买衣服,需要选衣服,选了衣服后让服务员帮你包好,然后结束自己带回家,这个过程是连续的。
    在某宝上呢?你只是需要选衣服、下单然后就等着收快递了,虽然衣服还没有送到家,但是你买衣服的任务已经完成了。商家接到你的订单后,就会加紧安排送货,当然这一切已经跟你无关了,你已经支付完成,想什么就能去干什么了。
    额。。。好像也不通俗。。。


    通信方向

    单工传送:单行道,数据只可以朝着一个方向!
    半双工:可以双向传送的车道,但是两个方向不可同时使用(不能同时发送接收)
    全双工:双向传送的车道,可同时发送接收。

    2.串行通信的任务

    Created with Raphaël 2.1.2李四李四张三张三CPU处理什么数据的?知道吗额,并行数据对了!那他怎么处理串行数据呢?对啊!怎么处理啊?以手蒙面状。。。

    串行接口就在这儿起作用了?
    CPU处理并行数据的,让他处理串行数据的话就需要串行接口的帮忙了!CPU还要遵守串行通信的协议(通信双方都需要遵守的约定,约定有:数据格式、同步方式、传送步骤、检查/纠错的方式、控制符的定义。。。)

    串行接口的任务:

    1. 数据的处理(不同的串行通信有不同的数据格式)
    2. 并行数据和串行数据的转换
    3. 数据的传输速度
    4. 传输的错误检测(奇偶校验位、校验码。。。)

    串行接口的类型:

    串行通信接口Serial Communication Interface:设备之间互联接口,互相之间距离较长

    串行扩展接口Serial Expand Interface: SPI IIC。。。

    Baud rate | bps | Band width:

    Baud rate波特率:单位时间里传输的二进制代码有效位数

    bps比特率:单位时间里传输的码元个数

    Band width带宽:
    1. 模拟信号中:带宽是信号所占频率
    2. 数字信号里:带宽是传送数字信号速率

    单片机中波特率和比特率数值上相同(一个状态对应一个1或0)


    3.单片机串行口结构和工作原理

    51单片机的串行口:可编程、全双工。
    1. 可作为UART(Universal Asynchronous Receiver/Transmitter)
    2. 同步移位器
    3. 帧格式:8位、10位、11位
    4. 可设置波特率

    这里写图片描述

    SBUF:发送和接收的数据缓冲区
    SOCN:串行口控制寄存器 (98H)
    PCON:电源控制寄存器 (87H)
    TI:发送中断标志位 (方式0:发送结束硬件置1 发送前软件置0)
    RI:接收中断标志位 (方式0:发送结束硬件置1 发送前软件置0)
    TXD: P3.1引脚,发送数据口
    RXD: P3.0引脚,接收数据口

    发送和接收SBUF可同时发送接收(它们在物理上独立的)但是它们公用 SFR地址99H。
    发送时:data 写入SBUF ,经过TXD发出
    接收时:存储RXD接收到的数据


    (1)SCON 串行口控制寄存器(地址98h)

    SCON (98H)
    SM0
    SM1 SM2
    REN TB8
    RB8 TI
    RI
    方式选择
    多机通信控制
    串行接收允许 欲发的第九位
    欲收的第九位 发送中有无中断
    接收中有无中断
    有四种方式0、1、2、3
    方式2、3时候用
    0禁止、1允许 方式2、3中
    方式2、3中 软件清零 硬件置一
    软件清零 硬件置一

    (2)PCON 串行口控制寄存器(地址87h)

    PCON (78H)
    SMOD
    X X
    X GF1
    GF0 PD
    IDL
    波特率加倍位
    X X
    X 通用标志位 掉电方式位 待机方式位
    1加倍、0不加倍
    X X
    X 用户可作为软件使用标志 1激活掉电工作方式 1激活待机工作方式

    4.单片机串行口工作方式


    方式0:

    方式0 :移位寄存器IO方式
    TXD:移位数据IO
    RXD:移位时钟IO
    波特率 = fosc / 12
    8位 数据为一帧,不设置其实和停止位,从最低位开始发送
    发送过程:(1).写SBUF(2).8位数据发完,TI=1(3).发送下一数据
    接收过程:(1).REN=1(2).8位数据收完,RI=1(3).读SBUF
    功能:(1)短距离单片机之间数据传输(2)扩展输出接口 。。。

    方式1:

    方式1:波特率可变10位异步通信方式
    TXD:串行数据发送端
    RXD:串行数据接收端
    波特率 :
    baudrate=2SMOD32(T1)
    波特率 :
    baudrate=2SMOD32fosc12256X
    >> X为T1的计数初值 T1工作在方式2(这是计数器的工作方式哈)
    10位 数据为一帧,从最低位开始发送 起始位和停止位是自动插入的
    使用了T1计数器

    方式2:

    方式2:波特率固定11位异步通信方式
    TXD:串行数据发送端
    RXD:串行数据接收端
    波特率固定 :
    baudrate=2SMODfosc64
    11位 数据为一帧,从最低位开始发送
    起始位和停止位是自动插入的
    第九个数据是TB8、RB8(分别是发送和接收)位提供的

    方式3:

    方式3:波特率可变11位异步通信方式 (数据格式同方式2、波特率计算同方式1)
    TXD:串行数据发送端
    RXD:串行数据接收端
    波特率可变同方式1 :
    baudrate=2SMOD32fosc12256X
    >> X为T1的计数初值 T1工作在方式2(这是计数器的工作方式哈)
    11位 数据为一帧,从最低位开始发送
    起始位和停止位是自动插入的
    第九个数据是TB8、RB8(分别是发送和接收)位提供的

    5.单片机串行口编程

    编程要点:
    1. 波特率计算
    2. 控制字填写
    3. 两种工作方式选择(查询和中断)
    4. 两方波特率一致,可约定某一个标志字符作为发送数据的开始(多机通信中,标志字符就是各分机的地址)


    • 查询方式:
      发送程序:发数据— 查询TI — 发送下一个数据(先发后查)
      接收程序:查询RI—读数据—查询RI—读下一个数据(先查后收)
    • 中断方式:
      发送程序:发数据—等待中断 — 发送下一个数据
      接收程序:等待中断,在中断中再接收下一个数据

    两种方式中都要注意清TI、RI


    ORG 0000H
    AJMP MAIN
    ORG 0030H
    MAIN: 
        MOV TMOD,#20H ;TMOD设置  T1方式二
        MOV TH0 ,#3cH;
        TL0 = #0b0H;  ;初值
        MOV SCON,#40H  ;SCON设置 串行方式1
        MOV R0,#20h    ;发送的数据缓冲区起始地址
        MOV R7,#32     ;发送的数据个数
        SETB TR1      ;启动定时器,TRx = 1
        SETB EA     ;中断总开关
        SETB ET1    ;定时器0  允许中断
        LOOP:
        MOV SBUF,@R0;发送的数据放到缓冲区
        JNB TI,$    ;  TI==0 死循环
        CLR TI      ;软件清零
        INC R0      ;下一个数据
        DJNZ R7,LOOP;是否发完
    HERE:AJMP HERE
    END
    ORG 0000H
    AJMP MAIN
    ORG 0030H
    MAIN: 
        MOV TMOD,#20H ;TMOD设置  T1方式二
        MOV TH0 ,#3cH;
        TL0 = #0b0H;  ;初值
        MOV SCON,#50H  ;串行方式1   可接收REN
        MOV R0,#20h    ;发送的数据缓冲区起始地址
        MOV R7,#32     ;发送的数据个数
        SETB TR1      ;启动定时器,TRx = 1
        SETB EA     ;中断总开关
        SETB ET1    ;定时器0  允许中断
        LOOP:JNB RI,$    ;RI ==0 死循环 
        CLR RI      ;软件清零
        MOV @R0,SBUF;发送的数据放到缓冲区
    
        INC R0      ;下一个数据
        DJNZ R7,LOOP;是否发完
    HERE:AJMP HERE
    END

    如有错误!请多多包含,方便的话留个言!我好马上修改。

    展开全文
  • 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单片机串口通讯,max232的连接与使用,单片机串行口编程应用
  • 一、实验内容 甲乙两个单片机进行串行通信。...理解单片机串行口实现通信的各种工作方式 掌握单片机串行通信程序设计、调试方法 三、实验设备 DELL台式机 、keilC51版本7、proteus版本6 四、实验电路图

    一、实验内容

    甲乙两个单片机进行串行通信。采用12MHZ时钟频率晶振频率和方式1进行通信。甲机上有4*4键盘、一个七段数码管,乙机上有两个七段数码管;甲机发出按键显示内容,乙机接收后在数码管上交替显示。

    二、实验目的

    理解单片机串行口实现通信的各种工作方式

    掌握单片机串行通信程序设计、调试方法

    三、实验设备

    DELL台式机 、keilC51版本7、proteus版本6

    四、实验电路图


    五、程序流程图 

    查询方式接收流程图


    查询方式发送流程图


    六、程序源码  

    //接收程序
    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int 
    uchar old=16;
    uchar code DSY_CODE[]=
    { 0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71,0x00 };
    //延迟子程序
    void DelayMS(uint ms){
    uchar t;
    while(ms--)
    for(t=0;t<120;t++);
    }
    void main(){
    P0=0x00;P2=0x00;
    SCON=0x50;//串口模式1,8位异步,允许接受
    TMOD=0x20;//T1工作在模式2,8位自动装载
    PCON=0x00;//波特率不倍增
    TH1=0xfd;//波特率9600
    TL1=0xfd;
    RI=0;
     TR1=1;//启动定时器T1
    while(1){
         if(RI){
    RI=0;
    P0=DSY_CODE[old];//显示旧值
    P2=DSY_CODE[SBUF];//显示新值
    old=SBUF;
    }
    DelayMS(100);
    }	  
    }
    //发送程序
    #include<reg51.h>
    #define uchar unsigned char
    #define uint unsigned int 
    uchar code DSY_CODE[]=
    { 0x3f,0x06,0x5b,0x4f,
      0x66,0x6d,0x7d,0x07,
      0x7f,0x6f,0x77,0x7c,
      0x39,0x5e,0x79,0x71 };
    uchar pre_key=16,key=16;
    //延迟子程序
    void DelayMS(uint ms){
    uchar t;
    while(ms--)
    for(t=0;t<120;t++);
    }
    //键盘扫描子程序
    void keys_scan(){
    uchar temp;
    P0=0x0f;
    DelayMS(1);
    temp=P0^0x0f;
    switch(temp){
    case 1:key=0;break;
    case 2:key=1;break;
    case 4:key=2;break;
    case 8:key=3;break;
    }
    P0=0xf0;
    DelayMS(1);
    temp=P0>>4^0x0f;
    switch(temp){
    case 1:key+=0;break;
    case 2:key+=4;break;
    case 4:key+=8;break;
    case 8:key+=12;break;
    }
    }
    //发送子程序
    void putc_to_SerialPort(uchar c){
    SBUF=c;
    while(TI==0);
    TI=0;
    }
    void main(){
    P1=0x00;
    SCON=0x40;//串口工作在方式1(01000000)
    TMOD=0x20;//T1工作在模式2,8位自动装载
    PCON=0x00;//波特率不倍增
    TH1=0xfd;//波特率9600
    TL1=0xfd;
    TI=0;
    TR1=1;//启动定时器T1
    while(1){
    P0=0xf0;
    if(P0!=0xf0)
    keys_scan();
    if(pre_key!=key){
    P1=DSY_CODE[key];
    putc_to_SerialPort(key);
    pre_key=key;
    }
    DelayMS(100);
    }	  
    }
    



    展开全文
  • 基本概念51单片机串行通讯:1、串行口有两个数据缓冲寄存器SBUF,一个是发送缓冲寄存器,一个是接收缓冲寄 存器。2、串行口工作方式有2种,1为查询法,2为中断法。这里用中断法。3、串口的初始化:void init(void) ...
  • 51单片机串行口扩展并行口输入输出Proteus仿真
  • 51单片机串行口中断的使用(指针)初始化中断服务函数主函数 这个程序的功能是通过上位机发送数字1234给单片机,单片机再把对应的数组发送给上位机 初始化 unsigned char shu1[] = {1}; unsigned char shu2[] = {1,...
  • 串行口方式1(波特率为1200)下降数据1、2、3、4、5、6、7、8分别从一单片机发送到另一单片机,接收单片机在P1口输出接收到的数据,并用端口的LED小灯显示数据,灯亮为逻辑0,灯灭为逻辑1。
  • 51单片机 串行口驱动

    2012-11-05 20:47:19
    #include //==============================================...// 51单片机 串行口数据传输接口说明: // 串行收发数据需要占用定时器1 和串行口 TXD、RXD // 接口中定义了忙标志 busy_serial 1表示接口被此接口
  • 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——串行口...
  • 单片机串行口

    2013-07-03 12:23:26
    单片机串行口 MCS-51单片机的串行口具有两条独立的数据线——发送端TXD和接收端RXD,它允许数据同时往两个相反的方向传输。一般通信时发送数据由TXD端输出,接收数据由RXD端输入。 MCS-51单片机的串行口既...
  • 一、两种通信方式概念 1.并行通信 传输原理:并行通信时数据的各个位同时传送,以字节为单位并行传输优点:并行通信速度快,传输的数据宽度可以是1~128位...优点:串行通信传输线少,占用引脚资源少,成本低,适合远
  • 从而测量物体最小包围盒,本科专业自动化,想做的省事一点,不用每次都判断位置开始拍照,所以加了两个接近开关,当步进电机向某一方向运行时,利用两个传感器确定需要拍照的时刻,同时通过串行口向电脑发送一个字符...
  • AT89S51单片机串行口的内部结构如下图所示。它有两个物理上独立的接收、发送缓冲器SBUF(属于特殊功能寄存器),可同时发送、接收数据。发送缓冲器只能写入不能读出,接收缓冲器只能读出不能写入,两个缓冲器共用一...
  • 1. 利用移位寄存器实现串行/并行的转换(功能) 2. 波特率:fosc/12 3. RXD(P3.0)----用于串行数据的输入和输出 TXD(P3.1)----充当输出的移位时钟 4. 数据大小:8位 5. 方式0发送: ○ 串口接口移位寄存器(74...
  • 两片单片机利用串行口进行串行通信:串行通信的波特率可从键盘进行设定,可选的波特率为1200、2400、4800和9600bit/s。串行口工作方式为方式1的全双工串行通信。
  • 8051单片机串行通信

    2020-03-09 23:32:57
    串行口单片机与外界进行信息交换的工具。 8051单片机的串行通信方式有两种: 并行通信:数据的各位同时发送或接收。 串行通信:数据一位一位次序发送或接收。
  • 51单片机外部中断的C51编程 相关知识: 1、51单片机的5大中断源:串行口中断、定时中断1、外部中断1、定时中断0、外部中断0; 2、中断源的编号: 串行口中断为4、定时中断1为3、外部中断1为2、定时中断...
  • 两片单片机之间的串行通信(仿真图+程序) AT89C51+MAX232
1 2 3 4 5 ... 20
收藏数 1,115
精华内容 446
关键字:

单片机串行口不够c51