51单片机串口通信

通信

分类: 并行通信 串行通信

串行通信: 设备     

           接受     

           发送     

           CPU    

           协议     (通信协议)  硬件层协议

                                  软件层协议

 CH340: 把计算机传到USB口的数据信号 转化到 UART串口

串行通信的分类    单工   半双工   全双工       

按同步时钟信号   

同步通信(有CLK引脚的、信息帧)

 异步通信 (数据帧、传输速度相同(波特率))

有效传输速率 80%

 

传输速度

1、波特率     单位时间传输了多少码元 bps  二进制码元  0或1

2、比特率     单位时间传输了多少二进制位数

在单片机里  波特率=比特率(不是所有领域)

 UART    51单片机的串口   是一个异步全双工的UART串口

  没有时钟引脚  靠数据帧和波特率  可收可发 2根线   通过异步收发器(一个电路结构) 

TI  发送中断

RI  接受中断  

SCON寄存器

SM0:工作方式   

SM1:工作方式

SM2:多机通信(只有两台机器 就直接设置为0)

REN:允许接受

TB8:发送校验位

RB9:接受校验位

SBUF (串口数据缓冲寄存器)

波特率发生器 T1 :设置T1初值 方式2  自动清除

                   1/9600溢出

                    TH1 = TL1= 256 – (focs*10的六次方)/12*9600*32

                    fosc 晶振频率

                     9600波特率 :TL0 = TH0 = 0xFD      

#include <REGX52.H>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uint jieshou;
void main()
{
	SCON =0x50;
	TMOD = 0x20;
	EA=1;
	ES=1;
	TL1 =0xfd;
	TH1 =0xfd;
	TR1 =1;
	while(1);
}
void  es() interrupt 4
{
	if(TI==1){TI = 0;}
	if(RI==1)
	{
		RI = 0;
		jieshou =SBUF;
		if(jieshou == 1){P2 =~0x01;}
		else if(jieshou == 2){P2 = ~0x02;}
		else if(jieshou == 3){P2 = ~0x03;}
		else if(jieshou == 4){P2 = ~0x04;}
		else if(jieshou == 5){P2 = ~0x05;}
		else if(jieshou == 6){P2 = ~0x06;}
		else if(jieshou == 7){P2 = ~0x07;}
		else if(jieshou == 8){P2 = ~0x08;}
		else {P2 = 0xff;SBUF = 0x0e;}
	}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值