第4章51系列单片机并行口的功能模块及应用解析课件

上传人:仙*** 文档编号:241644499 上传时间:2024-07-12 格式:PPT 页数:115 大小:1.59MB
返回 下载 相关 举报
第4章51系列单片机并行口的功能模块及应用解析课件_第1页
第1页 / 共115页
第4章51系列单片机并行口的功能模块及应用解析课件_第2页
第2页 / 共115页
第4章51系列单片机并行口的功能模块及应用解析课件_第3页
第3页 / 共115页
点击查看更多>>
资源描述
第四章第四章 51系列单片机系列单片机 的功能模块及应用的功能模块及应用主要掌握并行口、串行口、定主要掌握并行口、串行口、定时器的结构、工作原理及应用时器的结构、工作原理及应用14-1 并行口及其应用并行口及其应用51系列单片机的并行口,按特性可分类为:单一的准双向口(如89C52的P1.2P1.7)多功能复用的准双向口(如89C52的P1.0、P1.1,P3.0P3.7)可作地址总线输出口的准双向口(P2)可作地址/数据总线口的三态双向口(P0)2每个I/O线均由锁存器,输出电路和输入缓冲器组成。每一条口线可独立用作输入和输出。作输出时可锁存数据,输入时可缓冲数据。CPU对口的读操作有两种:读修改写操作(读口锁存器状态)例:ANLP0,A ;(P0)(P0)(A)ORLP0,#data;(P0)(P0)dataDECP0;(P0)(P0)-1读引脚操作(读口引脚上外部输入信息)例MOVA,P1344-1-1 P0 口口 P0口是一个三态双向口,可作为地址口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用数据分时复用口,也可作为通用I/O接口。接口。其其1位的结构原理如下图所示。位的结构原理如下图所示。P0口由口由8个这样的电路组成。个这样的电路组成。5P0口口1位结构图位结构图起输出锁存作用,8个锁存器构成了SFRP0V1、V2组成输出驱动器,以增大带负载能力三态门1是引脚输入缓冲器读锁存器端口62地址/数据分时复用功能当P0口作为地址/数据分时复用总线时,可分为两种情况:一种是从P0口输出地址或数据,另一种是从P0口输入数据。7在访问片外存储器而需从P0口输出地址或数据信号时,控制信号应为高电平“1”,使转换开关MUX把反相器4的输出端与V1接通,同时把与门3打开。1)当地址或数据为“1”时,经反相器4使V1截止,而经与门3使V2导通,P0.x引脚上出现相应的高电平“1”;2)当地址或数据为0时,经反相器4使V1导通而V2截止,引脚上出现相应的低电平0。这样就将地址/数据的信号输出。83通用I/O接口功能 当P0口作为通用I/O口使用,在CPU向端口输出数据时,对应的控制信号为0,转换开关把输出级与锁存器Q端接通,同时因与门3输出为0使V2截止,此时,输出级是漏极开路电路输出级是漏极开路电路。当写脉冲加在锁存器时钟端CLK上时,与内部总线相连的D端数据取反后出现在Q端,又经输出V1反相,在P0引脚上出现的数据正好是内部总线的数据。当要从P0口输入数据时,引脚信息仍经输入缓冲器进入内部总线。9总之:一 P0口作为一般I/O口使用 1 P0口用作输出口:必须外接上拉电阻必须外接上拉电阻,才有高电平输出。2 P0口作输入口:先向端口锁存器写入写入“1”。二 P0口作为地址/数据总线使用1 以P0口引脚输出低8位地址或数据信息2 由P0口输入数据三 P0口可驱动8个LSTTL电路104-1-2 P1口(准双向口)口(准双向口)11P1.0、P1.1为多功能双向口,P1.2P1.7为单一功能准双向口。P1口的第一功能是准双向口,每一位可分别定义为输入线或输出线。输出驱动部分由场效应管V1与内部上拉电阻组成。当其某位输出高电平时,可以提供上拉电流负载。12P1的某一位作为输入线输入线时,该位的口锁存器必须保持“1”。使输出场效应管截止。该引脚才可由内部拉高电路拉成高电平,或由外部电路拉成低电平。P1口具有驱动4个LSTTL负载的能力。13144-1-3 P2口(准双向口口(准双向口)15当作为准双向通用I/O口使用时:控制信号使转换开关接向左侧,锁存器Q端经反相器3接V1,其工作原理与P1相同,也具有输入、输出、端口操作三种工作方式,负载能力也与P1相同。161 系统中外接程序存储器时:P2口输出程序存储器的高8位地址,不作I/O口使用。2 系统中无外接程序存储器,而扩展有片外RAM的系统中:片外RAM的容量256B:P2口仍做输入/输出口使用。使用R0或R1作地址指针。片外RAM的容量256B:P2口不能做输入/输出口,而做系统扩展的高8位地址总线口使用。使用DPTR、P2R0、P2R1作地址指针。174-1-4 P3口(准双向口)口(准双向口)18 P3口是一多功能口,既做准双向口又做特殊输入输出口。1 做通用I/O口使用:P3口做输入使用,应由软件向口锁存器写“1”。192 做第二功能使用:某位做第二功能使用该位D锁存器Q应被硬件自动置“1”。P3.0 RXD P3.5 T1 P3.1 TXD(出)P3.6 WR(出)P3.2 INT0 P3.7 RD(出)P3.3 INT1 P3.4 T03P3口具有驱动4个LSTTL负载的能力。20I/OI/O端口的操作方式:端口的操作方式:(1 1)输输出出数数据据方方式式:CPU通通过过一一条条数数据据传传送送指指令令就就可可以以把把输输出出数数据据写写入入P0P3的的端端口口锁锁存存器器,然然后后通通过过输输出出驱驱动动器器送送到到端口引脚线。例如,下面的指令均可在端口引脚线。例如,下面的指令均可在P0口输出数据。口输出数据。MOV P0,A ANL P0,#data ORL P0,A(2 2)读读端端口口数数据据方方式式:CPU读读入入的的这这个个数数据据并并非非端端口口引引脚脚线线上上的的数数据据。读读端端口口数数据据可可以以直直接接读读端端口口。例例如如,下下面面的的指指令令均均可以从可以从P1口输入数据。口输入数据。MOV A,P1 MOV 20H,P1 MOV R0,P1 MOV R0,P121(3 3)读读端端口口引引脚脚方方式式:读读端端口口引引脚脚方方式式可可以以从从端端口口引引脚脚上上读读入入信信息息。在在这这种种方方式式下下,CPU首首先先必必须须使使欲欲读读端端口口引引脚脚所所对对应应的的锁锁存存器器置置1,然然后后才才能能读读端端口口引引脚脚。因因此此,用用户户在在读读引引脚脚时时必必须须先先置置位位锁锁存存器器后后读读,连连续续使使用用两两条条指指令令。例例如如,下下面面的的程程序序可可以以读读P1引引脚脚上上的的低低4位信号。位信号。MOV P1,#0FH ;置位置位P1引脚的低引脚的低4位位 MOV A,P1;读读P1引脚上的低引脚上的低4位信号送累加器位信号送累加器A224-1-5 并行口的应用并行口的应用1 外接蜂鸣器2 利用可控硅控制加热电路3 BCD码拨码盘的接口 BCD码拨码盘构造一个拨码盘可以输入1位十进制数据。拨码盘拨到某个位置时,控制线分别与4位数据线中某几位接通。接通线定义为“1”,不通的线定义为“0”。234-2 定时器及其应用定时器及其应用定时器功能:定时器功能:1 定时操作定时操作 2 测量外部输入信号测量外部输入信号 3 定时输出定时输出 4 监视系统正常工作监视系统正常工作244-2-1定时器的结构和工作原理定时器的结构和工作原理1 定时器由一个N位计数器、计数时钟源控制电路、状态和控制寄存器等组成。2 计数脉冲有两个来源:外部的脉冲源系统的时钟振荡器。内部时钟外部时钟N位计数器TFTMOD TCON中断中断253 用作定时器时,每经过一个机器周期,计数用作定时器时,每经过一个机器周期,计数器自动加器自动加1,直到计数溢出;用作计数器时,直到计数溢出;用作计数器时,外部时钟脉冲加在定时器的外输入端外部时钟脉冲加在定时器的外输入端T0(P3.4)或或T1(P3.5),每出现一次负跳变,每出现一次负跳变,计数器加计数器加1。4 两个模拟开关,左边决定定时两个模拟开关,左边决定定时/计数器的工计数器的工作状态,右边决定脉冲源是否加在计数器的作状态,右边决定脉冲源是否加在计数器的输入端。输入端。5 16位的计数器由两个位的计数器由两个8位位SFR TH和和TL组成组成。6定时器工作不占用定时器工作不占用CPUCPU时间,除非定时器时间,除非定时器/计计数器溢出,才能中断数器溢出,才能中断CPUCPU的当前操作。的当前操作。26定时器定时器/计数器计数器T0、T1的结构框图的结构框图274-2-2 定时器定时器/计数器计数器T0和和T1一一方式寄存器方式寄存器TMOD(89H)1 不能进行位寻址,只能用字节寻址。复不能进行位寻址,只能用字节寻址。复位时,位时,TMOD所有位为所有位为02熟悉各位功能熟悉各位功能T1方式字段方式字段 T0方式字段方式字段GATEC/TM1 M GATEC/TM1M028 GATE门控位“1”:定时器的计数受外部引脚输入电平的控制“0”:定时器的计数不受外部引脚输入电平的控制 C/T功能选择位“1”:计数功能 “0”:定时功能 M1M0工作方式选择位29 适于适于T0,两个两个8位计数器位计数器M1M0工作方式工作方式方方 式式 说说 明明00013位定时器位定时器/计数器计数器01116位定时器位定时器/计数器计数器102具有自动重装初值的具有自动重装初值的8位定时器位定时器/计数器计数器11330二二 控制寄存器控制寄存器TCON(88H)1 既可字节寻址又可位寻址。复位时,既可字节寻址又可位寻址。复位时,TCON各位为各位为0例:例:SETB TR1 ;启动定时器启动定时器T1工作工作2熟悉各位功能熟悉各位功能D7 D6 D5 D4 D3 D2 D1 D08FH8EH 8DH 8CH 8BH 8AH 89H 88HTF1TR1TF0 TR0 IE1IT1IE0IT031TF1定时器定时器/计数器计数器T1的溢出标志位的溢出标志位TR1定时器定时器/计数器计数器T1的运行控制位的运行控制位TF0定时器定时器/计数器计数器T0的溢出标志位的溢出标志位TR0定时器定时器/计数器计数器T0的运行控制位的运行控制位IE1外部中断外部中断1下降沿触发标志位下降沿触发标志位IE0外部中断外部中断0下降沿触发标志位下降沿触发标志位IT1外部中断外部中断1触发类型选择位触发类型选择位IT0外部中断外部中断0触发类型选择位触发类型选择位32三三 定时器定时器/计数器的初始化计数器的初始化 初始化即将控制字写入定时器初始化即将控制字写入定时器/计数器计数器的过程。的过程。初始化一般步骤初始化一般步骤:1 写入初值写入初值TH0、TL0或或TH1、TL12 对对TMOD赋值赋值3 对对IE赋值(有中断产生时)赋值(有中断产生时)4 若用软件启动,则仅把若用软件启动,则仅把TR0或或TR1置置“1”;若用外中断引脚电平启动,则还需给外若用外中断引脚电平启动,则还需给外 引脚加启动电平。引脚加启动电平。33四四 定时器定时器/计数器的计数器的4种工作方式种工作方式1 方式方式034 方式方式0是一个是一个13位的定时器位的定时器/计数器,计数器,由由TL0的低的低5位和位和TH0的的8位组成。位组成。定时时间为定时时间为T=12*(213-a)/fosc s最大定时时间:最大定时时间:M=213=8192T35例例7:已知晶振频率:已知晶振频率fosc=6MHZ,若使用若使用T0方式方式0产生产生10ms定时中断,试对定时中断,试对T0进行初进行初始化编程。始化编程。MOV TH0,#63H MOV TL0,#18H SETB TR0 MOV IE ,#82H RET36例:例: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 SETB ET0 ;允许允许T0中断中断 SETB EA ;开放开放CPU中断中断 AJMP$;定时中断等待定时中断等待37 ORG 4000H ;中断服务程序中断服务程序INQP:MOV TH0,#0F0H ;重写定时常数重写定时常数 MOV TL0,#0CH CPL P1.0 ;P1.0变反输出变反输出 RETI 382 方式方式1 方式方式1是一个是一个16位定时器位定时器/计数器,结构计数器,结构和操作方式与方式和操作方式与方式0基本相同。定时时间为基本相同。定时时间为T=12*(216-a)/fosc s最大定时时间:最大定时时间:M=216=65536T39例:设例:设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 40 MOV IE,#82H SETB TR0 MOV 30H,#0AHPTF0:ORL TL0,#0B0H;中断服务程序中断服务程序 MOV TH0,#3CH DJNZ 30H,PTF0R MOV 30H,#0AH CPL P1.0PTF0R:RETI41用查询法:用查询法:MOV 30H,#0AH MOV TH0,#3CH MOV TL0,#0B0H MOV TMOD,#1 SETB TR0L2:JBC TF0,L1 SJMP L2L1:MOV TH0,#3CH MOV TL0,#0B0H42 DJNZ 30H,L2 MOV 30H,#0AH CPL P1.0 SJMP L2433 方式方式2 方式方式2是能重置初值是能重置初值的的8位定时器位定时器/计数器,计数器,TL0作为作为8位计数器,位计数器,TH0作为计数初值寄存器。适于用做较精作为计数初值寄存器。适于用做较精确的定时脉冲信号发生器。确的定时脉冲信号发生器。定时时间定时时间 T=12*(28-a)/fosc s 最大定时时间:最大定时时间:M=28=256T44定时器/计数器方式2的逻辑结构45 MOV TMOD,#60H;设置设置T1为方式为方式2计数计数 MOV TH1,#9CH ;赋;赋初值初值 MOV TL1,#9CH SETB TR1DE:JBC TF1,RE ;查询计数溢出查询计数溢出 AJMP DERE:CPL P1.0 AJMP DE例:用定时器例:用定时器1在方式在方式2计数,要求每计满计数,要求每计满100次,将次,将P1.0端取反。端取反。外部计数信号由P3.5引入,每跳变一次计数器加1100=28-a;a=156=9CH46保护现场赋计数初值到1s?(32H)加1(32H)=60?(32H)清0(31H)加1(31H)=60?(31H)清0(30H)加1(30H)=24?(30H)清0恢复现场返回例例4.13(书(书111)aaNNNNYYYY图中断服务程序流程图47例:当P3.4引脚上的电平发生负跳变时,从P1.0输出一个500s的同步脉冲。请编程序实现该功能。查询方式,fosc=6MHz。48解:(1)模式选择 选T0为模式2,外部事件计数方式。当P3.4引脚上的电平发生负跳变时,T0计数器加1,溢出标志TF0置1;然后改变T0为500s定时工作方式,并使P1.0输出由1变为0。T0定时到产生溢出,使P1.0输出恢复高电平,T0又恢复外部事件计数方式。如 图所示。49(2)计算初值 T0工作在外部事件计数方式,当计数到28时,再加1计数器就会溢出。设计数初值为X,当再出现一次外部事件时,计数器溢出。则:X+1=28 X=28 1=11111111B=0FFH T0工作在定时工作方式,设晶振频率为6MHz,500s相当于250个机器周期。因此,初值X为 (28X)2s=500s X=6=06H50(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 ;51 PTFO1:CLR TR0 ;停止计数 MOV TMOD,#02H ;设置T0为模式2,定时方式 MOV TL0,#06H ;送初值,定时500s MOV 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 START52定时器定时器/计数器方式计数器方式3的逻辑结构的逻辑结构 4 方式方式3TH053 方式方式3只适用于只适用于T0,T0分为两个独立的分为两个独立的8位计数器位计数器TL0和和TH0。一般一般T1用作串行口用作串行口波特率发生器。波特率发生器。最大定时时间:最大定时时间:M=28=256T5455例例 用定时器用定时器T0,分别产生两个方波,一,分别产生两个方波,一个周期为个周期为200 s,另一个周期为,另一个周期为400 s,该该单片机同时使用串行口单片机同时使用串行口,用定时器用定时器/计数计数器作为波特率发生器。器作为波特率发生器。(fosc=9.216MHZ)。56解:定时初值计算解:定时初值计算TL0=28-9.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 转换十六进制为转换十六进制为66H57 ORG 0000H AJMP MAIN ORG 000BH ;TL0中断入口中断入口 AJMP ITL0 ORG 001BH ;TH0中断入口中断入口 AJMP ITH0 ORG 0100HMAIN:MOV SP,#60H MOV TMOD,#23H 58 MOV TL0,#0B3H MOV TH0,#66H MOV TL1,#data ;data是根据波特率是根据波特率 ;要求设置的常数(;要求设置的常数(初值)初值)MOV TH1,#data SETB TR0 ;启动启动TL0初值初值 SETB TR1 ;启动启动TH0初值初值 SETB ET0 ;允许允许TL0中断中断 SETB ET1 ;允许允许TH0中断中断 SETB EA ;CPU中断开放中断开放 AJMP$59 ORG 0200HITL0:MOV TL0,#0B3H CPL P1.0 ;输出方波输出方波200 s RETIITH0:MOV TH0,#66H CPL P1.1 ;输出方输出方波波400 s RETI60例:设某用户系统已使用了两个例:设某用户系统已使用了两个外部中断源,并置定时器外部中断源,并置定时器T1T1工作工作在模式在模式2 2,作串行口波特率发生,作串行口波特率发生器用。现要求再增加一个外部中器用。现要求再增加一个外部中断源,并由断源,并由P1.0P1.0引脚输出一个引脚输出一个5kHz5kHz的方波。的方波。FoscFosc=12MHz.=12MHz.61解:解:(1)工作模式)工作模式 可设置可设置T0T0工作在模式工作在模式3 3计数器方式计数器方式,把,把T0T0的引脚的引脚作附加的外部中断输入端,作附加的外部中断输入端,TL0TL0的计数初值为的计数初值为FFHFFH,当检测到当检测到T0T0引脚电平出现由引脚电平出现由1 1至至0 0的负跳变时,的负跳变时,TL0TL0产生溢出,申请中断产生溢出,申请中断,相当于一个边沿触发的外部,相当于一个边沿触发的外部中断源中断源。T0T0模式模式3 3下,下,TL0TL0作计数用,而作计数用,而TH0TH0用作用作8 8位的定位的定时器时器,定时控制,定时控制P1.0P1.0引脚输出引脚输出5kHz5kHz的方波信号。的方波信号。62(2)计算初值)计算初值TL0TL0的计数初值为的计数初值为FFHFFH。TH0TH0的计数初值的计数初值X X为:为:P1.0P1.0方波周期方波周期T=1/(5kHz)=0.2ms=200sT=1/(5kHz)=0.2ms=200s 用用TH0TH0作定时作定时100s100s时,时,X=256-100 12/12=156X=256-100 12/12=15663(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边沿触发,边沿触发,;启动;启动T0,T1 MOV IE,#9FH ;开放全部开放全部中断中断 64TL0溢出中断服务程序(由溢出中断服务程序(由000BH转来)转来)TL0INT:MOV TL0,#0FFH ;TL0重赋初值重赋初值 ;(中断处理);(中断处理)RETI TH0溢出中断服务程序(由溢出中断服务程序(由001BH转来)转来)TH0INT:MOV TH0,#156 ;TH0重赋初值重赋初值 CPL P1.0 ;P1.0取反输出取反输出 RETI串行口及外部中断串行口及外部中断0,外部中断,外部中断1的服务程序略。的服务程序略。65设时钟频率为设时钟频率为6MHz6MHz。编写利用编写利用T0T0产生产生1s1s定时的程序。定时的程序。66五五 门控位的应用门控位的应用GATE位位是是控控制制外外部部输输入入脉脉冲冲对对定定时时计计数数器器的的控控制制。当当为为“1”时时,允允许许外外部部输输入入电电平平控控制制启启、停停定定时时器器。利利用用这这个个特特性性可可测测量量外外部部输输入脉冲的宽度入脉冲的宽度。例:利用T0门控位测试INT0引脚上出现的正脉冲的宽度,将所测得值高位存入片内71H单元,低位存入片内70H单元。(fosc=12MHz)测试时,应在/INT0为低电平时,设TR0为1;当/INT0变高时,启动计数;当/INT0再变低时,停止计数。该计数值即被测正脉冲宽度。67MOV 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$684-3 串行接口串行接口UART一一 两种基本的通信方式两种基本的通信方式(a)并行通信;(b)串行通信69二串行通信传输方式二串行通信传输方式(a)单工方式;(b)半双工方式;(c)全双工方式70三三串行通信两种基本方式串行通信两种基本方式1异步通信异步通信异步通信中数据或字符是一帧一帧传送。异步通信中数据或字符是一帧一帧传送。帧即为一个字符的完整通信格式,又称帧格帧即为一个字符的完整通信格式,又称帧格式。在帧格式中,一个字符由式。在帧格式中,一个字符由4部分组成:起部分组成:起始位、数据位、奇偶校验位、停止位。始位、数据位、奇偶校验位、停止位。串行异步传送的字符格式712 同步通信同步通信 数据或字符开始处是由一同步字符来指示,数据或字符开始处是由一同步字符来指示,并由时钟实现发送端和接收端同步。并由时钟实现发送端和接收端同步。四四 波特率波特率(Baud rate)波特率就是数据的传送速率,即每秒钟传波特率就是数据的传送速率,即每秒钟传送的二进制位数,单位为位送的二进制位数,单位为位/秒。秒。要求发送端与接收端的波特率必须一致。要求发送端与接收端的波特率必须一致。724-3-1 串行接口的组成和特性 51系列单片机的串行口是全双工异步串行系列单片机的串行口是全双工异步串行通信接口。通信接口。一一 串行口结构串行口结构1 波特率发生器波特率发生器 主要由主要由T1、T2及内部的一些控制开关和分频器及内部的一些控制开关和分频器组成。提供串行口的时钟信号即组成。提供串行口的时钟信号即TCLK、RCLK。73串行口结构框图74注意注意:接收器是双缓冲结构,在前一个字节被从接收缓冲器接收器是双缓冲结构,在前一个字节被从接收缓冲器SBUF读读出之前,第二个字节即开始被接收(串行输入至移位寄存器),但出之前,第二个字节即开始被接收(串行输入至移位寄存器),但是,在第二个字节接收完毕而前一个字节是,在第二个字节接收完毕而前一个字节CPU未读取时,会丢失前未读取时,会丢失前一个字节一个字节.752 串行口的内部包含串行口的内部包含串行数据缓冲寄存器串行数据缓冲寄存器SBUF数据接收缓冲器数据接收缓冲器(只读出不写入只读出不写入)和数据发送缓冲器和数据发送缓冲器(只写只写入不读出入不读出)。物理上隔离,共用一个地址。物理上隔离,共用一个地址(99H)。当向当向SBUF发发“写写”命令时(执行命令时(执行MOV SBUF,A),即),即从片内总线向发送从片内总线向发送SBUF写入数据写入数据,并开始由并开始由TXD引脚向引脚向外发送一帧数据,发送完使外发送一帧数据,发送完使TI=1。在满足串行口接收中断标志位在满足串行口接收中断标志位RI(SCON.0)=0的条件的条件下,置允许接收位下,置允许接收位REN(SCON.4)=1就会接收一帧数就会接收一帧数据进入移位寄存器,并装载到接收据进入移位寄存器,并装载到接收SBUF中,同时使中,同时使RI=1。当发读。当发读SBUF命令时(执行命令时(执行MOV A,SBUF),便),便由接收由接收SBUF取出信息通过内部总线送取出信息通过内部总线送CPU。76串行口控制寄存器串行口控制寄存器串行数据输入串行数据输入/输出引脚输出引脚 接收方式下,串行数据从接收方式下,串行数据从RXD(P3.0)输入。输入。串行口内部在接收缓冲器之前还有移位寄存器,串行口内部在接收缓冲器之前还有移位寄存器,构成串行接收双缓冲结构。避免数据接收重叠。构成串行接收双缓冲结构。避免数据接收重叠。发送方式下,串行数据从发送方式下,串行数据从TXD(P3.1)输出。输出。串行口控制逻辑串行口控制逻辑77二串行口控制二串行口控制1 串行口控制寄存器串行口控制寄存器SCON(98H)SM0和和SM1SM0SM1 SM2 REN TB8 RB8TIRISM0 SM1工作方式功 能波特率0 0 0扩展移位寄存器 fosc/120 1 18位UART由定时器控制1 0 29位UARTfosc/32 fosc/641 1 39位UART由定时器控制78SM2 方式方式2和方式和方式3的多机通信控制位的多机通信控制位方式方式0,SM2=0。方式方式1,若,若SM2=1,只有接收到有效停止位,接只有接收到有效停止位,接收中断收中断RI才置才置1。方式方式2和方式和方式3中,如中,如SM2=1,则接收到的第则接收到的第9位位数据数据(RB8)为为0时不启动接收中断标志时不启动接收中断标志RI(即即RI=0),并且将接收到的前并且将接收到的前8位数据丢弃;位数据丢弃;RB8为为1时,时,才将接收到的前才将接收到的前8位数据送入位数据送入SBUF,并置位并置位RI,产生中断请求。当产生中断请求。当SM2=0时,则不论第时,则不论第9位数据位数据为为0或或1,都将前,都将前8位数据装入位数据装入SBUF中,并产生中中,并产生中断请求。该功能用于多机通信中。断请求。该功能用于多机通信中。79REN 允许串行接收位允许串行接收位 1允许接收;允许接收;0禁止接收禁止接收 由软件置由软件置1或清或清0,相当于串行接收的开关。,相当于串行接收的开关。在串行通信接收控制过程中,如果满足在串行通信接收控制过程中,如果满足RI0和和REN1(允许接收)的条件,就允许接收,一(允许接收)的条件,就允许接收,一帧数据就装载入接收帧数据就装载入接收SBUF中。中。TB8 发送数据发送数据D8位位 在方式在方式2和方式和方式3时,时,TB8为所要发送的第为所要发送的第9位数据。位数据。在多机通信中,以在多机通信中,以TB8位的状态表示主机发送的位的状态表示主机发送的是地址还是数据:是地址还是数据:TB8=0为数据,为数据,TB8=1为地址;为地址;也可用作数据的奇偶校验位。该位由软件置位或也可用作数据的奇偶校验位。该位由软件置位或复位。复位。在方式在方式0或方式或方式1中,该位未用中,该位未用80RB8 接收数据接收数据D8位位 在方式在方式2和方式和方式3时,接收到的第时,接收到的第9位数据,可位数据,可作为奇偶校验位或地址帧或数据帧的标志。作为奇偶校验位或地址帧或数据帧的标志。方式方式1时,若时,若SM2=0,则,则RB8是接收到的停止是接收到的停止位。在方式位。在方式0时,不使用时,不使用RB8位。位。TI 发送中断标志发送中断标志 在方式在方式0时,当发送数据时,当发送数据第第8位结束后,或在其位结束后,或在其它方式发送停止位后,由内部硬件使它方式发送停止位后,由内部硬件使TI置位置位,向向CPU请求中断。意味着向请求中断。意味着向CPU提供提供“发送发送缓冲器缓冲器SBUF已空已空”的信息,的信息,CPU可以准备发可以准备发送下一帧数据。送下一帧数据。CPU在响应中断后,必须用在响应中断后,必须用软件清零。此外,软件清零。此外,TI也可供查询使用。也可供查询使用。81RI接收中断标志位接收中断标志位 在方式在方式0时,当接收数据的第时,当接收数据的第8位结束后,或在位结束后,或在其它方式接收到停止位的中间时由内部硬件其它方式接收到停止位的中间时由内部硬件使使RI置位,向置位,向CPU请求中断。表示一帧数据请求中断。表示一帧数据接收结束,并已装入接收接收结束,并已装入接收SBUF中,要求中,要求CPU取走数据。在取走数据。在CPU响应中断后,也必须用软响应中断后,也必须用软件清零。件清零。RI也可供查询使用。也可供查询使用。822 特殊功能寄存器特殊功能寄存器PCONSMOD位是串行口波特率系数控制位,为位是串行口波特率系数控制位,为1时时使波特率加倍。使波特率加倍。其余位是掉电方式控制位,其余位是掉电方式控制位,与串行口无关与串行口无关。SMOD834-3-2串行接口的工作原理串行接口的工作原理一 方式方式01 方式方式0为同步移位寄存器输入为同步移位寄存器输入/输出方式,常输出方式,常用于扩展并行用于扩展并行I/O口。口。2 数据由数据由RXD串行输入串行输入/输出,输出,TXD输出移位脉输出移位脉冲。冲。3 数据传输波特率固定为数据传输波特率固定为fosc/12。4 接收接收/发送的是发送的是8位数据,传输时位数据,传输时低位在前低位在前。84输出:输出:当执行写SBUF的指令时(MOV SBUF,A),启动串行数据发送。从低位开始串行输出。当完成一个字节的输出后就停止移位,并置位TI。输入:输入:在REN=1,RI=0时启动串行口接收。当外部移位寄存器内容移入内部移位寄存器,并写入SBUF,则置位RI,停止移位,完成一个字节的输入。注意:每当发送或接收完8位数据时,由硬件将发送中断TI或接收中断RI标志置“1”;CPU响应TI或RI中断请求时,不会清除标志,必须由软件清“0”.85二 方式11 方式1时,串行口为10位通用异步接口。2 数据传输波特率由定时/计数器T1和T2的溢出决定,由程序设定。当T2CON中RCLK和TCLK置位时,由T2作接收/发送的波特率发生器;当RCLK和TCLK都为0时,由T1作接收/发送的波特率发生器。3 数据从引脚TXD端输出,从引脚RXD输入。86发送发送 当数据写入发送缓冲器时,启动发送器开始发送。8位数据发送完,置位TI=1,并申请中断,通知CPU可发送下一个数据。接收接收 在REN=1的前提下,确认是真正起始位“0”后,开始接收一帧数据。当RI=0且SM2=0时,数据被有效接收。将接收到的数据装入串行口的SBUF,并置位RI.87三 方式2和方式31 CPU向发送缓冲器写入数据就启动串行口发送。发送完毕,使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数据丢失884-3-3 波特率一 方式0:波特率=振荡器频率/12二 方式2:波特率=2SMOD*振荡器频率/64三 方式1、3(T1产生波特率):波特率=2SMOD*振荡器频率/32*12(256-(TH1)注:记住当振荡器频率选用11.0592MHZ时,对于常用波特率,能正确计算T1的初值。894-3-4 多机通信原理在主从式多机系统中:1主机发出的信息有两类。一类为地址,用来确定需要和主机通信的从机,特征是串行传送的第9位数据为1;另一类是数据,特征是串行传送的第9位数据为0。2对从机来说,在接收时,若RI=0,则只要SM2=0,接收总能实现;而若SM2=1,则发送的第9位TB8必须为1接收才能进行。901 主机首先发出要求通信的从机地址信号。此时,所有从机的SM2都为“1”,所有从机均收到地址信号。2 从机判断主机发出的地址信号是否与本从机号相符。相符的从机SM2“0”,反之为“1”。3 主机发送数据帧。仅SM2=0的从机可收到。914-3-5 串行口的应用和编程一串行口应用同一印板内,两个单片机串行口可直接通信。单片机与PC机之间利用串行口通信,必须进行电平转换。二串行口编程串行口初始化编程:选择串行口工作方式,波特率,允许串行口中断。即对SCON、PCON、TMOD、TCON、TH1、TL1、IE、IP、SBUF编程。92例1:编写程序,功能为对串行口初始化为方式1输入/输出,fosc=11.0592MHZ,波特率为9600,先在串行口上输出字符串“MCS-51”,接着读串行口上输入的字符,又将该字符从串行口上输出。MOV TMOD,#20H MOV TH1,#0FDH MOV TL1,#0FDH SETB TR1 MOV SCON,#52H MOV R4,#0 MOV DPTR,#TSAB93LP1: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 94例例2:89C52串行口按双工方式进行数据收发,要求波串行口按双工方式进行数据收发,要求波特率为特率为1200,串口工作在方式串口工作在方式1。编写有关的通信程。编写有关的通信程序。设发送数据区的首地址为序。设发送数据区的首地址为20H,接收数据区的,接收数据区的首地址为首地址为40H,fosc为为11.0592MHz。解解:双工通信要求收、发能同时进行。实际上,收、发操作主要双工通信要求收、发能同时进行。实际上,收、发操作主要是在串行接口进行,是在串行接口进行,CPU只是把数据从接收缓冲器读出和把只是把数据从接收缓冲器读出和把数据写入发送缓冲器。数据写入发送缓冲器。数据传送用中断方式进行,响应中断以后,通过检测是数据传送用中断方式进行,响应中断以后,通过检测是RI置置位还是位还是TI置位来决定置位来决定CPU是进行发送操作还是接收操作。发是进行发送操作还是接收操作。发送和接收都通过调用子程序来完成。送和接收都通过调用子程序来完成。95 主程序主程序 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 ;先输出一个字符先输出一个字符 SETB 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 ;中断返回中断返回 96发送子程序发送子程序SOUT:CLR TI MOV A,R0 ;取发送数据到取发送数据到A INC R0 ;修改发送数据指针修改发送数据指针 MOV SBUF,A ;发送发送 RET ;返回返回接收子程序接收子程序 SIN:CLR RI MOV A,SBUF ;读出接收缓冲区内容读出接收缓冲区内容 MOV R1,A ;读入接收缓冲区读入接收缓冲区 INC R1 ;修改接收数据指针修改接收数据指针 RET ;返回返回97用串行口进行双机异步通信例3:将甲机片内RAM50H5FH单元中的数据块从串行口输出。定义在方式3下发送,TB8作奇偶校验位。采用定时器1方式2作波特率发生器,波特率为1200,fosc=11.0592MHz。使乙机从甲机接收16个字节数据块,并存入片外3000H300FH单元。接收过程中要求判奇偶标志RB8。若出错则置F0标志为1,反之为0,然后返回。98甲机发送子程序 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 RET99乙机接收子程序 MOV TMOD,#20H MOV TL1,#0EBH MOV TH1,#0E8H SETB TR1 MOV SCON,#0C0H MOV 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注意:双机通信时,两机应用相同的工作方式和波特率。1004-3-6 RS232C总线和电平转换器RS232C是由美国电子工业协会(是由美国电子工业协会(EIA)正式公布)正式公布的,在异步串行通信中应用最广的标准总线(的,在异步串行通信中应用最广的标准总线(C表示表示此标准修改了三次)。它包括了按位串行传输的电此标准修改了三次)。它包括了按位串行传输的电气和机械方面的规定,适用于短距离或带调制解调气和机械方面的规定,适用于短距离或带调制解调器的通信场合。器的通信场合。为了提高数据传输率和通信距离,为了提高数据传输率和通信距离,EIA又公布了又公布了RS422,RS423和和RS-485串行总线接口作准。串行总线接口作准。101 ELA RS-232C是目前最常用的串行接口标准,用于实现计算机与计算机之是目前最常用的串行接口标准,用于实现计算机与计算机之间、计算机与外设之间的数据通信。间、计算机与外设之间的数据通信。该标准的目的是定义数据终端设备(该标准的目的是定义数据终端设备(DTE)之间接口的电气特性。一般的串)之间接口的电气特性。一般的串行通信系统是指微机和调制解调器(行通信系统是指微机和调制解调器(modem),如),如图图。调制解调器叫数据电。调制解调器叫数据电路终端设备(简称路终端设备(简称DCE)。)。RS-232C提供了单片机与单片机、单片机与提供了单片机与单片机、单片机与PC机间串行数据通信的标准接口。通信距离可达到机间串行数据通信的标准接口。通信距离可达到 15 m。102RS232C接口的具体规定如下接口的具体规定如下:(l)范围)范围 RS-232C标准适用于标准适用于DCE和和 DTE间的串行二进制通信,最高间的串行二进制通信,最高的数据速率为的数据速率为 19.2 kbs。如果不增加其他设备的话,。如果不增加其他设备的话,RS-232C标准的电缆长度最大为标准的电缆长度最大为15 m。(2)RS-232C的信号特性的信号特性 RS-232C是在是在TTL集成电路之前研制的,规定集成电路之前研制的,规定+3V15V之间的之间的任意电压表示逻辑任意电压表示逻辑0电平,电平,-3V15V之间的任意电压表示逻辑之间的任意电压表示逻辑1电平。电平。103(3)RS-232C接口信号及引脚说明接口信号及引脚说明基本的数据传送信号基本的数据传送信号 基本的数据传送信号引脚有基本的数据传送信号引脚有TXD,RXD,GND 3个。个。TXD为数据发送信号引脚。在不传送数据时,为为数据发送信号引脚。在不传送数据时,为1。RXD为数据接收信号引脚。在无接收信号时,为为数据接收信号引脚。在无接收信号时,为1。GND为地信号引脚。为地信号引脚。GND是其他引脚信号的参考电位信号。是其他引脚信号的参考电位信号。“在零调制解调器在零调制解调器”连接中,最简单的形式是只使用上述连接中,最简单的形式是只使用上述3个个引脚引脚104 MODEM控制(握手)信号引脚控制(握手)信号引脚 从计算机到从计算机到MODEM的信号引脚包括的信号引脚包括DTR和和RTS两个:两个:DTR信号引脚用于通知信号引脚用于通知MODEM,计算机已经准备好。,计算机已经准备好。RTS信号引脚用于通知信号引脚用于通知MODEM,计算机请求发送数据。,计算机请求发送数据。从从MODEM到计算机的信号包括到计算机的信号包括DSR,CTS,DCD,RI共共4个。个。DSR信号引脚用于通知计算机,信号引脚用于通知计算机,MODEM已经准备好。已经准备好。CTS信号引脚用于通知计算机,信号引脚用于通知计算机,MODEM可以接收传送数据。可以接收传送数据。DCD信号引脚用于通知计算机,信号引脚用于通知计算机,MODEM已与电话线路连接好。已与电话线路连接好。RI信号引脚为振铃指示,用于通知计算机有来自电话网的信号。信号引脚为振铃指示,用于通知计算机有来自电话网的信号。105近年的近年的RS-232C接口都是接口都是采用采用9针的连接器(针的连接器(25针针中有很多引脚是无意义)中有很多引脚是无意义)106电平转换电平转换 RS-232C规定的逻辑电平与一般微处理器、单片机的逻规定的逻辑电平与一般微处理器、单片机的逻辑电平是不一致的。因此,在实际应用的,必须把微处理辑电平是不一致的。因此,在实际应用的,必须把微处理器的信号电平(器的信号电平(TTL电平)转换为电平)转换为RS-232C电平,或者对电平,或者对两者进行逆转换。这两种转换是通过专用电平转换芯片实两者进行逆转换。这两种转换是通过专用电平转换芯片实现的。现的。MAX232、MAX202和早期的和早期的MC1488,75188等芯片等芯片可实现可实现TTLRS-232C的电平转换;的电平转换;MC1489,75189等等芯片可实现芯片可实现RS-232CTTL的电平转换。的电平转换。107MAX232芯片引脚图芯片引脚图MAX232典型工作电路图典型工作电路图108现从现从MAX232芯片中两路发送接收中任选一路作为接芯片中两路发送接收中任选一路作为接口。要注意其发送、接收的引脚要对应。如使口。要注意其发送、接收的引脚要对应。如使T1IN接接单片机单片机 的发送端的发送端TXD,则,则PC机的机的RS-232的接收端的接收端RXD一定要对应接一定要对应接T1OUT引脚。同时,引脚。同时,R1OUT接单接单片机的片机的RXD引脚,引脚,PC机的机的 RS-232的发送端的发送端TXD对应对应接接R1IN引脚。其接口电路如图所示。引脚。其接口电路如图所示。109采用采用 MAX232接口串行通信电路接口串行通信电路1104-5 节电方式CMOS 51系列单片机提供两种节电工作方式,即空闲(等待、待机)方式和掉电(停机)工作方式.由图4-58可见,若IDL=1,则单片机将进入空闲运作方式。在这种方式下,振荡器仍继续运行,但IDL封锁了去CPU的“与”门,故CPU此时得不到时钟信号。而中断、串行口和定时器等环节却仍在时钟控制下正常运行。掉电方式下(PD=1),振荡器冻结。111图4-58空闲和掉电方式控制电路112方式的设定空闲方式和掉电方式是通过对SFR中的PCON(地址87H)相应位置1而启动的。电源控制寄存器PCON各位的分布情况。HMOS器件的PCON只包括一个SMOD位,其他4位是CHMOS器件独有的。3个保留位用户不得使用。电源控制寄存器电源控制寄存器PCON113空闲(等待、待机)工作方式空闲(等待、待机)工作方式:CPU执行完置IDL=1(PCON.1)的指令后,系统进入空闲工作方式。进入空闲方式后,有两种方法可以使系统退出空闲方式:一是任何的中断请求被响应都可以由硬件将PCON.0(IDL)清0而中止空闲工作方式。另一种退出空闲方式的方法是硬件复位,114掉电(停机)工作方式掉电(停机)工作方式:当CPU执行置PCON.1位(PD)为1的指令后,系统进入掉电工作方式。退出掉电方式的唯一方法是由硬件复位,复位后将所有特殊功能寄存器的内容初始化,但不改变片内RAM区的数据。在掉电工作方式下,VCC可以降到2 V,但在进入掉电方式之前,VCC不能降低。而在准备退出掉电方式之前,VCC必须恢复正常的工作电压值,并维持一段时间(约10 ms),使振荡器重新启动并稳定后方可退出掉电方式。115
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!