第四章-80C51单片机的功能单元

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第四章80C51单片机的功能单元4·180C51的四个I/O口在使用上有哪些分工和特点?试比较各分工的特点?试比较各口的特点?何谓分时复用总线?P3口的第二变异功能有哪些?答:(1)80C51的四个I/O口在使用上的分工和特点①P0口:可作通用I/O口用,也可作地址/数据线用。作通用I/O口用时,输出级为开漏极电路,在驱动外部电路时应接上拉电阻;在接有外部存储器时,P0口作地址/数据线用,先输出低8位地址到外部地址锁存器,后输人指令代码或输人/输出数据。②Pl口:是一个8位准双向口,作通用I/O口用。③P2口:是一个8位准双向口,作通用I/O口用。当外部接有存储器时,可用于输出高8位地址。④P3口:是一个多功能端口。其基本功能仍然是通用I/O口,使用时与Pl、P2口类似。其第二功能则是串行口、外部中断线、定时器/计数器的输入及外部数据存储器的选通信号等。(2)分时复用总线分时复用总线是:在一组总线上,在不同的时间,有时输出地址,有时输人代码或输出/输人数据。例如,P0口和P2口就组成了一组地址/数据复用总线。(3)P3口的第二变异功能第一功能第二变异功能串行口:P3.0RXD(串行输入口)P3.1TXD(串行输出口)中断:P3.2INT0外部中断0P3.3INT1外部中断1定时器/计数器(T0、T1):P3.4T0(定时器/计数器0的外部输入)P3.5T1(定时器/计数器1的外部输入)数据存储器选通:P3.6WR(外部存储器写选通,低电平有效,输出)P3.7RD(外部存储器读选通,低电平有效,输出)4·280C51端口P0~P3作通用I/O口时,在输入引脚数据时,应注意什么?答:p0~p3作通用I/O口在输入引脚数据时,应先用软件向口的输出锁存器写1。4·3读一改一写指令有何特点?请至少列出五条不同操作的读—改一写指令。答:(1)读一改一写指令的优点从I/O口的位结构图中可以看出,有两种读口的操作:一种是读引脚操作,一种是读锁存器操作。①在响应CPU输出的读引脚信号时,端口本身引脚的电平值通过缓冲器BUFl进入内部总线。这种类型的指令,执行之前必须先将端口锁存器置1,使A点处于高电平;否则,会损坏引脚,而且也使信号无法读出,已于前述。这种类型的指令有:MOVA,P1;A←P1MOVdirect,P1;direct←Pl②执行读锁存器的指令时,CPU首先完成将锁存器的值通过缓冲器BUF2读入内部,进行修改、改变,然后重新写到锁存器中去,这就是读一改一写指令。这种类型的指令包含所有的口的逻辑操作(ANL、ORL、XRL)和位操作(JBC、CPL、MOV、SETB、CLR等)指令。读锁存器操作可以避免一些错误,如用Pl.X去驱动晶体管的基极。当对Pl.X写人1之后,晶体管导通。若此时CPU接着读该位引脚的值,即晶体管基极的值时,为0;但是正确的值应该是1,这却可从读锁存器得到。(2)读一改一写指令的操作对口的8位一起操作:ANLPi,A;i=0~3ORLPi,A;i=0~3XRLPi,A;i=0~3INCPi;i=0~3DECPi;i=0~3对口的某一位操作JBCPl.j,label;j=0~7CPLPl.j;j=0~74·4为什么当P2口作为扩展程序存储器的高8位地址后,就不再适宜作通用I/O了?答:在系统中如果外接有程序存储器,由于访问片外程序存储器的连续不断地取指操作,P2口需要不断送出高位地址,故这时p2口的全部口线均不宜再作I/O口使用。4·580C51单片机内部设有几个定时器/计数器?它们各古由哪些特殊功能寄存器所组成?有哪几种工作方式?简述各种工作方式的功能特点。如何选择?答:①80C51有两个16位的定时器/计数器T0和Tl。②80C51定时器/计数器的特殊功能寄存器有:定时器/计数器方式寄存器TMOD;定时器/计数器控制寄存器TCON;定时器/计数器数据寄存器THl、TLl、TH0、TL0。③80C51的定时器/计数器有四种不同的工作方式:●方式0:TMOD中的Ml=0、M0=0,当计数溢出时,TFX置位。如果中断允许,CPU响应中断并转人中断服务程序,由内部硬件清TFX。TFx也可以由程序查询和清零。●方式1:TMOD中的Ml=0、M0=1,当计数时,TFx溢出后向THx进位,THx溢出后将TFx置位并向CPU申请中断。其他与方式0完全相同。●方式2:TMOD中的Ml=l、M0=0,当TLx计数溢出时,一方面将TFx置位,并向CPU申请中断;另一方面将THx的内容重新装入TLx中,继续计数。重新装入不影响THx的内容,所以可以多次连续装入。方式2对定时控制特别有用,它可实现每个预定时间发出控制信号,而且特别适合于串行口波特率发生器的使用。●方式3:TMOD中的Ml=l、M0=1,这种方式是将定时器/计数器T0分为一个8位定时器/计数器和一个8位定时器,TL0用于8位定时器/计数器,TH0用于8位定时器。定时器/计数器的工作与方式0相同,只是此时的计数器为8位计数器TL0,它占用了T0的GATE、INT0、TR0、T0引脚以及中断源等资源。TH0所构成的定时器只能作为定时器用,因为此时的外部引脚T0己为定时器/计数器TL0所占用。不过这时它却占用定时器/计数器Tl的启动/停止控制位TRl、计数溢出标识位TFl及中断源。4·6定时器/计数器作定时用时,定时时间与哪些因素有关?作计数用时,对外界计数频率有何限制?答:①定时器/计数器作定时用时,其定时时间与下面因素有关:晶体振荡器的频率、机器周期、计数器的长度、定时器/计数器初值。②用做计数器时,对外部输入端T0、Tl上1到0的跳变进行加1计数。在计数状态下,每个机器周期的S5P2时刻采样外部输入,当第一个机器周期采样为高电平,而在第二个机器周期采样为低电平时,内部计数器加1。新的计数值在紧接着采样到跳变后的下一机器周期的S3P1出现在计数器中。由于检测一个1到0的跳变需要2个机器周期,即24个振荡周期,因此外部计数的最快速率为振荡频率的1/24。外部输入信号的速率向下可以不受限制,但是脉冲宽度必须保证在其电平变化之前能被采样到一次,即至少保持一个完整的机器周期;否则,将会由于采样不到而出现漏计现象。4·7定时器T0为方式3时,由于TRl位已被T0占用,如何控制定时器T1的开启和关闭?答:在方式3T,Tl己将TFl、TRl资源出借给T0使用了,因此,它自己只能作波特率发生器使用。Tl作波特率发生器时,可以设置成方式0~方式2,用在任何不需要中断控制的场合。作波特率发生器时,常设置成方式2的自动重装状态。从题图4-1中可以看出,利用置Tl为定时器方式可以启动波特率发生器;而置Tl为计数器方式,则可以关闭波特率发生器。此时,只需要MOVTMOD,#63H;初始化;设T0为方式3;设T1为计数器,方式2;关闭T1波特率发生器MOVTL1,#38H;置定时常数,即设波特率MOVTH1,#38HMOVTMOD,#23H;设T1为定时器,方式2;启动T1波特率发生器4·8在80C51单片机系统中,己知时钟频率为6MHZ,选用定时器T0设置方式3,请编程使Pl.0和Pl.1口分别输出周期为1ms和400us的方波。答:以定时器T0设置方式3:TL0和TH0作为两个8位定时器,产生500us和200us的定时中断,即可使Pl.0和Pl.1口分别输出周期为lms和400us的方波。①时间常数的计算:振荡器的频率fosc=6MHz=6×106Hz,方式3计数器长度L=8,28=256。●定时时间T=500us=500×10-6sfosc×T6×106×500×10-6定时常数TC=2L—=256—=256—250=61212●定时时间T=200us=200×10-6sfosc×T6×106×200×10-6定时常数TC=2L—=256—=256—100=56=38H1212②P1.0和P1.1口分别输出周期为1ms和400us的方波的程序:ORG000BHAJMPIT0P;ORG001BHAJMPIT1P;ORG100HSTART:MOVSP,#60H;设栈指针ACALLPTOM3;调定时器初始化程序PTOM3:MOVTMOD,#03H;定时器初始化,设T0为方式3MOVTL0,#6MOVTH0,#38HSETBTR0;定时开始SETBET0;开中断SETBEARET;IT0P:MOVTL0,#6H;TL0定时器中断程序CPLP1.0RETI;IT1P:MOVTH0,#38H;TH0定时器中断程序CPLPl.1RETI4·9用80C51的定时器测量某正单脉冲的宽度,采用何种方式可得到最大量程?若时钟频率为6MHZ,求允许测量的最大脉冲宽度是多少?答:①设置:将外部脉冲引至INT0引脚上,设T0为定时器方式,并设T0为方式l,GATE程控为l,TR0为1。一旦INT0(P3.2)引脚上出现高电平,定时器即开始定时,也就是它开始对时钟的机器周期进行计数,直至高电平出现。此时读出T0值即可。TMOD的设定(即控制字):控制字为#09H。初值为TH0=#00H,TL0=#00H。②编程:;脉冲宽度在R3(高字节)、R4(低字节)START:MOVTMOD,#09H;控制字MOVTL0,#00H;定时常数MOVTH0,#00HWAITl:JBP3.2,WAITl;等待INT0变低SETBTR0;启动定时器T0计数(机器周期数)WAIT2:JNBP3.2,WAIT2;等待INT0变高(正脉冲到来)WAIT3:JBP3.2,WAIT3;等待INT0变低CLRTR0;定时器停止计数MOVA,TL0;先读低位MOVR4,A存人R4中MOVA,TH0;再读高位MOVR3,ARET③由于定时器方式1的长度为16位,其最大计数值为216=65535,即正脉冲的宽度最大值不能超过65535个机器周期。如果时钟频率为6MHz,允许测量的最大脉冲宽度是:65535×2us=131.070ms。4·1080C51的串行口有几种工作方式及其功能特点?如何选择和设定?答:在串行口控制寄存器SCON中的SM0和SMl位决定串行口的工作方式;SM2位决定串行口应用于多处理机通信方式。(1)方式0当SMO=0,SMl=0时,串行口选择方式0。这种工作方式实质上是一种同步移位寄存器方式。方式0时,数据传输波特率固定为1/l2fosc。数据由RXD(P3.0)引脚输入或输出,同步移位时钟由TXD(P3.1)引脚输出。接收/发送的是8位数据,传输时低位在前。帧格式如下:(2)方式1当SMO=0.SMl=1时,串行口选择方式1。方式1时,数据传输波特率由定时器/计数器Tl和T2的溢出决定,可用程序设定。由TxD(P3.1)引脚发送数据,由RXD(P3.0)引脚接收数据。发送或接收一帧信息为10位,1位起始位(0)、8位数据位和1位停止位(1)。帧格式如下:(3)方式2和3当SM0=l,SMl=0时,串行口选择方式2;当SM0=l,SMl=1时,串行口选择方式3。方式2和3的区别在于它们波特率产生方式不同。方式2的波特率是固定的,为振荡器频率的1/32fosc或1/64fosc;方式3的波特率则由定时器/计数器Tl和T2的溢出决定,可用程序设定的。由TYD(P3.1)引脚发送数据,由RXD(P3.0)引脚接收数据。发送或接收一帧信息为11位,1位起始位(0)、9位数据位和1位停止位(1),帧格式如下:(4)多处理机通信方式在串行口控制寄存器SCON中,设有多处理机通信位SM2(SCON.5)。当串行口以方式2或方式3接收时,若SM2=1,如果接收到的第9位数据(RB8)为l,才将数据送人接收缓冲器SBUF,并RI置1发中断;否则,数据将丢失。若SM2=0,则无论第9位数据(RB8)是1还是0,都能将数据装人SBUF,并且发中断。利用这一特性,便可实现主机与多个从机之间的串行通信。4·11何谓波特率、溢出率?如何计算和设置80C51串行通信的波特率?答:1·波特率、溢出率波特率(Baudrate)是指每秒钟传输的数据位数,波

1 / 11
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功