第4章51系列单片机并行口的功能模块及应用_第1页
第4章51系列单片机并行口的功能模块及应用_第2页
第4章51系列单片机并行口的功能模块及应用_第3页
第4章51系列单片机并行口的功能模块及应用_第4页
第4章51系列单片机并行口的功能模块及应用_第5页
已阅读5页,还剩110页未读 继续免费阅读

下载本文档

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

文档简介

1、1第四章第四章 51系列单片机系列单片机 的功能模块及应用的功能模块及应用主要掌握并行口、串行口、定主要掌握并行口、串行口、定时器的结构、工作原理及应用时器的结构、工作原理及应用24-1 并行口及其应用并行口及其应用51系列单片机的并行口,按特性可分类为:单一的准双向口(如89C52的P1.2P1.7)多功能复用的准双向口(如89C52的P1.0、P1.1,P3.0P3.7)可作地址总线输出口的准双向口(P2)可作地址/数据总线口的三态双向口(P0)3每个I/O线均由锁存器,输出电路和输入缓冲器组成。每一条口线可独立用作输入和输出。作输出时可锁存数据,输入时可缓冲数据。CPU对口的读操作有两种

2、:读修改写操作(读口锁存器状态)例:ANL P0,A ;(P0)(P0)(A) ORL P0,#data ;(P0)(P0)data DEC P0 ;(P0)(P0) -1读引脚操作(读口引脚上外部输入信息)例 MOV A,P1454-1-1 P0 口口 P0口是一个三态双向口,可作为地址口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用数据分时复用口,也可作为通用I/O接口。接口。 其其1位的结构原理如下图所示。位的结构原理如下图所示。P0口由口由8个这样的电路组成。个这样的电路组成。6P0.x地址 /数据 控制D Q锁存器CLK_QMUX&1V2V1读引脚内部总线读 锁存

3、器写锁存器VCC2134P0口口1位结构图位结构图起输出锁存作用,8个锁存器构成了SFRP0V1、V2组成输出驱动器,以增大带负载能力三态门1是引脚输入缓冲器读锁存器端口7 2地址/数据分时复用功能 当P0口作为地址/数据分时复用总线时,可分为两种情况:一种是从P0口输出地址或数据,另一种是从P0口输入数据。 8在访问片外存储器而需从P0口输出地址或数据信号时,控制信号应为高电平“1”,使转换开关MUX把反相器4的输出端与V1接通,同时把与门3打开。1)当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电平“1”; 2)当地址或数据为0时,经反相器4

4、使V1导通而V2截止,引脚上出现相应的低电平0。这样就将地址/数据的信号输出。93通用I/O接口功能 当P0口作为通用I/O口使用,在CPU向端口输出数据时,对应的控制信号为0,转换开关把输出级与锁存器Q端接通,同时因与门3输出为0使V2截止,此时,输出级是漏极开路电路输出级是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出V1反相,在P0引脚上出现的数据正好是内部总线的数据。当要从P0口输入数据时,引脚信息仍经输入缓冲器进入内部总线。10总之:一 P0口作为一般I/O口使用 1 P0口用作输出口:必须外接上拉电阻必须外接上拉电阻,才有高电平

5、输出。2 P0口作输入口:先向端口锁存器写入写入“1”。二 P0口作为地址/数据总线使用1 以P0口引脚输出低8位地址或数据信息2 由P0口输入数据三 P0口可驱动8个LSTTL电路114-1-2 P1口(准双向口)口(准双向口)12P1.0、P1.1为多功能双向口, P1.2P1.7为单一功能准双向口。P1口的第一功能是准双向口,每一位可分别定义为输入线或输出线。输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供上拉电流负载。89C5289C52P1.0K 0P0.0+5V10K K 013P1的某一位作为输入线输入线时,该位的口锁存器必须保持“1”。使输出场效应管

6、截止。该引脚才可由内部拉高电路拉成高电平,或由外部电路拉成低电平。P1口具有驱动4个LSTTL负载的能力。14154-1-3 P2口(准双向口口(准双向口)D Q锁存器CLK_Q1P2.xV1读引脚内部总线读锁存器写锁存器地址控制VCC内部上拉电阻MUX213图2.11 P2口1位结构图16 当作为准双向通用I/O口使用时: 控制信号使转换开关接向左侧,锁存器Q端经反相器3接V1,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。 171 系统中外接程序存储器时:P2口输出程序存储器的高8位地址,不作I/O口使用。2 系统中无外接程序存储器,而扩展有片外RAM

7、的系统中: 片外RAM的容量256B:P2口仍做输入/输出口使用。使用R0或R1作地址指针。片外RAM的容量256B : P2口不能做输入/输出口,而做系统扩展的高8位地址总线口使用。使用DPTR、P2R0、P2R1作地址指针。 184-1-4 P3口(准双向口)口(准双向口)19 P3口是一多功能口,既做准双向口又做特殊输入输出口。1 做通用I/O口使用: P3口做输入使用,应由软件向口锁存器写“1”。202 做第二功能使用: 某位做第二功能使用该位D锁存器Q应被硬件自动置“1”。 P3.0 RXD P3.5 T1 P3.1 TXD (出) P3.6 WR(出) P3.2 INT0 P3.7

8、 RD(出) P3.3 INT1 P3.4 T03 P3口具有驱动4个LSTTL负载的能力。21I/OI/O端口的操作方式:端口的操作方式:(1 1)输出数据方式)输出数据方式:CPU通过一条数据传送指令就可以把输出通过一条数据传送指令就可以把输出数据写入数据写入P0P3的端口锁存器,然后通过输出驱动器送到的端口锁存器,然后通过输出驱动器送到端口引脚线。例如,下面的指令均可在端口引脚线。例如,下面的指令均可在P0口输出数据。口输出数据。 MOV P0, A ANL P0, #data ORL P0, A(2 2)读端口数据方式:)读端口数据方式: CPU读入的这个数据并非端口引脚线上读入的这个

9、数据并非端口引脚线上的数据。读端口数据可以直接读端口。例如,下面的指令均的数据。读端口数据可以直接读端口。例如,下面的指令均可以从可以从P1口输入数据。口输入数据。 MOV A, P1 MOV 20H, P1 MOV R0, P1 MOV R0, P122(3 3)读端口引脚方式:)读端口引脚方式:读端口引脚方式可以从端口引脚读端口引脚方式可以从端口引脚上读入信息。在这种方式下,上读入信息。在这种方式下,CPU首先必须使欲读端首先必须使欲读端口引脚所对应的锁存器口引脚所对应的锁存器置置1,然后才能读端口引脚。,然后才能读端口引脚。因此,用户在读引脚时必须先因此,用户在读引脚时必须先置位置位锁存

10、器后读,连续锁存器后读,连续使用两条指令。例如,下面的程序可以读使用两条指令。例如,下面的程序可以读P1引脚上的引脚上的低低4位信号。位信号。 MOV P1, #0FH ; 置位置位P1引脚的低引脚的低4位位 MOV A, P1 ; 读读P1引脚上的低引脚上的低4位信号送累加器位信号送累加器A234-1-5 并行口的应用并行口的应用1 外接蜂鸣器2 利用可控硅控制加热电路3 BCD码拨码盘的接口 BCD码拨码盘构造一个拨码盘可以输入1位十进制数据。拨码盘拨到某个位置时,控制线分别与4位数据线中某几位接通。接通线定义为“1”,不通的线定义为“0”。244-2 定时器及其应用定时器及其应用定时器功

11、能:定时器功能: 1 定时操作定时操作 2 测量外部输入信号测量外部输入信号 3 定时输出定时输出 4 监视系统正常工作监视系统正常工作254-2-1定时器的结构和工作原理定时器的结构和工作原理1 定时器由一个N位计数器、计数时钟源控制电路、状态和控制寄存器等组成。 2 计数脉冲有两个来源:外部的脉冲源系统的时钟振荡器。内部时钟外部时钟N位计数器TFTMOD TCON中断中断263 用作定时器时,每经过一个机器周期,计数用作定时器时,每经过一个机器周期,计数器自动加器自动加1,直到计数溢出;用作计数器时,直到计数溢出;用作计数器时,外部时钟脉冲加在定时器的外输入端外部时钟脉冲加在定时器的外输入

12、端T0(P3.4)或或T1(P3.5),每出现一次负跳变,每出现一次负跳变,计数器加计数器加1。4 两个模拟开关,左边决定定时两个模拟开关,左边决定定时/计数器的工计数器的工作状态,右边决定脉冲源是否加在计数器的作状态,右边决定脉冲源是否加在计数器的输入端。输入端。5 16位的计数器由两个位的计数器由两个8位位SFR TH和和TL组成组成。6定时器工作不占用定时器工作不占用CPUCPU时间,除非定时器时间,除非定时器/ /计计数器溢出,才能中断数器溢出,才能中断CPUCPU的当前操作。的当前操作。27定时器定时器/计数器计数器T0、T1的结构框图的结构框图284-2-2 定时器定时器/计数器计

13、数器T0和和T1一方式寄存器一方式寄存器TMOD(89H)1 不能进行位寻址,只能用字节寻址。复不能进行位寻址,只能用字节寻址。复位时,位时,TMOD所有位为所有位为02熟悉各位功能熟悉各位功能T1方式字段方式字段 T0方式字段方式字段GATEC/TM1 M GATEC/TM1M029 GATE门控位“1”:定时器的计数受外部引脚输入电平的控制“0”:定时器的计数不受外部引脚输入电平的控制 C/T功能选择位“1”:计数功能 “ 0”:定时功能 M1M0工作方式选择位30 适于适于T0,两个,两个8位计数器位计数器M1M0工作方式工作方式方方 式式 说说 明明00013位定时器位定时器/计数器计

14、数器01116位定时器位定时器/计数器计数器102具有自动重装初值的具有自动重装初值的8位定时器位定时器/计数器计数器113 31二二 控制寄存器控制寄存器TCON(88H)1 既可字节寻址又可位寻址。复位时,既可字节寻址又可位寻址。复位时,TCON各位为各位为0例:例:SETB TR1 ;启动定时器;启动定时器T1工作工作2熟悉各位功能熟悉各位功能D7 D6 D5 D4 D3 D2 D1 D08FH8EH 8DH 8CH 8BH 8AH 89H 88HTF1TR1TF0 TR0 IE1IT1IE0IT032TF1定时器定时器/计数器计数器T1的溢出标志位的溢出标志位TR1定时器定时器/计数器

15、计数器T1的运行控制位的运行控制位TF0定时器定时器/计数器计数器T0的溢出标志位的溢出标志位TR0定时器定时器/计数器计数器T0的运行控制位的运行控制位IE1外部中断外部中断1下降沿触发标志位下降沿触发标志位IE0外部中断外部中断0下降沿触发标志位下降沿触发标志位IT1外部中断外部中断1触发类型选择位触发类型选择位IT0外部中断外部中断0触发类型选择位触发类型选择位33三三 定时器定时器/计数器的初始化计数器的初始化 初始化即将控制字写入定时器初始化即将控制字写入定时器/计数器计数器的过程。的过程。初始化一般步骤初始化一般步骤:1 写入初值写入初值TH0、TL0或或TH1、TL12 对对TM

16、OD赋值赋值3 对对IE赋值(有中断产生时)赋值(有中断产生时)4 若用软件启动,则仅把若用软件启动,则仅把TR0或或TR1置置“1”; 若用外中断引脚电平启动,则还需给外若用外中断引脚电平启动,则还需给外 引脚加启动电平。引脚加启动电平。34四四 定时器定时器/计数器的计数器的4种工作方式种工作方式1 方式方式035 方式方式0是一个是一个13位的定时器位的定时器/计数器,计数器,由由TL0的低的低5位和位和TH0的的8位组成。位组成。 定时时间为定时时间为T=12*(213-a)/fosc s最大定时时间:最大定时时间:M=213=8192T36例例7:已知晶振频率:已知晶振频率fosc=

17、6MHZ,若使用,若使用T0方式方式0产生产生10ms定时中断,试对定时中断,试对T0进行初进行初始化编程。始化编程。 MOV TH0,#63H MOV TL0,#18H SETB TR0 MOV IE ,#82H RET37例:例:T0工作于方式工作于方式0,要求在,要求在P1.0引脚上产生引脚上产生周期为周期为2ms的方波输出的方波输出(fosc=6MHZ) ORG 0000H AJMP MAIN ORG 000BH AJMP INQP ORG 0030HMAIN: MOV TMOD, #00H MOV TH0, #0F0H MOV TL0, #0CH SETB TR0 ;启动;启动T0

18、SETB ET0 ;允许;允许T0中断中断 SETB EA ;开放;开放CPU中断中断 AJMP $ ;定时中断等待;定时中断等待38 ORG 4000H ;中断服务程序;中断服务程序INQP: MOV TH0, #0F0H ;重写定时常数;重写定时常数 MOV TL0, #0CH CPL P1.0 ;P1.0变反输出变反输出 RETI 392 方式方式1 方式方式1是一个是一个16位定时器位定时器/计数器,结构计数器,结构和操作方式与方式和操作方式与方式0基本相同。定时时间为基本相同。定时时间为T=12*(216-a)/fosc s最大定时时间:最大定时时间:M=216=65536T40例:

19、设例:设fosc=12MHz,T0工作于方式工作于方式1,产生,产生50ms定时中断,定时中断,TF0为高级中断源。试为高级中断源。试编写主程序中的初试化程序和中断服务程编写主程序中的初试化程序和中断服务程序,使序,使P1.0产生周期为产生周期为1秒的方波。秒的方波。MAIN:MOV SP, #EFH MOV TH0, #3CH MOV TL0, #0B0H MOV TMOD , #1 MOV IP, #2 41 MOV IE, #82H SETB TR0 MOV 30H, #0AHPTF0:ORL TL0, #0B0H;中断服务程序中断服务程序 MOV TH0, #3CH DJNZ 30H,

20、 PTF0R MOV 30H, #0AH CPL P1.0PTF0R:RETI42用查询法:用查询法: MOV 30H, #0AH MOV TH0, #3CH MOV TL0, #0B0H MOV TMOD, #1 SETB TR0L2: JBC TF0, L1 SJMP L2L1: MOV TH0, #3CH MOV TL0, #0B0H43 DJNZ 30H, L2 MOV 30H, #0AH CPL P1.0 SJMP L2443 方式方式2 方式方式2是能重置初值的是能重置初值的8位定时器位定时器/计数器,计数器,TL0作为作为8位计数器,位计数器,TH0作为计数初值寄存器。适于用做较

21、精作为计数初值寄存器。适于用做较精确的定时脉冲信号发生器。确的定时脉冲信号发生器。 定时时间定时时间 T=12*(28-a)/fosc s 最大定时时间:最大定时时间:M=28=256T45振荡器 12TLx (8 位)TFx& 11C/_TC/_Tfosc中断请求TxGATE_INTxTRxTHx(8 位 )4重装初值控制S1Tcy图 2.15 定时器/计数器方式2的逻辑结构S2 定时器/计数器方式2的逻辑结构46 MOV TMOD, #60H ; 设置设置T1为方式为方式2计数计数 MOV TH1, #9CH ;赋初值;赋初值 MOV TL1, #9CH SETB TR1DE:JB

22、C TF1, RE ;查询计数溢出;查询计数溢出 AJMP DERE: CPL P1.0 AJMP DE例:用定时器例:用定时器1在方式在方式2计数,要求每计满计数,要求每计满100次,将次,将P1.0端取反。端取反。外部计数信号由P3.5引入,每跳变一次计数器加1100=28-a ; a=156=9CH47保护现场赋计数初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢复现场返回例例4.13(书(书111)aaNNNNYYYY图 中断服务程序流程图48例:当P3.4引脚上的电平发生负跳变时,

23、 从P1.0输出一个500s的同步脉冲。请编程序实现该功能。查询方式,fosc=6MHz。49解:(1)模式选择 选T0为模式2,外部事件计数方式。 当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。 如 图所示。50(2)计算初值 T0工作在外部事件计数方式,当计数到28时,再加1计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。 则: X+1=28 X= 28 1=11111111B=0FFH T0工作在定时工作方

24、式,设晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为 (28X)2s=500s X=6=06H51(3)程序清单START: MOV TMOD,#06H ;设置T0为模式2,外部计数方式 MOV TL0,#0FFH ;T0计数器初值 MOV TH0,#0FFH SETB TR0 ;启动T0计数 LOOP1:JBC TF0,PTFO1 ;查询T0溢出标志, ;TF0=1时转,且清TF0=0 SJMP LOOP1 ; 52 PTFO1:CLR TR0 ;停止计数 MOV TMOD,#02H ;设置T0为模式2,定时方式 MOV TL0,#06H ;送初值,定时500s MOV

25、TH0,#06H CLR P1.0 ; P1.0清0 SETB TR0 ;启动定时500s LOOP2 : JBC TF0,PTFO2 ;查询T0溢出标志, ;TF0=1时转,且清TF0=0 ; (第一个500s到否?) SJMP LOOP2 ;等待 PTFO2 : SETB P1.0 ; P1.0置1 CLR TR0 ;停止计数 SJMP START53振荡器 12TL0 (8位)& 11C/_TC/_Tfosc中断请求T0GATE_TR 0TH1(8位 )S2S1TF0TF1TR1TcyTcyINTx图 2.16定时器 /计数器方式3的逻辑结构S定时器定时器/计数器方式计数器方式3

26、的逻辑结构的逻辑结构 4 方式方式3TH054 方式方式3只适用于只适用于T0,T0分为两个独立的分为两个独立的8位计数器位计数器TL0和和TH0。一般。一般T1用作串行口用作串行口波特率发生器。波特率发生器。 最大定时时间:最大定时时间:M=28=256T5556例例 用定时器用定时器T0,分别产生两个方波,一,分别产生两个方波,一个周期为个周期为200 s,另一个周期为,另一个周期为400 s,该单片机同时使用串行口该单片机同时使用串行口,用定时器用定时器/计数计数器作为波特率发生器。器作为波特率发生器。(fosc =9.216MHZ)。57解:定时初值计算解:定时初值计算TL0=28-9

27、.216*106*100*10-6/12 =256-76.8 =179.2 转换十六进制为转换十六进制为0B3HTH0=28-9.216*106*200*10-6/12 =256-153.6 =102.4 转换十六进制为转换十六进制为66H58 ORG 0000H AJMP MAIN ORG 000BH ;TL0中断入口中断入口 AJMP ITL0 ORG 001BH ;TH0中断入口中断入口 AJMP ITH0 ORG 0100HMAIN:MOV SP, #60H MOV TMOD, #23H 59 MOV TL0, #0B3H MOV TH0, #66H MOV TL1,#data ;da

28、ta是根据波特率是根据波特率 ;要求设置的常数(;要求设置的常数(初值)初值) MOV TH1,#data SETB TR0 ;启动;启动TL0初值初值 SETB TR1 ;启动;启动TH0初值初值 SETB ET0 ;允许允许TL0中断中断 SETB ET1 ;允许允许TH0中断中断 SETB EA ;CPU中断开放中断开放 AJMP $ 60 ORG 0200HITL0:MOV TL0, #0B3H CPL P1.0 ;输出方波输出方波200 s RETIITH0:MOV TH0, #66H CPL P1.1 ;输出方输出方波波400 s RETI61例:设某用户系统已使用了两个例:设某用

29、户系统已使用了两个外部中断源,并置定时器外部中断源,并置定时器T1T1工作工作在模式在模式2 2,作串行口波特率发生,作串行口波特率发生器用。现要求再增加一个外部中器用。现要求再增加一个外部中断源,并由断源,并由P1.0P1.0引脚输出一个引脚输出一个5kHz5kHz的方波。的方波。FoscFosc=12MHz.=12MHz.62解:解:(1)工作模式)工作模式 可设置可设置T0T0工作在模式工作在模式3 3计数器方式计数器方式,把,把T0T0的引脚的引脚作附加的外部中断输入端,作附加的外部中断输入端,TL0TL0的计数初值为的计数初值为FFHFFH,当检测到当检测到T0T0引脚电平出现由引脚

30、电平出现由1 1至至0 0的负跳变时,的负跳变时,TL0TL0产生溢出,申请中断产生溢出,申请中断,相当于一个边沿触发的外部,相当于一个边沿触发的外部中断源中断源。 T0T0模式模式3 3下,下,TL0TL0作计数用,而作计数用,而TH0TH0用作用作8 8位的定位的定时器时器,定时控制,定时控制P1.0P1.0引脚输出引脚输出5kHz5kHz的方波信号。的方波信号。 63(2)计算初值)计算初值TL0TL0的计数初值为的计数初值为FFHFFH。TH0TH0的计数初值的计数初值X X为:为: P1.0P1.0方波周期方波周期T=1/(5kHz)=0.2ms=200sT=1/(5kHz)=0.2

31、ms=200s 用用TH0TH0作定时作定时100s100s时,时, X=256-100 X=256-100 12/12=15612/12=15664(3)程序清单)程序清单 MOV TMOD,#27H ;T0为模式为模式3,计数方式计数方式 ; T1为模式为模式2,定时方,定时方式式 MOV TL0,#0FFH ;TL0计数初值计数初值 MOV TH0,#156 ;TH0计数初值计数初值 MOV TL1,#data ;data是根据波特率是根据波特率 ;要求设置的常数(;要求设置的常数(初值)初值) MOV TH1,#data MOV TCON,#55H ;外中断;外中断0,外中断,外中断1

32、边沿触发,边沿触发, ;启动;启动T0,T1 MOV IE,#9FH ; 开放全部开放全部中断中断 65TL0溢出中断服务程序(由溢出中断服务程序(由000BH转来)转来)TL0INT:MOV TL0,#0FFH ;TL0重赋初值重赋初值 ;(中断处理);(中断处理) RETI TH0溢出中断服务程序(由溢出中断服务程序(由001BH转来)转来)TH0INT:MOV TH0,#156 ;TH0重赋初值重赋初值 CPL P1.0 ;P1.0取反输出取反输出 RETI串行口及外部中断串行口及外部中断0,外部中断,外部中断1的服务程序略。的服务程序略。66设时钟频率为设时钟频率为6MHz6MHz。编

33、写利用。编写利用T0T0产生产生1s1s定时的程序。定时的程序。67五五 门控位的应用门控位的应用GATE位是控制外部输入脉冲对定时计数器的位是控制外部输入脉冲对定时计数器的控制。当为控制。当为“1”时,允许外部输入电平控制时,允许外部输入电平控制启、停定时器。利用这个特性可测量外部输启、停定时器。利用这个特性可测量外部输入脉冲的宽度入脉冲的宽度。例:利用T0门控位测试INT0引脚上出现的正脉冲的宽度,将所测得值高位存入片内71H单元,低位存入片内70H单元。(fosc=12MHz)测试时,应在/INT0为低电平时,设TR0为1;当/INT0变高时,启动计数;当/INT0再变低时,停止计数。该

34、计数值即被测正脉冲宽度。68MOV TMOD , #09H;T0定时器方式,GATE=1MOV TL0, #00HMOV TH0, #00HMOV R0, #70HJB P3.2, $ ;等待P3.2变低SETB TR0 ;启动T0准备工作JNB P3.2, $ ;等待P3.2变高JB P3.2, $ ;等待P3.2再次变低CLR TR0 ;停止计数MOV R0, TL0 ;存放计数低字节INC R0MOV R0, TH0 ;存放计数高字节SJMP $ 694-3 串行接口串行接口UART一一 两种基本的通信方式两种基本的通信方式 0 1 0 0 1 0 0 1D0D1D2D3D4D5D6D7

35、状态控制(选通)计算机计算机(或外设) 0 1 0 0 1 0 0 1(a)8T计算机计算机计算机(或外设)(b).(a) 并行通信;(b) 串行通信70二串行通信传输方式二串行通信传输方式ASSB(a)(b)(c)ABAB(a) 单工方式;(b) 半双工方式;(c) 全双工方式71三串行通信两种基本方式三串行通信两种基本方式1异步通信异步通信异步通信中数据或字符是一帧一帧传送。异步通信中数据或字符是一帧一帧传送。帧即为一个字符的完整通信格式,又称帧格帧即为一个字符的完整通信格式,又称帧格式。在帧格式中,一个字符由式。在帧格式中,一个字符由4部分组成:起部分组成:起始位、数据位、奇偶校验位、停

36、止位。始位、数据位、奇偶校验位、停止位。 串行异步传送的字符格式722 同步通信同步通信 数据或字符开始处是由一同步字符来指示,数据或字符开始处是由一同步字符来指示,并由时钟实现发送端和接收端同步。并由时钟实现发送端和接收端同步。四四 波特率波特率(Baud rate) 波特率就是数据的传送速率,即每秒钟传波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位送的二进制位数,单位为位/秒。秒。 要求发送端与接收端的波特率必须一致。要求发送端与接收端的波特率必须一致。734-3-1 串行接口的组成和特性 51系列单片机的串行口是全双工异步串行系列单片机的串行口是全双工异步串行通信接口。通信

37、接口。一一 串行口结构串行口结构1 波特率发生器波特率发生器 主要由主要由T1、T2及内部的一些控制开关和分频器及内部的一些控制开关和分频器组成。提供串行口的时钟信号即组成。提供串行口的时钟信号即TCLK、RCLK。74EAESSM0 SM1 SM2 REN TB8 RB8TIRI波波特特率率发发生生器器发送SBUFTI 串行口 (TX) RI 控制逻辑 (RX)接收SBUF串串行行口口中中断断T TX XC CL LK KR RX XC CL LK KT TX XD DR RX XD D内内部部总总线线I IE ES SC CO ON N串行口结构框图75注意注意:接收器是双缓冲结构,在前一

38、个字节被从接收缓冲器接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前未读取时,会丢失前一个字节一个字节.762 串行口的内部包含串行口的内部包含串行数据缓冲寄存器串行数据缓冲寄存器SBUF数据接收缓冲器数据接收缓冲器(只读出不写入只读出不写入)和数据发送缓冲器和数据发送缓冲器(只写只写入不读出入不读出)。物理上隔离,共用一个地址。物理上隔离,共用一个地址( 99H )。当向当

39、向SBUF发发“写写”命令时(执行命令时(执行MOV SBUF,A ),即),即从片内总线向发送从片内总线向发送SBUF写入数据写入数据,并开始由并开始由TXD引脚向引脚向外发送一帧数据,发送完使外发送一帧数据,发送完使TI=1。在满足串行口接收中断标志位在满足串行口接收中断标志位RI(SCON.0)=0的条件的条件下,置允许接收位下,置允许接收位REN(SCON.4)=1就会接收一帧数就会接收一帧数据进入移位寄存器,并装载到接收据进入移位寄存器,并装载到接收SBUF中,同时使中,同时使RI=1。当发读。当发读SBUF命令时(执行命令时(执行MOV A,SBUF),便),便由接收由接收SBUF

40、取出信息通过内部总线送取出信息通过内部总线送CPU。77串行口控制寄存器串行口控制寄存器串行数据输入串行数据输入/输出引脚输出引脚 接收方式下,串行数据从接收方式下,串行数据从RXD(P3.0)输入。输入。串行口内部在接收缓冲器之前还有移位寄存串行口内部在接收缓冲器之前还有移位寄存器,构成串行接收双缓冲结构。避免数据接器,构成串行接收双缓冲结构。避免数据接收重叠。收重叠。 发送方式下,串行数据从发送方式下,串行数据从TXD(P3.1)输出。输出。串行口控制逻辑串行口控制逻辑78二串行口控制二串行口控制1 串行口控制寄存器串行口控制寄存器SCON(98H) SM0和和SM1SM0SM1 SM2

41、REN TB8 RB8TIRISM0 SM1工作方式功 能波特率0 0 0扩展移位寄存器 fosc/120 1 18位UART由定时器控制1 0 29位UARTfosc/32 fosc/641 1 39位UART由定时器控制79SM2 方式方式2和方式和方式3的多机通信控制位的多机通信控制位方式方式0,SM2=0。方式方式1,若,若SM2=1,只有接收到有效停止位,接,只有接收到有效停止位,接收中断收中断RI才置才置1。方式方式2和方式和方式3中,如中,如SM2=1,则接收到的第,则接收到的第9位位数据数据(RB8)为为0时不启动接收中断标志时不启动接收中断标志RI(即即RI=0),并且将接收

42、到的前并且将接收到的前8位数据丢弃;位数据丢弃;RB8为为1时,才时,才将接收到的前将接收到的前8位数据送入位数据送入SBUF,并置位,并置位RI,产生中断请求。当产生中断请求。当SM2=0时,则不论第时,则不论第9位数据位数据为为0或或1,都将前,都将前8位数据装入位数据装入SBUF中,并产生中中,并产生中断请求。该功能用于多机通信中。断请求。该功能用于多机通信中。80REN 允许串行接收位允许串行接收位 1允许接收;允许接收;0禁止接收禁止接收 由软件置由软件置1或清或清0,相当于串行接收的开关。,相当于串行接收的开关。 在串行通信接收控制过程中,如果满足在串行通信接收控制过程中,如果满足

43、RI0和和REN1(允许接收)的条件,就允许接收,一(允许接收)的条件,就允许接收,一帧数据就装载入接收帧数据就装载入接收SBUF中。中。TB8 发送数据发送数据D8位位 在方式在方式2和方式和方式3时,时,TB8为所要发送的第为所要发送的第9位数据。位数据。在多机通信中,以在多机通信中,以TB8位的状态表示主机发送的位的状态表示主机发送的是地址还是数据:是地址还是数据:TB8=0为数据,为数据,TB8=1为地址;为地址;也可用作数据的奇偶校验位。该位由软件置位或也可用作数据的奇偶校验位。该位由软件置位或复位。复位。在方式在方式0或方式或方式1中,该位未用中,该位未用81RB8 接收数据接收数

44、据D8位位 在方式在方式2和方式和方式3时,接收到的第时,接收到的第9位数据,可位数据,可作为奇偶校验位或地址帧或数据帧的标志。作为奇偶校验位或地址帧或数据帧的标志。方式方式1时,若时,若SM2=0,则,则RB8是接收到的停止是接收到的停止位。在方式位。在方式0时,不使用时,不使用RB8位。位。TI 发送中断标志发送中断标志 在方式在方式0时,当发送数据第时,当发送数据第8位结束后,或在其位结束后,或在其它方式发送停止位后,由内部硬件使它方式发送停止位后,由内部硬件使TI置位置位,向向CPU请求中断。意味着向请求中断。意味着向CPU提供提供“发送发送缓冲器缓冲器SBUF已空已空”的信息,的信息

45、,CPU可以准备发可以准备发送下一帧数据。送下一帧数据。CPU在响应中断后,必须用在响应中断后,必须用软件清零。此外,软件清零。此外,TI也可供查询使用。也可供查询使用。82RI接收中断标志位接收中断标志位 在方式在方式0时,当接收数据的第时,当接收数据的第8位结束后,或在位结束后,或在其它方式接收到停止位的中间时由内部硬件其它方式接收到停止位的中间时由内部硬件使使RI置位,向置位,向CPU请求中断。表示一帧数据请求中断。表示一帧数据接收结束,并已装入接收接收结束,并已装入接收SBUF中,要求中,要求CPU取走数据。在取走数据。在CPU响应中断后,也必须用软响应中断后,也必须用软件清零。件清零

46、。RI也可供查询使用。也可供查询使用。832 特殊功能寄存器特殊功能寄存器PCONSMOD位是串行口波特率系数控制位,为位是串行口波特率系数控制位,为1时时使波特率加倍。使波特率加倍。其余位是掉电方式控制位,其余位是掉电方式控制位,与串行口无关与串行口无关。SMOD844-3-2串行接口的工作原理串行接口的工作原理一 方式方式01 方式方式0为同步移位寄存器输入为同步移位寄存器输入/输出方式,常输出方式,常用于扩展并行用于扩展并行I/O口。口。2 数据由数据由RXD串行输入串行输入/输出,输出,TXD输出移位脉输出移位脉冲。冲。3 数据传输波特率固定为数据传输波特率固定为fosc/12。4 接

47、收接收/发送的是发送的是8位数据,传输时位数据,传输时低位在前低位在前。85输出:输出: 当执行写SBUF的指令时(MOV SBUF,A),启动串行数据发送。从低位开始串行输出。当完成一个字节的输出后就停止移位,并置位TI。 输入:输入: 在REN=1,RI=0时启动串行口接收。当外部移位寄存器内容移入内部移位寄存器,并写入SBUF,则置位RI,停止移位,完成一个字节的输入。注意:每当发送或接收完8位数据时,由硬件将发送中断TI或接收中断RI标志置“1”;CPU响应TI或RI中断请求时,不会清除标志,必须由软件清“0”.86二 方式11 方式1时,串行口为10位通用异步接口。2 数据传输波特率

48、由定时/计数器T1和T2的溢出决定,由程序设定。 当T2CON中RCLK和TCLK置位时,由T2作接收/发送的波特率发生器;当RCLK和TCLK都为0时,由T1作接收/发送的波特率发生器。3 数据从引脚TXD端输出,从引脚RXD输入。87发送发送 当数据写入发送缓冲器时,启动发送器开始发送。8位数据发送完,置位TI=1,并申请中断,通知CPU可发送下一个数据。接收接收 在REN=1的前提下,确认是真正起始位“0”后,开始接收一帧数据。当RI=0且SM2=0时,数据被有效接收。将接收到的数据装入串行口的SBUF,并置位RI.88三 方式2和方式31 CPU向发送缓冲器写入数据就启动串行口发送。发

49、送完毕,使TI=1。2 接收时,先置REN为“1”,将RI清“0”。再根据SM2状态和所接收到RB8状态决定串口在信息到来后是否会使RI=1,申请中断,接收数据。当SM2=0,不管RB8状态,将RI置1串口接收当SM2=1, RB8=1时,多机通信,接收信息为地 址,将RI置1串口接收 RB8=0时,接收信息为数据,但不发给本从机,此时RI不置1数据丢失894-3-3 波特率一 方式0:波特率=振荡器频率/12二 方式2:波特率=2SMOD*振荡器频率/64三 方式1、3(T1产生波特率):波特率=2SMOD*振荡器频率/32*12(256-(TH1)注:记住当振荡器频率选用11.0592MH

50、Z时,对于常用波特率,能正确计算T1的初值。904-3-4 多机通信原理在主从式多机系统中: 1主机发出的信息有两类。一类为地址,用来确定需要和主机通信的从机,特征是串行传送的第9位数据为1;另一类是数据,特征是串行传送的第9位数据为0。2对从机来说,在接收时,若RI=0,则只要SM2=0,接收总能实现;而若SM2=1,则发送的第9位TB8必须为1接收才能进行。911 主机首先发出要求通信的从机地址信号。此时,所有从机的SM2都为“1”,所有从机均收到地址信号。2 从机判断主机发出的地址信号是否与本从机号相符。相符的从机SM2“0”,反之为“1”。3 主机发送数据帧。仅SM2=0的从机可收到。

51、924-3-5 串行口的应用和编程一串行口应用同一印板内,两个单片机串行口可直接通信。单片机与PC机之间利用串行口通信,必须进行电平转换。二串行口编程串行口初始化编程: 选择串行口工作方式,波特率,允许串行口中断。即对SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF编程。93例1:编写程序,功能为对串行口初始化为方式1输入/输出,fosc=11.0592MHZ,波特率为9600,先在串行口上输出字符串“MCS-51”,接着读串行口上输入的字符,又将该字符从串行口上输出。 MOV TMOD, #20H MOV TH1, #0FDH MOV TL1, #0FDH SET

52、B TR1 MOV SCON, #52H MOV R4, #0 MOV DPTR, #TSAB94LP1: MOV A, R4 MOVC A, A+DPTR JZ LP6LP3: JBC TI, LP2 SJMP LP3LP2: MOV SBUF, A INC R4 SJMP LP1LP6: JBC RI, LP5 SJMP LP6LP5: MOV A, SBUFLP8:JBC TI, LP7 SJMP LP8LP7:MOV SBUF, A SJMP LP6TSAB:DB MCS-51 DB 0AH,0DH,0 95例例2:89C52串行口按双工方式进行数据收发,要求波串行口按双工方式进行数据

53、收发,要求波特率为特率为1200,串口工作在方式串口工作在方式1。编写有关的通信程。编写有关的通信程序。设发送数据区的首地址为序。设发送数据区的首地址为20H,接收数据区的,接收数据区的首地址为首地址为40H,fosc为为11.0592MHz。解解:双工通信要求收、发能同时进行。实际上,收、发操作主要双工通信要求收、发能同时进行。实际上,收、发操作主要是在串行接口进行,是在串行接口进行,CPU只是把数据从接收缓冲器读出和把只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据写入发送缓冲器。 数据传送用中断方式进行,响应中断以后,通过检测是数据传送用中断方式进行,响应中断以后,通过检测是RI置

54、置位还是位还是TI置位来决定置位来决定CPU是进行发送操作还是接收操作。发是进行发送操作还是接收操作。发送和接收都通过调用子程序来完成。送和接收都通过调用子程序来完成。96 主程序主程序 MOV TMOD ,#20H ;T1设为模式设为模式2 MOV TL1 , #0E8H ; MOV TH1 ,#0E8H ; SETB TR1 ;启动定时器启动定时器1 MOV SCON ,#50H ;设置为方式设置为方式1,REN=1 MOV R0 ,#20H ;发送数据区首址发送数据区首址 MOV R1 ,#40H ;接收数据区首址接收数据区首址 ACALL SOUT ;先输出一个字符先输出一个字符 SE

55、TB ES SETB EA 中断服务程序中断服务程序 ORG 0023H ;串行口中断入口串行口中断入口 AJMP SBR1 ;转至中断服务程序转至中断服务程序 ORG 0100H SBR1: JNB RI ,SEND ;TI=1,为发送中断为发送中断 ACALL SIN ;RI=1,为接收中断为接收中断 SJMP NEXT ;转至统一的出口转至统一的出口SEND: ACALL SOUT ;调用发送子程序调用发送子程序NEXT: RETI ;中断返回中断返回 97发送子程序发送子程序SOUT: CLR TI MOV A ,R0 ;取发送数据到取发送数据到A INC R0 ;修改发送数据指针修改

56、发送数据指针 MOV SBUF ,A ;发送发送 RET ;返回返回接收子程序接收子程序 SIN: CLR RI MOV A ,SBUF ;读出接收缓冲区内容读出接收缓冲区内容 MOV R1 ,A ;读入接收缓冲区读入接收缓冲区 INC R1 ;修改接收数据指针修改接收数据指针 RET ;返回返回98用串行口进行双机异步通信例3:将甲机片内RAM50H5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200,fosc=11.0592MHz。 使乙机从甲机接收16个字节数据块,并存入片外3000H300FH单元。接收过程中要求判

57、奇偶标志RB8。若出错则置F0标志为1,反之为0,然后返回。99甲机发送子程序 MOV TMOD,#20H MOV TL1, #0EBH MOV TH1, #0E8H SETB TR1 MOV SCON,#0C0H MOV R0, #50H MOV R7, #10HTRS:MOV A, R0 MOV C, P MOV TB8, C MOV SBUF, AWAIT:JNB TI,$ CLR TI INC R0 DJNZ R7,TRS RET100乙机接收子程序 MOV TMOD,#20H MOV TL1,#0EBH MOV TH1,#0E8H SETB TR1 MOV SCON,#0C0H MO

58、V DPTR,#3000H MOV R7,#10H SETB RENWAIT:JNB RI,$ CLR RI MOV A,SBUF JNB PSW.0, PZ JNB RB8, ERR SJMP YESPZ: JB RB8,ERRYES:MOVX DPTR,A INC DPTR DJNZ R7,WAIT CLR PSW.5 RETERR:SETB PSW.5 RET注意:双机通信时,两机应用相同的工作方式和波特率。1014-3-6 RS232C总线和电平转换器RS232C是由美国电子工业协会(是由美国电子工业协会(EIA)正式公布)正式公布的,在异步串行通信中应用最广的标准总线(的,在异步串行

59、通信中应用最广的标准总线(C表示表示此标准修改了三次)。它包括了按位串行传输的电此标准修改了三次)。它包括了按位串行传输的电气和机械方面的规定,适用于短距离或带调制解调气和机械方面的规定,适用于短距离或带调制解调器的通信场合。器的通信场合。为了提高数据传输率和通信距离,为了提高数据传输率和通信距离,EIA又公布了又公布了RS422,RS423和和RS-485串行总线接口作准。串行总线接口作准。102 ELA RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算机与外设之间的数据通信。间、计算机与外设之间的数据通信。该标准

60、的目的是定义数据终端设备(该标准的目的是定义数据终端设备(DTE)之间接口的电气特性。一般的串)之间接口的电气特性。一般的串行通信系统是指微机和调制解调器(行通信系统是指微机和调制解调器(modem),如),如图图。调制解调器叫数据电。调制解调器叫数据电路终端设备(简称路终端设备(简称DCE)。)。 RS-232C提供了单片机与单片机、单片机与提供了单片机与单片机、单片机与PC机间串行数据通信的标准接口。通信距离可达到机间串行数据通信的标准接口。通信距离可达到 15 m。103RS232C接口的具体规定如下接口的具体规定如下: (l)范围)范围 RS-232C标准适用于标准适用于DCE和和 DTE间的串行二进制通信

温馨提示

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

最新文档

评论

0/150

提交评论