串行接口与定时计数器_第1页
串行接口与定时计数器_第2页
串行接口与定时计数器_第3页
串行接口与定时计数器_第4页
串行接口与定时计数器_第5页
已阅读5页,还剩38页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第四章串行接口与定时计数器1.

串行接口的一般概念单片机与外界进行信息交换称之为通讯(Communication)。单片机的通讯方式有两种:并行通讯:数据的各位同时发送或接收。串行通讯:数据一位一位顺序发送或接收。参看下图:一、串行接口及应用(一).异步通讯以字符为传送单位用起始位和停止位标识每个字符的开始和结束。字符间隔不固定,只需字符传送时同步。异步通讯常用格式:一个字符帧一.串行通讯的基本方式

D0D1D2D3D4D5D6D7停止位起始位异步通讯的双方需要两项约定:1.字符格式一帧字符位数的规定:数据位,校验位,起始位和停止位。2.波特率(位/秒)——对传送速率的规定波特率:每秒钟传送的位数,记为bps(bit/sec)。例:要求每秒传送120个字符,每帧为10位。解:B=120×10=1200波特 每位0.83ms数据位传输率=120×8=960位/秒(二)同步通讯: 数据块传递开始要用同步字符来指示,要求由时钟来实现发送端与接收端之间的同步,故硬件较复杂。串行通信的校验方法

目的:保证高效而无差错的传送数据。校验位:可以奇校验、偶校验或没有校验位。奇偶校验:主要用于对一个字符的传输过程进行校验。通常把数据位和校验位中1的个数为奇数个称为奇校验。通常把数据位和校验位中1的个数为偶数个称为偶校验。异步传输信息冗余较大,例如:1+8+1+2中有效位数只有8位。 串行传输中的数据传输方向 如果在通信过程的任意时刻,信息只能由一方A传到另一方B,则称为单工。(无线电对讲机) 如果在任意时刻,信息既可由A传到B,又能由B传A,但只能由一个方向上的传输存在,称为半双工传输。 如果在任意时刻,线路上存在A到B和B到A的双向信号传输,则称为全双工。(电话)1.数据缓冲器SBUF发送SBUF和接收SBUF共用一个地址99H 。 1)发送SBUF存放待发送的8位数据,写入SBUF将同时启动发送。 发送指令: MOV SBUF,A2)接收SBUF存放已接收成功的8位数据,供CPU读取。 接收指令: MOVA,SBUF一.串行接口控制字2.串行口控制/状态寄存器SCON(98H)SM0,SM1:选择串行口4种工作方式。SM2:多机控制位,用于多机通讯。REN:允许接收控制位,REN=1,允许接收;REN=0,禁止接收。TB8发送的第9位数据位,可用作校验位和地址/数据标识位RB8:接收的第9位数据位或停止位TI:发送中断标志,发送一帧结束,TI=1,必须软件清零RI:接收中断标志,接收一帧结束,RI=1,必须软件清零3.节电控制寄存器PCONSMOD(PCON.7):波特率加倍控制位。SMOD=1,波特率加倍,SMOD=0,则不加倍。串行口的工作方式

方式0:同步方式(移位寄存器方式) 要想移位寄存器工作,需要向其时钟输入端CLK送去移位脉冲,接收一个脉冲便移动一位。该脉冲由TXD提供(移位脉冲),参与发送或接收的数据均出入于RXD端。可用于扩展8位并行输入输出口

输出:将8位数据以fos/12的固定波特率从RXD输出,低位在前,高位在后。发送完一帧数据后,发送中断标志TI由硬件置位。

输入:

置位允许接收控制位REN=1。当(RI)=0和(REN)=1同时满足时,开始接收。当接收到第8位数据时,将数据移入接收寄存器,并由硬件置位RI。

方式1:波特率可变的10位异步通讯接口发送或接收一帧信息,包括1个起始位0,8个数据位和1个停止位1。输出:串行数据从TXD引脚输出,发送完一帧数据后,就由硬件置位TI。

输入:在(REN)=1时,串行口采样RXD引脚,当采样到1至0的跳变时,确认是开始位0,就开始接收一帧数据。只有当(RI)=0且停止位为1或者(SM2)=0时,停止位才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。所以在方式1接收时,应先用软件清零RI和SM2标志。

方式2:固定波特率的11位UART方式 它比方式1增加了一位可程控为1或0的第9位数据。

输出:它可作为多机通讯中地址/数据信息的标志位,也可以作为数据的奇偶校验位。

输入:

在接收到附加的第9位数据后,当(RI)=0或者(SM2)=0时,第9位数据才进入RB8,8位数据才能进入接收寄存器,并由硬件置位中断标志RI;否则信息丢失。且不置位RI。

再过一位时间后,不管上述条件时否满足,接收电路即行复位,并重新检测RXD上从1到0的跳变。

(4)方式3:异步第9位方式

方式3为波特率可变的11位UART方式。除波特率外,其余与方式2相同。当时钟频率选用11.0592MHZ时,取易获得标准的波特率,所以很多单片机系统选用这个看起来“怪”的晶振就是这个道理。右表列出了定时器T1工作于方式2常用波特率及初值。常用波特率Fosc(MHZ)SMODTH1初值1920011.05921FDH960011.05920FDH480011.05920FAH240011.05920F4h120011.05920E8h串口的电平转换电路RS232使EIA(ElectronicsIndustriesAssociation)组织推荐的、目前最常用的一种串行通讯接口标准。采用25芯连接器或9芯连接器。常用电平为-12V~+12V逻辑“1”为-3V~-25V,逻辑“0”为+3V~+25VTTL与EIA之间需要用接口电路进行转换为什么需要电平转换电路

单片机使用的是TTL电平,单片机的串口输出信号也是如此,串行通信中一般使用的是RS232通信协议需要外接接口进行电平匹配MAX232和单片机串口连接的典型电路单片机和单片机之间的串行通信也需要电平转换芯片吗?对于两个单片机而言,二者都是TTL电平,所以不需要电平转换芯片。定时/计数器中的核心部件为可预置初值计数器。预置初值后开始计数,直至计数值归0或产生溢出,可申请中断。K1K2可预置初值计数器中断请求功能选择启动控制内部时钟脉冲(定时)外部输入脉冲(计数)溢出信号计数脉冲计数初值二.定时/计数器的工作原理

例:设CTC中为8位加1计数器。按要求选择功能和初值。1.要求检测到100个脉冲,发中断请求,通知CPU。选计数功能,计数初值为156。2.要求定时每隔100s时间,发一次中断请求。设内部时钟周期1s选定时功能,计数初值为156。一.定时/计数器的应用1.计数功能:生产线上产品计数。每个产品通过得到一个脉冲信号,计数器记录脉冲个数,当计数值与设定值相等,启动包装机器。检测转速。电机转动一圈发出一个脉冲,计数器记录一秒时间内脉冲个数,显示转速。2.定时功能:用于实时控制,定时采样、定时启动等。当定时时间与设定值相等,执行规定操作。3 定时/计数器电路CTC3-2-1 MCS-51定时/计数器2个可独立控制的16位定时器/计数器:T0、T1定时器初始化编程:1.功能选择(定时/计数) 2.位数选择(8/13/16位)3.启动方式选择(内部启动/外部启动)4.启动控制(启动/停止)5.恢复初值方式(自动重装/软件重装)1)功能选择位C/T:=0,定时功能,计数内部机器周期脉冲;=1,计数功能,计数引脚T0(T1)输入的负脉冲。1.TMOD定时器方式寄存器(89H)T1T0一.定时器控制、状态寄存器2)方式选择位M1、M0:4种工作方式:13/16/8位3)门控方式选择位GATE:=0,非门控方式(内部启动):

TRx=1,启动定时器工作;

TRx=0,停止定时器工作。=1,门控方式(外部启动):TRx=1且引脚INTx=1才启动。确定定时器工作方式指令:MOVTMOD,#方式字例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#2.TCON定时器控制/状态寄存器1)启动控制位TR0、TR1=0,停止定时器工作=1,启动定时器工作例:启动T0: SETB TR02)溢出中断标志位TF0、TF1定时器溢出使TFx=1,引起中断请求,CPU响应Tx中断后,自动清0TFx。可用软件检测TFx,必须软件清0。

WAIT:JBCTF0,NEXT;检测T0是否溢出

SJMP WAIT ;未溢出,继续检测

NEXT:… ;溢出,TF0清0,处理溢出3.可预置初值的16位加1计数器TH0、TL0、TH1、TL1预置T0初值指令: MOV TH0,#XH

MOV TL0,#XL二.

定时器工作方式

由方式选择位M1、M0设定1.方式013位定时/计数器。THx8位和TLx低5位组成13位加1计数器计数外部脉冲个数:1~8192(213)定时时间(T=1s):1s~8.19ms2.方式116位定时/计数器。THx8位和TLx8位组成16位加1计数器计数外部脉冲个数:1~65536(216)定时时间(T=1s):1s~65536×T=65.54ms3.

方式2自动恢复初值8位定时/计数器。TLx为8位加1计数器,THx为8位初值暂存器。用于需要重复定时和计数的场合。最大计数值:256(28)最大定时时间(T=1s):256s4.方式3T0分成2个8位定时器:TL0定时/计数器和TH0定时器TL0占用T0控制位:C/T,TR0,GATE;TH0占用T1控制位:TR1,TF1。T1不能使用方式3工作5.计算时间常数X(计算初值)计数功能:X=2n-计数值 n:8/13/16定时功能:X=2n-t/T t:定时时间、T:机器周期定时器初始化编程:使用定时器工作之前,先写入控制寄存器,确定好定时器工作方式1.按实际需要选择定时/计数功能2.按时间或计数长度选择方式3.计算时间常数初始化编程格式:MOVTMOD,#方式字;选择方式MOVTHx,#XH ;装入Tx时间常数MOVTLx,#XL(SETBEA ) ;开Tx中断(SETBETx )SETBTRx ;启动Tx定时器

三.MCS-51定时器的应用4.溢出处理编程格式:1)查询方式:先查询定时器溢出标志,再进行溢出处理。 … ;定时器初始化

WAIT:JBC TFx,PT;检测溢出标志

SJMP WAIT PT: MOV THx,#XH;重装时间常数

MOV TLx,#XL

… ;溢出处理

SJMP WAIT2)中断方式:初始化后执行其他任务,中断服务程序处理溢出。

ORG 0000H LJMP MAIN ORG 000BH(001BH);Tx中断入口

LJMP PTS MAIN: … ;初始化后执行其他程序

PTS: … ;溢出中断服务程序

MOV THx,#XH ;重装时间常数

MOV TLx,#XL RETI四.举例由P1.0输出方波信号,周期为2ms,

设fosc=12MHz。2ms解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。计算时间常数:X=216-t/T=216-1000/1=FC18H(1)查询方式:

ORG0000h

JMPSTART ORG 1000H START: MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB TR0 LOOP: JBC TF0,PTF0 SJMP LOOP PTF0: CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH SJMP LOOPEND(2)中断方式

ORG 0000H AJMP MAIN ORG 000BH AJMP PT0INT ORG 0100H MAIN: MOV SP,#60H MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB EA SETB ET0 SETB TR0 HERE: SJMP HERE PT0INT:CPL P1.0 MOV TL0,#18H MOV TH0,#0FCH RETIEND长定时方法:增加一个软件计数器或一个硬件计数器。硬件方式:T0定时,T1计数T0的定时跳变信号P1.0的负跳变次数,计满5个跳变为1秒。P1.0P1.7编制程序使P1.7驱动LED亮1秒灭1秒地闪烁。设时钟频率为6MHzT0方式1定时,T1方式2计数T1计数值为5,初值为#0FBH;设置T0的定时值为100ms,初值为#3CH;T0溢出后(每100ms),P1.0反转一次同时P1.0每下跳变一次(反转两次),T1计数一次累计5次,P1.7反转一次START: MOVTMOD,#61H;T0方式1定时,T1方式2计数

MOVTL1,#0FBH;差5个负跳变就溢出,同时自动重装

MOVTH1,#0FBH;T1计数值为5

CLRP1.0 SETBTR1;T1开始计数LOOP1: CPLP1.7LOOP2: MOVTL0,#3CH;设置T0的定时值为100ms, MOVTH0,#0B0H;每100ms作一次反相跳变

SETB TR0;T0开始计数LOOP3: JBC TF0,LOOP4;T0溢出后(每100ms),P1.0反转一次

SJMP LOOP3;同时P1.0每下跳变一次(反转两次),LOOP4: CPL P1.0;T1计数一次

JBC TF1,LOOP1;累计5次,P1.7反转一次

SJMP LOOP2例定时器外部引脚T0(T1)用作外部中断信号输入端。外部负脉冲引起中断请求,选计数方式,时间常数为FFH。例:门控方式测量正脉冲宽度解:INT1引脚输入被检测信号,记录在正脉冲的时间内包含机器脉冲个数。TR1=1 T1启动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论