单片机入门 必读 第三章_第1页
单片机入门 必读 第三章_第2页
单片机入门 必读 第三章_第3页
单片机入门 必读 第三章_第4页
单片机入门 必读 第三章_第5页
已阅读5页,还剩159页未读 继续免费阅读

下载本文档

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

文档简介

第三章:MCS-51单片机的系统扩展及应用,通过地址总线、数据总线和控制总线实现系统的扩展。定时器、串行口和A/D、D/A等应用场合下的硬件接口和软件编程。3.1:程序存储器的扩展3.2:数据存储器的扩展3.3:输入、输出口的扩展3.4:定时计数器的应用3.5:串行口的应用3.6:MCS-51与D/A转换器的接口3.7:MCS-51与A/D转换器的接口3.8:动态数码显示及键盘扫描电路,3.1:程序存储器ROM的扩展,1,在使用8031(无片内ROM)或大于4K程序存储器时,必须通过外接ROM来构成、扩充系统的程序存储区。2,当使用外部存储器来扩展系统时,必须占用单片机的P0、P2口作为外部电路的数据、地址总线。此时,P0、P2口就不能作为通用的I/O端口。3,在系统扩展时,外部电路与单片机连接的依据是单片机访问外部存储器的时序,所以正确的理解时序是硬件电路设计的关键。,MCS-51与32KROM的连接,P2.7:P2.0P0.7:P0.0ALE/EAPsen,CEA14:A8A7O7:A0O0OE,D7Q7D0Q0CP,2725632KROM,MCS-51,/CE=P2.7(A15),返回前一次,完整的地址信号,外部ROM的状态与地址线A15的关系表,访问外部程序存储器ROM的时序:,A15-A8(PC),A7-A0,OP,A7-A0,常数,存储器数据输出控制/Psen,地址总线(高八位)P2口,地址数据总线(低8位)P0口,S1,S2,S6,S5,S4,S3,373地址锁存信号ALE,A15-A8(DPTR+A),MOVCA,A+DPTR,AB,转电路图,返回前一次,(参考讲义70页),片外存储器访问时序说明,P0、P2口作地址和数据总线。其中P0口作为地址和数据复用总线,前半部(A段)作地址总线,后半部(B段)作为数据总线。外部程序存储器ROM的操作步骤如下:1,单片机必须为其提供完整的(15位)地址信息;2,ROM芯片的/CE端=0,选中该芯片;3,在满足上述条件的基础上,当ROM的/OE=0时(B时间段),存储器输出数据的三态门打开,并将与输入地址相对应的存储单元中的指令(数据)向外输出,单片机通过P0口将指令送至CPU内部。74LS373锁存器:将A时间段P0口输出的低位地址进行保存,使ROM在B时间段仍然可以得到完整的地址信号。,转电路图,转时序图,外部ROM的容量扩展原理(一),如何使用两片32K的ROM芯片扩展为64K的存储阵列。,A15P2口MCS-51P0口ALE/EAPsen,/CE2A14A8A7A0/OE2O0O7,/CE1A14A8A7A0/OE1O0O7,74LS373,由两片32K的ROM构成64K存储阵列与A15的关系表,外部ROM的容量扩展原理(二),若需要对2片以上的芯片扩展,可以通过译码电路实现。,P2.7P2.6P2.5P2.4P2.0P0口ALEPsen,/CE0A12A8A78K8A0/OE1O0O7,74LS373,Cy7BA0y,/CE1A12A8A78K8A0/OE1O0O7,/CE7A12A8A78K8A0/OE1O0O7,MCS51,74LS138,采用LS138译码器实现ROM扩展示意表,小结:,1,单片机的P0、P2口作为地址数据总线;2,P0口为数据、地址复用总线,所以必须加入八位锁存器74LS373来锁存P0口的低八位地址。3,外接ROM是靠MOVC指令产生的Psen信号来打开数据三态门,使ROM中的指令通过P0口送入单片机内部。4,存储器的容量M与其地址线条数n的关系:M=2n5,当使用两片ROM扩展时,可以使用一个反向器实现容量的扩展,通过ROM芯片的/CE端实现。6,当使用2片以上的ROM芯片扩展时,就要使用译码器实现存储容量的扩展,译码器的输入与高位地址相连接,输出端分别与各ROM芯片的/CE连接(如图所示)。7,当外接ROM的高八位地址线与P2口高八位线没有完全用足时,要注意外存储的地址重叠问题。,返回,3.2:数据存储器RAM的扩展,与程序存储器扩展原理相同,数据存储器的扩展也是使用P0、P2口作为地址、数据总线。1,当使用MOVXRi指令时,系统使用P0口输出地址信号(P2口不用);2,当使用MOVXDPTR指令时,P0口输出DPTR提供的低八位地址信号,P2口输出DPTR提供的高八位地址信号。3,不论哪种情况,P0口都是地址/数据复用总线,因此仍要使用74LS373来锁存P0口的地位地址信号。与ROM扩展不同:使用访问外部RAM指令MOVX时,在时序中将产生/RD或/WR信号,因此将此信号与外RAM的读(/RD)、写(/WR)控制端相连接就实现系统对外RAM的读写控制。,设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU执行外部ROM中的指令:movxa,dptr;将外RAM的x送A,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A15-A8(DPH),A7-A0,指令,A7-A0,数据,RD,P2口,P0口,选中外部RAM,读外部数据存储器RAM的指令时序,MCS-51与32KRAM的连接,P2.5P2.4:P2.0P0.7:P0.0ALERDWR,CEA12:A8A7O7:A0O0OEWE,D7Q7D0Q0CP,62648KRAM,MCS-51,/CE=P2.5(A12),思考题:,使用6264(8KRAM)芯片和2764(8KROM)芯片组成16KRAM和16KROM的外存储阵列(逻辑图)。采用74LS138和74LS373实现译码和锁存功能。根据设计的结果,写出RAM和ROM的地址范围。,返回,3.3:输入、输出口的扩展,如果系统使用了外部存储器时,P0、P2口被外存储器占用,留给用户的只有P1口。因此I/O端口的扩展是使用MCS-51作为嵌入式控制器进行硬件设计中经常遇到的问题:3.3.1,使用8243扩展I/O端口3.3.2,使用8155扩展I/O端口3.3.3,使用8255扩展I/O端口3.3.4,使用串行口扩展I/O端口,继续,3.3.1:使用8243扩展I/O端口,8243为4X4位的扩展口。,P4.0P4.1P2.0P4.2P2.1P4.3P2.2P2.3P5.0P5.1P5.2P5.3P6.0P6.1P6.2P6.3PROGP7.0/CEP7.1P7.2P7.3,接单片机,P2口:用于CPU与8243之间传送命令、数据。其中:命令码中含口地址(两位)、操作码(两位)。数据为四位。PROG:控制端。P4P7:4X4位具有锁存功能的双向I/O端口。,8243的时序,P4.0P4.1P2.0P4.2P2.1P4.3P2.2P2.3P5.0P5.1P5.2P5.3P6.0P6.1P6.2P6.3PROGP7.0/CEP7.1P7.2P7.3,操作码、口地址,数据(4位),PROG,P2口,1,由高变低时,将P2口的命令(口地址、操作码)信息所存到8243。2,由低变高时:a,写操作时:8243将P2口上的数据写入对应的端口;b,读操作时:当操作码一译出,选中的端口的输入缓冲器与P2口接通,等待CPU读走。当PROG变高后,结束读操作。,1,2,8243应用举例1:使用51的P2口与8243连接,并从8243的P6口读入数据,51的P2.6P2.7留作输入。,P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7MCS-51,P4.0P4.1P2.0P4.2P2.1P4.3P2.2P2.3P5.0PROGP5.1/CEP5.2P5.3P6.0P6.1P6.2P6.3P7.0P7.1P7.2P7.38243,IN8243:MOVA,#11010010B;控制字MOVP2,A;输出控制字CLRP2.4;8243接收操作码MOVA,P2;读取P6口数据SETBP2.4;PROG=1结束读SETBP2.5;关闭8243RET【注意】:1,控制字11010010的含义;2,根据8243的时序,在使PROG变高前单片机必须读入P6口中的数据。,8243应用举例2:将R2寄存器的低4位写到P7口。P2.6P2.7留作输入,P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7,P4.0P4.1P2.0P4.2P2.1P4.3P2.2P2.3P5.0PROGP5.1/CEP5.2P5.3P6.0P6.1P6.2P6.3P7.0P7.1P7.2P7.3,OUT:MOVA,#11010111B;控制字MOVP2,A;输出控制字CLRP2.4;8243接收操作码MOVA,R2;读取R2数据ORLA,#11110000B;高4位置1低4位不变ORLP2,#00001111B;低4位置1高4位不变ANLP2,A;A送P2高4位不变SETBP2.4;PROG=1数据写入P7口SETBP2.5;关闭8243RET【注意】:第1条ORL是保证不影响P2口高4位;第2条ORL指令时保证下面ANL指令能够正确的将低4位数据写入P2口。,返回,3.3.2:使用8155扩展I/O端口,8155的简介1,8155的构成:2,CPU对8155的控制3,8155的工作方式4,8155内部定时器的使用5,8155应用与编程举例,继续,8155的简介,同8243一样,8155、8255等芯片都是美国Intel公司为8086系列微机开发出的系列通用可编程I/O接口芯片。8155不仅可以提供三个并行的I/O端口,在其内部还集成有256个字节的RAM存储空间、一个14位的定时/计数器,因此非常适合与MCS-51单片机连接实现系统功能的扩展。由于8155的特殊性,这里将主要介绍其结构和使用、编程方法。,返回本节目录,1,8155的构成:,1,双向数据总线缓冲器:传送CPU与RAM之间的数据。2,地址锁存器:用于锁存CPU送来得RAM或端口地址。3,地址译码(a)和读写控制(b):a,接收地址锁存器的低三位地址,确定命令/状态存存器、定时/计数器和A、B、C口中的某个工作。b,读写控制用于接收/RD或/WR上的信息实现CPU与8155之间的信息控制4,256个字节的RAM数据存储器。5,I/O寄存器:A,B和C双向通用I/O端口。6,命令寄存器:用来存放CPU送来得命令字。7,定时/计数器:二进制的14位减一计数器,可做分频器。,8155的内部结构简图,I/O寄存器A口,256字节RAM,双向数据缓冲器,地址锁存器,定时计数器(14位),读/写控制器,地址译码,I/O寄存器B口,I/O寄存器C口,状态命令寄存器,AD7-AD0,/CEIO/MALE/RD/WRREST,T/INT/OUT,8155引脚说明,AD7-AD0:数据/地址总线。与MCS-51的P0口连接,分时传送地址和数据信息,是连接两者的通道。I/O口线:PA7-0、PB7-0和PC5-0为8155的A、B和C口。其中A、B口为8为的通用I/O口;C口:在“通用I/O模式”下作I/O口;在“选通I/O模式”下作命令/状态口。REST、/CE和IO/M:复位、片选和I/O端口/RAM选择线。/RD、/WR:读写控制线。ALE:8155的地址锁存信号。ALE=1时,信号进入地址锁存器,ALE=0时,锁存器处于“封锁”状态,将ALE=1时的地址锁存到地址锁存器中。T/IN、T/OUT:计数器的脉冲输入线和输出线,输出波形与工作方式有关。,返回本节目录,2,CPU对8155的控制,8155的A、B和C口的数据传送是由CPU发出的命令字控制的。(1)8155内部的7个寄存器地址,(2)8155的命令字,PB、PA:A、B口工作方式:0输入;1输出。PC2、PC1:C口工作方式:00ALT1(输入)01ALT2(输出)10ALT3(选通方式)11ALT4(选通方式)IEBIEA:A、B口中断允许位:0禁止中断;1允许中断。TM2TM1:计数器工作方式:00无操作;01停止计数;10计满后停止;11开始计数。,上一次,(3)8155的状态字表征8155的状态,INTRa:A中断请求标志。0无中断;1有中断。ABF:A口缓冲器状态。0空;1满。INTEa:A口中断允许位。0禁止;1允许。INTRb:B中断请求标志。0无中断;1有中断。BBF:B口缓冲器状态。0空;1满。INTEb:B口中断允许位。0禁止;1允许。TIMER:定时器中断。0读状态字后或硬件复位后。1有定时器中断时。,状态字存在于8155的状态寄存器中,其地址与命令口地址一样都是000B,可以用MOVXA,Ri指令来读取8155的状态。状态字寄存器与命令寄存器是靠输入、输出来自动区分的。,返回本节目录,3,8155的工作方式,(1)存储方式:若IO/M=0、CE=0时,8155处于存储器模式,此时单片机通过AD7-AD0与8155的RAM单元进行读写数据。(2)I/O方式:若IO/M=1,CE=0时,8155处于I/O状态。a,通用I/O方式:A,B,C都是通用的数据端口;b,选通I/O方式:A,B为通用I/O方式,C口作为A,B口的联络控制线。选通方式是一种较为特殊的数据传输方式,它不同于一般并行口的I/O操作。它主要用于高速CPU与低速外设之间的数据交换。这里只作基本介绍。,C口在四种工作方式下的各位定义,选通I/O数据输入操作,当外设准备好数据并送PA口时,发出低电平的选通信号ASTB;8155接收到ASTB后:1,将PA上的数据装入A口寄存器2,使A口数据满ABF置位以通知外设数据已收到。8155在ASTB的上升沿使PC0的AINTR标志置位,以通知单片机数据已收到。CPU响应中断执行服务程序,当执行到从A口读取输入的数据(MOVX)时,/RD的上升沿将PC0的INTEA清零并使PC1的ABF变低,通知外设输入下一个数据。,P0INT0,PAPD0-7/RDPC1PC2PC0,D7-0,C口为ALT3模式PC0:A口中断AINTR标志输出,送单片机;PC1:A口缓冲器满ABF标志输出,送外设。PC2:A口选通输入ASTB,,ASTB,ABF,MCS-518155外设,AINTR,选通I/O数据输出操作,CPU执行MOVX指令将数据送PA口,8155收到数据后ABF变高通知外设数据已到达PA口。外设接收到ABF的高电平后:1,从D7-0上接收数据;2,使ASTB变低,通知8155外设已接收到数据。当8155监测到ASTB回到高电平时,使PC0D的AINTR变为高电平,向单片机申请中断。单片机在中断服务程序中巴下一个数据送到A口,进行下一个数据的输出。,P0INT0,PAPD0-7PC1PC2PC0,D7-0,ASTB,ABF,MCS-518155外设,C口为ALT3模式,控制字:00011001BPC0:A口中断AINTR标志输出,送单片机;PC1:A口缓冲器满ABF标志输出,送外设。PC2:A口选通输入ASTB,,AINTR,4,8155内部定时器的使用,严格的将,8155的定时器应当称为计数器,因为定时器的计数脉冲来自外部的T/IN引脚的输入脉冲,所以8155的定时器非常适合做1/n的分频器(如图)。定时器共有4中工作方式,由计数器高8位中的最高两位M2、M1来确定。不同的工作方式对应着不同的T/OUT波形。,8155T/INT/OUT,由8155作1/5分频器,MCS-51,控制字,8155内部定时器的4种工作方式,1,M1M2=00时:定时器在计数的后半周期在T/OUT线上输出低电平,如果计数初值为奇数,则高电平持续时间比低电平多一个计数脉冲;2,M2M1=01时:同上一方式,差别为当计数器“减1”到“全0”时,自动装入计数初值,所以在T/OUT上为连续波形;3,M2M1=10时:当计数器“减1”到“全0”时,在T/OUT线上输出一个单脉冲;4,M2M1=11时:当计数器“减1”到“全0”时,在T/OUT线上输出一个单脉冲,且自动重装计数初值,所以在T/OUT线上输出连续的波形。,控制字,8155定时器工作方式与T/OUT波形,计数器高8位(101B),计数器低8位(100B),1个计数周期T,T/INM2M1=00时T/OUTM2M1=01时T/OUTM2M1=10时T/OUTM2M1=11时T/OUT,思考题:哪种工作方式可以使8155完成1/n分频器的功能?这种分频器与普通数字电路中的“计数器分频”有何不同?(返回),5,8155应用与编程举例,充分利用8155的内部资源可以简化单片机系统的设计。无论是8155或其它外围电路与MCS-51的连接可分为两种方式:最小化连接;按照外部RAM地址统一编址。前者适用于较小的系统,后者用于较复杂的系统。这里采用前者,目的是使大家掌握8155最基本的编程方法。8155在I/O工作方式中我们选择“通用I/O方式”为例。,返回本节目录,8155与MCS-51的最小化连接,P2.7P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE/RD/WR,/CEIO/MPAAD7AD6AD5PBAD4AD3AD2AD1PCAD0ALET/OUT/RD/WRT/IN,MCS-518155,最小系统对8155内部各寄存器的地址分配,设定:PA口输入,PB口输出,输入脉冲进行16分频。,ORG1000HSTRAT:MOVDPTR,#7F04H;指向定时器低8位MOVA,#10H;计数初值16MOVXDPTR,A;装入初值INCDPTR;指向定时器高8位MOVA,#40H;设定为连续方波MOVXDPTR,A;装入定时器高8位MOVDPTR,#7F00H;指向命令口MOVA,#0C2H;控制字:(A输入B输出启动定时器)MOVXDPTR,A;装入控制字并启动定时器INPUT:MOVDPTR,#7F01H;指向PA口MOVXA,DPTR;从PA口输入数据OUT:MOVDPTR,#7F02H;指向PB口MOVXDPTR,A;从PB口输出数据END【思考题】:如何将PA口输入的数据存到8155内部RAM的某一单元?,控制字,MOVXDPTR,A或MOVXA,DPTR的时序,S1,S2,S6,S5,S4,S3,S1,S2,S6,S5,S4,S3,ALE,Psen,A15-A8(PC),A15-A8(DPH),A7-A0,指令,(DPL),数据,RD,P2口,P0口,选中外部RAM,第一个阶段:取MOVX指令,第二阶段:执行MOVX(从外部读取数据),3.3.3:使用8255扩展I/O端口,1,8255的内部结构和引脚功能2,8255的控制字和状态字(一)“方式控制字”(二)“C口单一置位复位控制字”(三)8255A的状态字1,8255A在模式1时的状态字2,8255A在模式2时的状态字3,8255的工作模式4,8255A应用举例,继续,8255的内部结构图,A口,C口高四位,B口,C口低四位,A组控制器,B组控制器,数缓冲据器,读制写逻控辑,PA7-0,PB7-0,PC7-4,PC3-0,D7-D0,/RD/WRA0A1RESE/CS,返回前一次,1,8255的内部结构和引脚功能,(一):内部结构:由四部分组成。1,A口,B口和C口;2,A组控制器,B组控制器;3,数据缓冲器;4,读写控制器。A口。8位数据输出缓冲/锁存,输入缓冲/锁存的I/O端口。B,C口。8位数据输出缓冲/锁存,输入缓冲的I/O端口。A组控制器,B组控制器。接收CPU发送的控制字并确定8255的工作模式,其中A组控制器控制A口和C口的高4位;B组控制器控制B口和C口的低4位。数据缓冲器。双向8位,用于传送CPU与8255之间的数据和控制字。读写控制逻辑。接收CPU送来的读(/RD),写(/WR)和片选(/CS)等信号,用于对8255的读写控制。,(二)引脚功能:40脚DIP封装。1,数据总线D7D0,与内部数据缓冲器连接,用来传送CPU与8255之间的数据字、控制字。2,控制总线:RESET:复位线,高电平有效;/CS:片选信号,低电平有效;/RD,/WR读写命令线:低电平有效;A0,A1:地址输入线,用于选中A口,B口,C口和控制寄存器。3,并行I/O总线(24条):PA7PA0:双向I/O总线,可由控制字设定为输入、输出或输入输出双向方式;PB7PB0:双向I/O总线,可由控制字设定为输入或输出方式;PC7PC0:双向I/O总线,可以设定为传送I/O数据(模式0)或控制/状态信息(模式1,2);4,电源线:Vcc和GND.,8255控制信号功能、地址表(设/CS=C0H),返回本节目录,转8255框图,2,8255的控制字和状态字,8255有两个控制字:“方式控制字”和“C口置复位控制字”。两者以控制字的D7=1或D7=0来区别。(一)“方式控制字”:用于确定三个端口的输入或输出等;D7:控制字标志位。=1表明为“方式控制字”,=0表明为C口置复位控制字;D6,D5:A组方式选择位。00:模式0,01:模式1,1X:模式2。D4:A口输入/输出控制位。=0时A口用于输出;=1时A口用于输入。D3:C口高4位输入/输出控制位。=0时C口高4位用于输出;=0用于输入。D2:B组方式选择位。D2=0时,B组设定为模式0;=1时,设定为模式1。D1:B口输入/输出控制。D1=0时,B口用于输出;=1时,B口用于输入。D0:C口低4位输入/输出控制。=0时用于输出;=1时,用于输入。,标志位A组方式选择A口、C口高4B组方式B口、C口低4,返回前次,(二)“C口单一置位复位控制字”:使C口各位在模式1,2时单独置位或复位,以实现某些控制功能。如:设置或清除A口、B口的中断允许位等。D7:控制字标志位。=0表明为“C口单一支复位控制字”。D6-D4:不用。D3D1:C口选择位。三位二进制数(000111),确定C口中8个位(D7D0)中的某一位。D0:置复位控制位。D0=0时,复位;D0=1时,置位。,标志位=0D6-D4位不用C口位选择位置复位控制位,举例,若8255的控制寄存器选口地址为FBH,试写出令PC3先置“1”,后置“0”的程序。【解】:MOVR0,#0FBH;设定8255的控制口MOVA,#07H;令PC3置“1”的控制字送AMOVXR0,A;令PC3=1MOVA,#06H;PC3置“0”的控制字送AMOVXR0,A;令PC3置“0”:END,标志位=0D6-D4位不用C口位选择位置复位控制位,(三)8255A的状态字当8255A设定为模式1、模式2时,可以通过读C口获得相应的“状态字”,以便了解8255A的工作状态。1,8255A在模式1时的状态字:(I/O为引脚的电平信号),C口各位,输入口用时,输出口用时,输入口用时,输出口用时,返回前一次,PC7PC6PC5PC4PC3PC2PC1PC0,PC7PC6PC5PC4PC3PC2PC1PC0,2,8255A在模式2时的状态字,/OBFa:A口“输出缓冲器满”标志。INTE1:A口与输出相关的中断允许位,软件置位。IBFa:A口“输入缓冲器满”标志。INTE2:A口与输入相关的中断允许位,软件置位。INTRa:A口中断请求信号,高电平有效。INTEb:B口中断允许位,软件置位。IBFb:B口“输入缓冲器满”标志。INTRb:B口中断请求信号,高电平有效。,C口各位:D7D6D5D4D3D2D1D0,返回上一次,A组模式2(输入、输出)B组模式1输出(或输入),3,8255的工作模式,8255A有三种工作模式:模式0,模式1,和模式2。用户可以通过“8255A方式控制字”来设定所需的工作模式。(1)模式0:基本的输入/输出方式(2)模式1:选通输入、选通输出方式A口、B口作为输入或输出,C口做联络线(3)模式2:A口的双向选通(输入/输出)方式,标志位A组方式选择A口、C口高4B组方式B口、C口低4,(1)模式0:基本的输入/输出方式,A口、B口和C口均可设定为此种模式。【例如】:设定A口和C口的高4位为模式0的输出方式,B口和C口的低4位为模式0的输入方式。MOVR0,#0FBH;控制寄存器地址送R0MOVA,#10000011B;方式控制字83H送AMOVR0,A;控制字83H送控制寄存器在模式0时,CPU可以对8255A无条件的进行I/O数据传送,数据可以在8255A对应的锁存器中锁存。同样,外设的I/O数据同样可以送到各端口得到锁存或缓冲。也可以将某些位设定为外设的状态输入位,CPU通过查询状态与外设进行异步I/O数据传送。,转控制字,(2)模式1:选通输入、选通输出方式,A口、B口均可独立的设置为这种工作模式。在这种模式下,A口、B口通常用于传送与它们相连外设的I/O数据。而此时,C口作为A口、B口与外设之间的联络握手信号,可以实现CPU与外设之间以“中断”的方式进行异步I/O数据传送。,标志位A组方式选择A口、C口高4B组方式B口、C口低4,转8255逻辑图,模式1下C口各位定义如下,INTR:8255A发出的中断请求信号,经反相后送单片机。IBF:8255A发出“输入缓冲器满”信号。/OBF:输出缓冲器满信号/STB:外设发出的“选通信号”,用于8255A的数据锁存用。/ACK:外设发出通知8255A的“已接收到数据”的应答信号。,(1)8255的模式1:选通输入方式(口),1,当外设输入数据到PA口时,自动的向/STBa发出一个低电平选通信号;2,8255A收到/STBa上的负脉冲后作两件事:一是将数据存入A口输入缓冲/锁存器中;二是输入“缓冲器满”的IBFa高电平信号,通知外设已收到数据。3,8255A检测到/STBa变为高电时,若Qibfa高电平,Qintra高电平时,将INTRa变高向CPU申请中断(Qintra可由用户对PC4进行单一置复位控制字控制,参见模式一时的状态字)。4,CPU响应中断后,从A口读取数据,并在读走数据后8255A撤掉INTRa信号,并使/STBa变低通知外设送下一个字节的数据。,P08031/INT0,D7-D0PAPC4PC5PC3,D7-D0输入设备,INTEa,/STBa,IBFa,INTRa,1,2,转符号说明,(2)8255的模式1:选通输出方式(口),P08031/INT0,D7-D0PBPC1PC2PC0,D7-D0输入设备,INTEb,/OBFb,/ACKb,INTRb,1,3,1,CPU通过MOVXRi,A指令将数据送到B口输出锁存器,8255A收到数据后便令“输出缓冲器满”/OBFb变为低电平,通知外设准备接收。2,外设接到/OBFb的低电平后作两件事情:一,从PB上取走数据;二,使/ACKb线变低,通知8255A:外设已收到数据。3,8255A接收到/ACKb线变低后,就对/OBFb,/ACKb和Qinteb的状态进行检测,当它们皆为“1”时,INTRb变为高电平向CPU发终端申请。4,CPU响应中断后,通过中断服务程序将下一个数据送到8255A的B口,同时撤掉INTRb信号。,2,模式一时的状态字,(3)模式2:A口的双向(输入/输出)方式,只有A口具有模式2方式。此时,PA口为双向I/O总线。1,当PA作输入口时,由/STBa和IBFa信号控制,过程同模式1的输入操作。2,当PA作输出口时,由/OBFa和/ACKa控制,工作过程同模式1的输出操作。模式2非常适应像终端一类的外设,如键盘、显示器等设备。,P08031/INT0,D7-D0PA,D7-D0输入设备,PC7,INTE1,/OBFa,/ACKa,INTRa,PC6,PC4,PC5,PC3,IBFa,/STBa,+,INTE2,返回本节目录,模式2状态字,4,8255A应用举例(方式0),/RD/WRP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE89C51,D7Q7D6Q6D5Q5D4Q4D3Q3D2Q2D1Q1D0Q074LS373G/E,/RD/WRRESET/CSPC口8255AA1A0PB口D7D6D5D4D3D2PA口D1D0,设8255A工作在方式0,且A口输入,B、C口输出。,/CS=FF7XH,A口:FF7CHB口:FF7DH,C口:FF7EH,控制口:FF7FH,程序清单,ORG0100HSTART:MOVA,#90H;方式0,A口输入,B口、C口输出MOVDPTR,#0FF7FH;8255A控制口地址送指针MOVXDPTR,A;控制字送8255A控制寄存器MOVDPTR,#0FF7C;A口地址送指针MOVXA,DPTR;从A口输入数据到AMOVDPTR,#0FF7DH;B口地址送指针MOVA,DATA1;从内存DATA1单元中取数X1到AMOVXDPTR,A;数据从B口输出MOVDPTR,#0FF7EH;C口地址送指针MOVA,DATA2;从内存DATA2单元中取数X2到AMOVXDPTR,A;数据从C口输出,标志位A组方式选择A口、C口高4B组方式B口、C口低4,返回本节目录,3.3.4,使用串行口扩展I/O端口,在MCS-51单片机串行口的4种工作模式中模式0(同步移位模式)可以用来实现系统并行I/O端口的扩展。使用这种方式的特点:扩展I/O端口数量可以不受限制(N*8位);扩展端口与单片机之间的连线少(23条);扩展口与单片机之间的数据交换时间较长;需要使用外部的“并入串出”或“串入并出”移位寄存器。,MCS-51RXDTXD,移位寄存器,移位寄存器,同步移位脉冲,由MCS-51的串口与两个8位移位寄存器(74LS164)构成的16位并行输出口,数据线,串行口0模式,特点:同步移位方式。8位数据移位,低位在先;波特率固定为fosc/12;数据由RXD(P3.0)出入,同步移位脉冲由TXD发出。与串行口模式0相关的寄存器SBUF。用来装载接收或待传送数据的缓冲器;SCON。设定工作模式,存放相关标志的串口控制寄存器。设定串口模式:00000000B模式0时发送机的控制字;00010000B模式0时接收机的控制字。【注意】:在接收或发送前必须将对应的标志RI或TI清零!只要REN=1便开始启动接收。,使用2片74LS165构成的16位输入扩展口,MCS-51P3.0P3.1P1.0,HGFEDCBAQH74LS165SINS/LCLK,HGFEDCBAQH74LS165SINS/LCLK,RXD,TXD,16位并行I/O端口,74LS165:AH:8位并行数据输入端;并入串出移位寄存器SIN:串行数据输入端;QH:串行数据输出端;S/L:=0时锁存并行数据,=1时允许串行移位。,编程举例:读入20个字节的数据并送入内部RAM单元,MOVR7,#14H;字节数20送计数器R7MOVR0,#20H;内部数据区指针R0赋初值SETBF0;设置“读入字节数奇偶数”标志RCV0:CLRP1.0;并行置入数据SETBP1.0;允许串行移位RCV1:MOVSCON,#00010000B;设定模式0并启动接收(REN=1)LOOP:JNBRI,$;等待接收结束CLRRI;首先清RI准备下一次接收MOVA,SBUF;将接收的数据送AMOVR0,A;数据送内存INCR0CPLF0;标志取反JBF0,RCV2;接收偶次后重新置入数据DECR7;接收奇次时要再接收一帧SJMPRCV1;转RCV1再接收一帧数据RCV2:DJNZR7,RCV0;是否完成20个字节的输入【注意】:F0的作用和程序根据F0的状态转移到RCV1、RCV0的区别。,思考题:编一个在下面的电路中读入20个字节的数据的程序,MCS-51P3.0P3.1P1.0,HGFEDCBAQH74LS165SINS/LCLK,RXD,TXD,使用2片74LS164构成的16位输出扩展口,MCS-51P3.0P3.1P1.0,QAQHA,B74LS164/CLRCLK,QAQHA,B74LS164/CLRCLK,RXD,TXD,共阳极LED数码管.gfedcba,共阳极LED数码管.gfedcba,+5V,编程:利用静态数码管显示电路,显示RAM中的数据,数据存RAM的20H开始的单元,以BCD码的形式存储(高4位为0);再送数码管显示前必须事先利用查表程序将BCD码转换为共阳极的字符码。,abcdefgdp,+VCC,a,b,c,d,e,f,g,dp,ORG2000HDISP:MOVR7,02H;设置显示位数MOVR0,#20H;设置数据区指针MOVSCON,#00H;设串行口为模式0MOVDPTR,#TABLE;设置字符表指针DISP0:MOVA,R0;取数据到AMOVCA,A+DPTR;从表中取与A对应的字符到AMOVSBUF,A;字符向外传送LOOP:JNBTI,$;等待传送结束CLRTI;清除标志TIINCR0;指向下一个数据DJNZR7,DISP0;未完时转DISP0继续RETTABLE:DB0C0H,0F9H,0A4H,0B0H,99H;0,1,2,3,4的字符码DB92H,82H,0F8H,80H,98H;5,6,7,8,9的字符码END,返回,3.4:定时计数器的应用,3.4.1:定时计数器的四种工作模式3.4.2:定时器相关的寄存器3.4.3:定时器模式1电路3.4.4:定时计数器的初始化3.4.5:定时器方式1应用举例(一)3.4.6:定时器方式1应用举例(二)3.4.7:定时器门控位GATE的应用,继续,3.4.1:定时计数器的四种工作模式,模式0、模式1:基本相同,区别在于模式0计数器的长度为13位;模式1时计数器长度为16位;模式2:主要用于单片机的串行通讯时的“波特率”发生器,将在下一节“串行口应用中介绍”。本节主要介绍模式1的应用。,返回本节目录,3.4.2:定时器相关的寄存器,定时/计数器1,定时/计数器0,1,模式控制寄存器TMOD(SFR89H),2,控制寄存器TCON(SFR地址:88H),返回本节目录,T0、T1的启动TR和溢出标志TF外部中断标志IE和触发极性选择IT,3.4.3:定时器模式1电路,TL1,TH1,震荡器,1/12,(8位),(8位),TF1,中断,控制,T1引脚,TR1,GATE,INT1,C/T=0,C/T=1,返回本节目录,3.4.4:定时计数器的初始化,(一)初始化的步骤:1,根据需要,设定工作方式(C/T位)计数或定时;2,确定定时或计数初值;3,设置相应的中断参数、优先级别;4,送命令字,启动定时、计数器。(二)定时、计数初值的计算:TC为计数初值;1,计数初值计算公式:TC=M-C其中M为计数器的模;C为计数值;【举例】:在方式0时,每接收100个外部事件,要求产生一个中断,确定计数初值。TC=8192-100=8092=1F9CH,1FH,9CH,THi=FCHTLi=1CH,2,定时器初值计算公式:TC=M-T/T计数(其中:M计数模;T定时时间;T计数系统时钟周期的12倍)设系统时钟为12MHZ,则T计数=1。定时器4种模式的最大定时时间与M有关。,【举例】:请计算定时50ms所需要的定时初值。1,确定模式.。选择模式12,计算定时初值。Tc=65536-50ms/1=65536-50000=15536=3CB0H既THi=3CH;TLi=B0H,返回本节目录,3.4.5:定时器方式1应用举例(一),利用单片机的P1.0产生一个频率为50HZ的对称方波。【解】:使用T0。首先确定工作方式、工作模式和定时初值。1,选定时方式(C/T=0);2,模式1(M2M1=01),3,TC=65536-10ms/1us=55536=D8F0H,既TH=D8H,TL=F0H。,20ms,10ms,10ms,TMOD00000001,ORG1000HSTRAT:MOVTMOD,#01H;设定时器为定时,模式1SETBTR0;启动定时器T0LOOP:MOVTH0,#0D8H;设定时初值MOVTL0,#0F0HJNBTF0,$;定时时间到?CLRTF0;清T0标志CPLP1.0;P1.0取反SJMPLOOP;循环继续END,程序清单,返回本节目录,3.4.6:定时器方式1应用举例(二),利用P1.0口线输出周期为2S的方波。【解】如何产生1S(1000ms)的定时?1000ms的定时由50ms累计20次。1,设定T0为定时方式,模式1。2,TC=65535-50ms/1us=3CB0H3,TMOD控制字为:00000001B=01H4,T0采用中断方式,既每50ms产生一次中断,中断20次便是1S。,软件重装初值,R0=0?,N,Y,CPLP1.0,2S,1S,1S,P1.0,20R0,R0-1R0,RETI,BRT0,中断服务程序,ORG1000HSTART:MOVTMOD,#01H;设0为定时方式,模式1MOVTH0,#3CH;50mS定时初值MOVTL0,#0B0HMOVIE,#82H;开中断(T0)SETBTR0;启动定时器T0MOVR0,#14H;计数器R0赋初值20LOOP:SJMP$;等待T0中断ORG000BHAJMP0080HORG0080HBRT0:DJNZR0,NEXT;T0中断服务程序CPLP1.0;P1.0输出取反MOVR0,#14H;计数器R0重赋初值20NEXT:MOVTH0,#3CH;软件重装初值MOVTL0,#0B0HRETI;中断返回END,返回本节目录,3.4.7:定时器门控位GATE的应用,在通常,在TMOD中GATE=0时,只要TR=1便启动定时器开始计数。如果GATE=1时,TR=1电路是否计数取决于/INT0:/INTE0=1时开始计数;/INTE0=0,电路不计数。利用这一特点,可以实现测量外部脉冲的宽度。,计数器,震荡器,1/12,TF0,中断,计数控制,T0引脚,TR0,GATE,INT0,C/T=0,C/T=1,MCS-51INTE0,解题步骤:将外部脉冲接到P3.2(/INT0)上,使用T0且C/T=1;计数器TH0、TL0原始初值为00H,且设为模式1(16位);在/INT0=0时启动T0计数器(TR0=1);当/INT0=1时,定时器T0开始计数;当/INT0=0时计数停止,此时TH0、TL0中的计数值就是与脉冲宽度相对应得数据。,MCS-51INT0,启动T0T0开始计数计数停止(TR0=1)(/INT0=1)(/INT0=0),外部脉冲,MOVTMOD,#09H;设定T0为模式1且GATE0=1MOVTH0,#00HMOVTL0,#00H;计数器原始清零MOVR0,#20H;设置数据区指针并原始赋初值JBINT0,$;等待/INT0上的脉冲变低SETBTR0;INT0变低后,启动T0(但不计数)JNBINT0,$;若INT0低电平则等待JBINT0,$;若INT0高电平则等待(开始计数)CLRTR0;INT0变低后,关闭T0(停止计数)MOVR0,TH0INCR0MOVR0,TL0;保存计数器T0的计数值【说明】:设系统时钟为12MH,这样脉冲宽度T=(THL、TL0)*1,返回本节目录,MCS-51INT0,启动T0T0开始计数计数停止(TR0=1)(/INT0=1)(/INT0=0),外部脉冲,3.5:串行口的应用,3.5.1:串型口的工作模式和控制寄存器SCON3.5.2:模式0、2时的波特率的计算3.5.3:模式1、3时的波特率的计算3.5.4:四种模式下的接收与发送条件3.5.5:模式1举例(一)发送程序TXD.ASM3.5.6:模式2、3应用举例3.5.7:使用模式3进行多机通讯,继续,串行口的应用,在编制串行通讯程序时,首先要确定两个参数:1,通讯双方的“波特率”,必须保持严格一致;2,传输数据的格式“字符帧格式”必须统一。MCS-51串口的4种模式中:0、2模式的波特率是固定的;1和3模式时波特率是可变且由定时器T1来作为波特率发生器,以模式2的方式工作。用T1作为波特率发生器时,根据波特率来计算T1的初值就成为串口程序初始化的主要任务之一。在通讯过程中,对标志(RI、TI)的判断是控制通讯全过程的关键环节。,3.5.1:串型口的工作模式和控制寄存器SCON,模式选择多机通讯位允许接收位发送、接收

温馨提示

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

评论

0/150

提交评论