单片机原理 3.5 串行通信.pptVIP

  • 7
  • 0
  • 约5.25千字
  • 约 33页
  • 2017-08-17 发布于河南
  • 举报
#include reg51.h sbit P1_0=P1^0; void main() { unsigned char tmp; P1=0xff; //关闭P1口接的所有灯 TMOD=0x05; //确定计数工作模式 TR0=1; //定时器T0开始运行 for(;;) { tmp=TL0; P1=~tmp; } } #include reg51.h sbit P1_0=P1^0; void Timer0() interrupt 1 { TH0=0xff; TL0=0xfa; //重置初值 P1_0=~P1_0; //执行灯亮或灭的动作 } void main() { P1=0xff; //关闭P1口接的所有灯 TMOD=0x05; //确定计数工作模式 TH0=0xff; TL0=0xfa; //定时实值为65530 EA=1; ET0=1; TR0=1; //定时器T0开始运行 for(;;) {;} } 串行通信 重点: 串行寄存器 波特率的概念 随着多微机系统的广泛应用和计算机网络技术的普及,计算机的通信功能愈来愈显得重要。计算机通信是指计算机与外部设备或计算机与计算机之间的信息交换。 通信有并行通信和串行通信两种方式。在多微机系统以及现代测控系统中信息的交换多采用串行通信方式。 并行通信通常是将数据字节的各位用多条数据线同时进行传送 。 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。 串行通信的基本概念 一、异步通信与同步通信 1、异步通信 异步通信是指通信的发送与接收设备使用各自的时钟控制数据的发送和接收过程。为使双方的收发协调,要求发送和接收设备的时钟尽可能一致。 异步通信是以字符(构成的帧)为单位进行传输,字符与字符之间的间隙(时间间隔)是任意的,但每个字符中的各位是以固定的时间传送的,即字符之间不一定有“位间隔”的整数倍的关系,但同一字符内的各位之间的距离均为“位间隔”的整数倍。 异步通信的数据格式 : 二、串行通信的传输方向 1、单工 单工是指数据传输仅能沿一个方向,不能实现反向传输。 2、半双工 半双工是指数据传输可以沿两个方向,但需要分时进行。 3、全双工 全双工是指数据可以同时进行双向传输。 有两个物理上独立的接收、发送缓冲器SBUF,它们占用同一地址99H ;接收器是双缓冲结构 ;发送缓冲器,因为发送时CPU是主动的,不会产生重叠错误。 SCON 是一个特殊功能寄存器,用以设定串行口的工作方式、接收/发送控制以及设置状态标志: 波特率: 单片机或者计算机在串口通信时的速率用波特率表示;单位是bps;位/秒; 如每秒钟传送240个字符,而每个字符格式包含10位,这时的波特率为10*240位/秒=2400bps; 波特率的计算 在串行通信中,收发双方对发送或接收数据的速率要有约定。通过软件可对单片机串行口编程为四种工作方式,其中方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可变的,由定时器T1的溢出率来决定。 串行口的四种工作方式对应三种波特率。由于输入的移位时钟的来源不同,所以,各种方式的波特率计算公式也不相同。 方式0的波特率 = fosc/12 方式2的波特率 =(2SMOD/64)· fosc 方式1的波特率 =(2SMOD/32)·(T1溢出率) 方式3的波特率 =(2SMOD/32)·(T1溢出率) 串行口工作之前,应对其进行初始化,主要是设置产生波特率的定时器1、串行口控制和中断控制。具体步骤如下: 确定T1的工作方式(编程TMOD寄存器); 计算T1的初值,装载TH1、TL1; 启动T1(编程TCON中的TR1位); 确定串行口控制(编程SCON寄存器); 串行口在中断方式工作时,要进行中断设置(编程IE、IP寄存器)。 #include reg52.h #define uchar unsigned char #define uint unsigned int unsigned char flag,a,i; uchar code table[]=I get ; //uchar code table[]={I, ,g,e,t, }; void init() { TMOD=0x20; TH1=0xfd; TL1=0xfd; TR1=1; REN=1; SM0=0; SM1=1; EA=1; ES=1; } void main() { init(); while(1) { if(flag==1) { ES=0; for(i=0

文档评论(0)

1亿VIP精品文档

相关文档