复试单片机课件7接口技术_第1页
复试单片机课件7接口技术_第2页
复试单片机课件7接口技术_第3页
复试单片机课件7接口技术_第4页
复试单片机课件7接口技术_第5页
已阅读5页,还剩336页未读 继续免费阅读

下载本文档

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

文档简介

第四章:MCS-51单片机的系统扩展及应用(接口技术)通过地址总线、数据总线和控制总线实现ROM、RAM或其它接口电路的扩展(

MOVX指令的运用)。定时器、串行口和A/D、D/A等应用场合下的硬件接口和软件编程。:程序存储器的扩展:数据存储器的扩展:输入、输出口的扩展:定时计数器的应用:串行口的应用:MCS-51与D/A转换器的接口:MCS-51与A/D转换器的接口:动态数码显示及键盘扫描电路:单片机的监控电路--看门狗电路:单片机应用举例:智能化数据采集系统4.1:程序存储器ROM的扩展1,单片机的P0、P2口作为外电路的数据、地址总线:

P0口做为低8位地址和数据复用总线;P2口做为高8位地址总线。2,单片机的/Psen作为数据选通信号与外ROM的数据输出三态控制/OE端连接(参照访问外存储器的时序);3,使用一个8位的数据锁存器来锁定低八位地址信号,使用单片机的ALE信号作锁存器的锁存控制。具有三态功能的8D锁存器D7

Q774LS373D0

Q0G

/L/L:三态控制。低电平:允许数据输出,三态门通;高电平:三态门关闭,输出高阻。G:数据锁存控制。高电平时,输出随输入变化;低电平时,Q端将被所存(低电平锁存)。数据输入端数据输出端①

MCS-51与1片32K

ROM的连接(地址线全译码)CEA14::A8A7

O7:

::

::

:A0

O0OE2725632K

ROMMCS-51/CE

=

P2.7(A15)返回前一次完整的地址信号三态输出的数据口由/OE控制D7

Q774LS373D0

Q0G

/LP2.7:::P2.0P0.7:::P0.0ALE/EAPsen外部ROM的状态与地址线A15的关系表ROM引脚/CEA14~A8A7~A0地址范围ROM工作状态单片机引脚A15P2口A14-8P0口A7-0000000000111111100000000111111110000H~7FFFH选中110000000111111100000000111111118000HFFFFH未选中注意:1,ROM地址线与存储器的容量之间的关系;2,ROM的/OE

与单片机的/psen

连接;3,ROM的/CE信号是存储器的片选;4,由于采用地址线全译码,所以每一个地址对应唯一的存储单元访问外部程序存储器ROM的时序:A15-A8(PC)A7-A0OP存储器数据输出控制/Psen地址总线(高八位)P2口地址数据总线(低8位)P0

口S1S2S6S5S4S374LS373地址锁存信号

ALE

A15-A8(DPTR+A)A7-A0

常数MOVC

A,@A+DPTRAB转电路图返回前一次(参考讲义70页)片外存储器访问时序说明P0、P2口作地址和数据总线。其中P0口作为地址和数据复用总线,前半部(A段)作地址总线,后半部(B段)作为数据总线。外部程序存储器ROM的操作步骤如下:1,必须为ROM其提供完整的(15位)地址信息;2,ROM芯片的/CE

端=0,选中该芯片;3,在满足上述条件的基础上,当ROM的/OE=0时(B时间段),存储器输出数据的三态门打开,并将与输入地址相对应的存储单元中的指令(数据)向外输出,单片机通过P0口将指令送至CPU

内部。74LS373锁存器:将A时间段P0口输出的低位地址进行保存,使ROM在B时间段仍然可以得到完整的地址信号。转电路图转时序图②

MCS-51与2片32K

ROM的连接(地址线全译码)如何使用两片32K的ROM芯片扩展为64K的存储阵列。A15P2口MCS

-

51P0口ALE/EA

Psen/CE2A14A8A7A0/OE2O0~O7/CE1A14A8A7A0/OE1O0~O774LS373由两片32K的ROM构成64K存储阵列与A15的关系表A15/CEA14~A8P2口A7~A0P0口地址范围ROM1工作状态ROM2工作状态000000000111111100000000111111110000H~7FFFH选中/CE=A15未选中110000000111111100000000111111118000H

~FFFFH未选中选中/CE=/A15③

MCS-51与多个ROM的连接(地址线全译码)若需要对2片以上的芯片扩展,可以通过译码电路实现。P2.7P2.6P2.5P2.4P2.0P0口ALEPsen/CE0A12A8A78K×8A0/OE1O0~O774LS373C

y7BAy

0/CE1A12A8A78K×8A0/OE1O0~O7/CE7A12A8A78K×8A0/OE1O0~O7MCS–5174LS13874LS1383-8线译码器A、B、C:选择输入。作为与输出对应的二进制编码输入;

G1、/G2A、G2B:使能输入,作为片选控制输入;

y7~y0:译码器输出,低电平有效。74LS138G1/G2A/G2BCBAy0y1y2y3y4y5y6y7CBAy7

y6

y5

y4

y3

y2

y1

y00001111111000111111101010111110110111111011110011101111101110111111101011111111101111111采用LS138译码器实现ROM扩展示意表P2.7~P2.5138输入片选/CEi138

输出选中ROMP2.4~P0.0有效地址范围0

0

0Y0=0第1片0000H~1FFFH0000H~1FFFH0

0

1Y1=0第2片0000H~1FFFH2000H~3FFFH0

1

0Y2=0第3片0000H~1FFFH4000H~5FFFH0

1

1Y3=0第4片0000H~1FFFH6000H~7FFFH1

0

0Y4=0第5片0000H~1FFFH8000H~9FFFH1

0

1Y5=0第6片0000H~1FFFHA000H~BFFFH1

1

0Y6=0第7片0000H~1FFFHC000H~DFFFH1

1

1Y7=0第8片0000H~1FFFHE000H~FFFFH返回采用不完全译码的简易ROM扩展电路(一)P2.7P2.5P2.5P2.4P2.3P2.2P2.1P2.0P0口ALEPsenMCS–51/CEA12A11A10A9A8A78K×8A0/OE1O0~O774LS373部分译码造成的地址重叠(一)P2.7~P2.5P2.4~P2.0P0.7~P0.0有效地址范围0

0

000000/1111100H/FFH0000H~1FFFH0

0

100000/1111100H/FFH2000H~3FFFH0

1

000000/1111100H/FFH4000H~5FFFH0

1

100000/1111100H/FFH6000H~7FFFH1

0

000000/1111100H/FFH8000H~9FFFH1

0

100000/1111100H/FFHA000H~BFFFH1

1

000000/1111100H/FFHC000H~DFFFH1

1

100000/1111100H/FFHE000H~FFFFH造成了8个地址相互重叠的存储区域P2.7P2.5P2.5P2.4P2.3P2.2P2.1P2.0P0口ALEPsenMCS–51/CEA12A11A10A9A8A78K×8A0/OE1O0~O774LS373采用不完全译码的简易ROM扩展电路(二)部分译码造成的地址重叠(二)P2.7

P2.6P2.5P2.4~P2.0P0.7~P0.0有效地址范围0

0000000/1111100H/FFH0000H~1FFFH0

0100000/1111100H/FFH2000H~3FFFH0

1000000/1111100H/FFH4000H~5FFFH0

1100000/1111100H/FFH6000H~7FFFH1

0000000/1111100H/FFH8000H~9FFFH1

0100000/1111100H/FFHA000H~BFFFH1

1000000/1111100H/FFHC000H~DFFFH1

1100000/1111100H/FFHE000H~FFFFH造成了4个地址相互重叠的存储区域部分译码扩展电路的特点以上面电路(一)为例:由于P2.5~P2.7没有与存储器的地址信号连接,所以3位地址信号对于存储器来说是不起任何作用的。重叠地址的数量与空余地址线的条数有关:重叠地址数=2n

;其中n为空余地址线数。对于使用ROM空间小于64K时,可以考虑使用部分译码的方式,以简化电路的设计、降低电路成本。一般情况,编程时稍加注意,地址重迭不会带来使用上的问题。4.2:数据存储器RAM的扩展同程序存储器扩展,使用P0、P2口作为地址、数据总线。1,当使用

MOVX @Ri,A指令时,系统仅使用P0口输出地址信号(P2口不用);2,当使用

MOVX

@DPTR,A指令时,P0口输出DPTR提供的低八位地址信号,P2口输出DPTR提供的高八位地址信号。3,不论哪种情况,P0口都是地址/数据复用总线,因此仍要使用74LS373来锁存P0口的地位地址信号。与ROM扩展不同:使用访问外部RAM指令MOVX时,在时序中将产生/RD或/WR信号,因此将此信号与外RAM的读(/RD)

、写(/WR)控制端相连接就实现系统对外

RAM的读写控制。设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU

执行外部ROM中的指令:movx

a,@dptr

;将外RAM的x送AS1

S2

S3

S4

S5

S6

S1

S2

S3

S4

S5

S6ALEPsenA15-A8(PC)A15-A8(DPH)A7-A0指令A7-

A0数据RDP2口P0口选中外部RAM读外部数据存储器RAM的指令时序MCS-51与32K

RAM的连接P2.5P2.4::P2.0P0.7:::P0.0ALE/RD/WRCEA12

::A8A7

O7:

::

::

:A0

O0/OE

/WED7

Q7D0

Q0CP62648K

RAMMCS-51/CE

=

P2.5(A12)三态输出的数据口由/OE控制小结:1,外部存储器是使用P0、P2口作为地址、数据总线;2,因为P0口为数据、地址复用总线,必须用74LS373来锁存P0口的低八位地址信号。3,靠MOVC指令的/Psen信号来打开外ROM的数据三态门;靠MOVX指令产生/RD或/WR选中外RAM。4,存储器的容量M与其地址线条数n的关系:M=2n5,当使用两片存储器扩展时,使用一个反向器扩展;当使

用2片以上的存储器时,就要使用译码器,译码器的输入与

高位地址相连接,输出端与各ROM的/CE连接(如图所示)。6,若16位地址线没全部参与译码时,会发生地址重叠。返回思考题:使用6264(8KRAM)芯片和2764(8KROM)芯片组成16K

RAM和16KROM的外存储阵列(逻辑图)。采用74LS138和74LS373实现译码和锁存功能。根据设计的结果,写出RAM和ROM的地址范围。返回4.3:输入、输出口的扩展I/O端口的扩展是使用MCS-51作为嵌入式控制器进行硬件设计中经常遇到的问题:,使用8243扩展I/O

端口,使用8155扩展I/O

端口,使用8255扩展I/O

端口4.3.4,使用串行口扩展I/O端口继续4.3.1:使用8243扩展I/O端口P4.0P4.1P2.0

P4.2P2.1

P4.3P2.2P2.3

P5.0P5.1P5.2P5.3P6.0P6.1P6.2P6.3PROGP7.0/CE

P7.1P7.2P7.3接单片机8243为4X4位的扩展口。P2口:用于CPU与8243之间传送命令、数据。其中:命令码中含口地址(两位)、操作码(两位)。数据为四位。PROG:控制端。P4~P7:4X4位具有锁存功能的双向I/O端口。操作码口地址P2.3P2.2操作P2.1P2.0端口00读00P401写01P510OR10P611AND11P7上一次8243的时序P4.0P4.1P2.0

P4.2P2.1

P4.3P2.2P2.3

P5.0P5.1P5.2P5.3P6.0P6.1P6.2P6.3PROGP7.0/CE

P7.1P7.2P7.3PROGP2口1,由高变低时,将P2口的命令(口地址、操作码)信息所存到8243

2,由低变高时:a,写操作时:8243将P2口上的数据写入对应的端口;b,读操作时:当操作码一译出,选中的端口的输入缓冲器与P2口接通,等待CPU读走。当PROG变高后,结束读操作。1

2操作码、口地址 数据(4位)上一次8243应用举例1:使用51的P2口与8243连接,并从8243的P6口读入数据,51的P2.6

P2.7留作输入。P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7MCS-51P4.0P4.1P4.2P4.3P2.0P2.1P2.2P2.3

P5.0PROG

P5.1/CE

P5.2P5.3P6.0P6.1P6.2P6.3P7.0P7.1P7.2P7.38243IN8243:MOV A,#11010010B

;控制字;输出控制字;8243接收操作码;读取P6口数据;PROG=1结束读;关闭8243MOV

P2,ACLRP2.4MOV

A,P2SETB

P2.4SETB

P2.5RET【注意】:

1,控制字11010010的含义;2,根据8243的时序,在使PROG

变高前单片机必须读入P6口中的数据。8243应用举例2:将R2寄存器的低4位写到P7口。

P2.6

P2.7留作输入P2.0P2.1P2.2P2.3P2.4P2.5P2.6P2.7P4.0P4.1P4.2P4.3P2.0P2.1P2.2P2.3

P5.0PROG

P5.1/CE

P5.2P5.3P6.0P6.1P6.2P6.3P7.0P7.1P7.2P7.3;控制字;输出控OUT:MOV

A,#11010111BMOV

P2,A制字CLRP2.4MOV

A,R2ORL

A,#11110000B;8243接收操作码;读取R2数据;高4位置1低4位不变ORL

P2,#00001111B

;低4位置1高4位不变;A送P2高4位不变;PROG=1数据写入P7口;关闭8243ANL

P2,ASETB

P2.4SETB

P2.5RET【注意】:第1条ORL是保证不影响P2口高4位;第2条ORL指令时保证下面ANL指令能够正确的将低4位数据写入P2口。

返回4.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/WRRESTT

/

INT

/

OUT8155引脚说明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个寄存器地址/CEIO/MA7-A3A2A1A0所选端口01XXXXX000命令/状态寄存器01XXXXX001A口01XXXXX010B口01XXXXX011C口01XXXXX100计数器低8位01XXXXX101计数器高8位00XXXXXXXXRAM单元(2)8155的命令字TM2TM1IEBIEAPC2PC1PBPAPB

、PA:A、B口工作方式:0

输入;1

输出。PC2、PC1:C口工作方式:00

ALT1(输入)01

ALT2(输出)10

ALT3(选通方式)11

ALT4(选通方式)IEBIEA:

A、B口中断允许位:0禁止中断;1

允许中断。

TM2

TM1:计数器工作方式:00

无操作;01

停止计数;10

计满后停止;11开始计数。上一次(3)8155的状态字─表征8155的状态Ingra:A中断请求标志。ABF:

A口缓冲器状态。

Intel:A口中断允许位。

Nitro:B中断请求标志。0

无中断;1

有中断。0

空;

1

满。0

禁止;

1

允许。0

无中断;1

有中断。BBF:

B口缓冲器状态。

0

空;

1

满。Intec:

B口中断允许位。

0

禁止;

1

允许。TIMER:定时器中断。0

读状态字后或硬件复位后。1

有定时器中断时。XTIMERINTEbBBFINTRbINTEaABFIngra状态字存在于8155的状态寄存器中,其地址与命令口地址一样都是000B,可以用

MOVX A,

@

Ri

指令来读取8155的状态。状态字寄存器与命令寄存器是靠输入、输出来自动区分的。返回本节目录3,8155的工作方式存储方式:若IO/M=0、CE=0时,8155处于存储器模式,此时单片机通过AD7-AD0与8155的RAM单元进行读写数据。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口在四种工作方式下的各位定义C口通用I/O方式选通I/O方式ALT1ALT2ALT3ALT4PC0输入输出A

INTR(A口中断)A

INTR(A口中断)PC1输入输出ABF

(A口缓冲器满)ABF

(A口缓冲器满)PC2输入输出ASTB(A口选通)ASTB(A口选通)PC3输入输出输出B

INTR(B口中断)PC4输入输出输出BBF

(B口缓冲器满)PC5输入输出输出BSTB(B口选通)选通I/O数据输入操作当外设准备好数据并送PA口时,发出低电平的选通信号ASTB;8155接收到ASTB后:1,将PA上的数据装入A口寄存器2,使A口数据满ABF置位以通知外设数据已收到。8155在ASTB的上升沿使PC0的AINTR标志置位,以通知单片机数据已收到。CPU响应中断执行服务程序,当执行到从A口读取输入的数据(MOVX)时,/RD的上升沿将PC0的INTEA清零并使

PC1的ABF变低,通知外设输入下一个数据。P0INT0PAPD0-7/RDPC1PC2PC0D7-

0ASTBABFMCS-518155外设A

INTRC口为ALT3模式PC0:A口中断A

INTR标志输出,送单片机;

PC1:A口缓冲器满ABF标志输出,送外设。

PC2:A口选通输入ASTB,选通I/O数据输出操作CPU执行MOVX指令将数据送

PA口,8155收到数据后ABF变高通知外设数据已到达PA口。外设接收到ABF的高电平后:1,从D7-0上接收数据;2,使ASTB变低,通知8155外设已接收到数据。当8155监测到ASTB回到高电平时,使PC0D的AINTR变为高电平,向单片机申请中断。单片机在中断服务程序中巴下一个数据送到A口,进行下一个数据的输出。P0INT0PAPD0-7PC1PC2PC0D7-

0ASTBABFMCS-518155外设A

INTRC口为ALT3模式,控制字:00011001BPC0:A口中断A

INTR标志输出,送单片机;

PC1:A口缓冲器满ABF标志输出,送外设。

PC2:A口选通输入ASTB,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波形M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0计数器高8位(101B)计数器低8位(100B)T/INM2M1=00时T/OUTM2M1=01时T/OUTM2M1=10时T/OUTM2M1=11时T/OUT1个计数周期T思考题:哪种工作方式可以使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/M

PAAD7AD6AD5

PBAD4AD3AD2AD1

PCAD0ALE

T/OUT/RD/WR

T/INMCS-518155P2.7-P2.0P0.7-P0.0地址选择01111110000000007E00HRAM’256存储单元01111110111111117EFFH01111111000000007F00H命令寄存器01111111000000017F01HPA口01111111000000107F02HPB口01111111000000117F03HPC口01111111000001007F04H计数器低8位01111111000001017F05H计数器高8位最小系统对8155内部各寄存器的地址分配设定:PA口输入,PB口输出,输入脉冲进行16分频。ORG

1000HSTRAT:

MOV

DPTR,#7F04HMOV

A,#10H

MOVX

@DPTR,AINC

DPTRMOV

A,#40HMOVX

@DPTR,AMOV

DPTR,#7F00HMOV A,

#

0C2HMOVX

@DPTR,AINPUT:MOV DPTR,#

7F01HMOVX

A,@DPTROUT:;指向定时器低8位;计数初值16;装入初值;指向定时器高8位;设定为连续方波;装入定时器高8位;指向命令口;控制字:(A输入B输出启动定时器);装入控制字并启动定时器;指向PA口;从PA口输入数据;指向PB口;从PB口输出数据MOV DPTR,#

7F02HMOVX

@DPTR,AEND【思考题】:如何将PA口输入的数据存到8155内部RAM的某一单元?控制字MOVX @DPTR,A或MOVX A,@DPTR的时序S1S2S6S5S4S3S1S2S6S5S4S3ALEPsenA15-A8(PC)A15-A8(DPH)指令A7-A0

(DPL)数据RDP2口P0口选中外部RAM第一个阶段:取MOVX

指令第二阶段:执行MOVX(从外部读取数据)返回上一次4.3.3:使用8255扩展I/O端口(257页)1,8255的内部结构和引脚功能2,8255的控制字和状态字(一)“方式控制字”(二)“C口单一置位复位控制字”(三)8255A的状态字1,8255A在模式1时的状态字2,8255A在模式2时的状态字3,8255的工作模式4,8255A应用举例继续8255的内部结构图A口C口高四位B口C口低四位A组控制器B组控制器数据缓冲器读写控制逻辑PA7-0PB7-0PC7-4PC3-0D7-D0/RD/WRA0A1RESET/CS返回前一次C口1,8255的内部结构和引脚功能(一):内部结构:由四部分组成。1,A口、B口和C口;3,双向数据缓冲器;2,A、B组控制器;4,读写控制器。A口。8位数据输出缓冲/锁存,输入缓冲/锁存的I/O端口。

B、C口。8位数据输出缓冲/锁存,输入缓冲的I/O端口。A组控制器,B组控制器。接收CPU发送的控制字并确定

8255的工作模式。其中:A组控制器控制A口和C口的高4位;

B组控制器控制B口和C口的低4位。数据缓冲器。传送CPU与8255之间的8位数据和控制字。读写控制逻辑。接收CPU送来的读(/RD),写(/WR)和片选(/CS)等信号,用于对8255的读写控制。(二)引脚功能:40脚DIP封装。1,数据总线(D7~D0):双向与内部数据缓冲器连接,传送

CPU与8255之间的数据字、控制字。2,控制总线:RESET:/CS:复位线,高电平有效;

片选信号,低电平有效;/RD、/WR:读写命令线,低电平有效;A0、A1:

用于选择A、B、C口和控制寄存器的地址线。3,并行I/O总线(24条):PA7~PA0:双向I/O总线,可设定为输入、输出或双向方式;PB7~PB0:双向I/O总线,可设定为输入或输出方式;

PC7~PC0:双向I/O总线,可设定为传送I/O数据(模式0)或控制/状态信息(模式1,2);4,电源线:Vcc和GND.结构图8255控制信号功能、地址表(设/CS=C0H)/CS=C0~C3H(11000000)A1

A0/RD/WR端口地址端口功能00

001C0HA口读A口00

010C0H写A口00

101C1HB口读B口00

110C1H写B口01

001C2HC口读C口01

010C2H写C口01

110C3H控制口写控制字1XXXXXX未选中返回本节目录转8255框图返回上一次2,8255的控制字和状态字8255有“方式控制字”和“C口置复位控制字”两种控制字,由D7=1或D7=0区别。①“方式控制字”用于确定端口的工作模式,输入或输出等;②“C口置复位控制字”用于在模式1、2时单独对C口置位或复位,以实现某些控制功能。D7D6D5D4D3D2D1D0标志位

A组方式选择

A口、C口高4

B组方式

B口、C口低4返回前次D6,D5:A组方式选择位。00:模式0,01:模式1,1X:模式2。D4:A口输入/输出控制位。=0时设定为输出;=1时为输入。

D3:C口高4位输入/输出控制位。=0时设定为输出;=0为输入。

D2:B组方式选择位。D2=0时设定为模式0;=1时为模式1。D1:B口输入/输出控制。D1=0时设定为输出;=1时为输入。

D0:C口低4位输入/输出控制。=0时为输出;=1时,为输入。(一)“方式控制字”(D7=1)D7=1D6D5D4D3D2D1D0标志位

A组方式选择

A口、C口高4

B组方式

B口、C口低4使C口各位在模式1,2时单独置位或复位,以实现某些控制功能。如:设置或清除A口、B口的中断允许位等。【注意】:对C口的置位/复位是通过控制口实现的!D6~D4:不用。D3~D1:C口选择位。三位二进制数(000~111),确定C口中8个位(D7~D0)中的某一位(要处理的位)。D0:置、复位控制位。D0=0时,复位;D0=1时,置位。D7=0XXXD3D2D1D0标志位=0D6-D4位不用C口位选择位置复位控制位返回上一次(二)“C口单一置位、复位控制字”(D7=0)举例若8255的控制寄存器选口地址为C3H,试写出令PC3先置

“1”,后置“0”的程序。【解】:ORG

1000H;设定8255的控制口;令PC3置“1”的控制字送A;令PC3=1(使用P0口传送命令);PC3置“0”的控制字送A;令PC3置“0”MOV

R0,#0C3HMOV

A,#07HMOVX

@R0,AMOV

A,#06HMOVX

@R0,A:ENDD7=0XXXD3D2D1D0标志位=0D6-D4位不用C口位选择位置复位控制位例题中8255与89C51的连接示意图89C51P0ALECP8255PAPC/CEPBD7~D074LS373地址译码器凡是使用MOVX指令,数据都是通过P0口在指令的第二个机器周期进行传送。当8255A设定为模式1、模式2时,可以通过读C口获得相应的“状态字”,以便CPU了解8255A的工作状态。状态字分为3

种类型:①INTEA:A组的中断允许触发器的状态。=1允许中断,通过CPU对PC4的置位和复位来实现控制(INTRB类同)。②IBFA、OBFA:A口输入时,输入缓冲器满标志;A口输出时,输出缓冲器满标志。该标志位硬件自动置位,作为异步通讯的状态和握手信号(IBFB、OBFB类同)。③I/O:引脚上的电平信号。返回前一次8255地址表C口置复位控制字(三)8255A的状态字(首先了解3种模式)1,8255A在模式1时的状态字(注:I/O为引脚的电平信号)D7D6D5D4D3D2D1D0I/OI/OIBFaINTEaINTRAC口各位

PA口输入用时/OFBaINTEaI/OI/OINTRAINTEbIBFbINTRbPB口输入用时INTEb/OBFbINTRbPC7

PC6

PC5PA口输出用时PC4

PC3PC0

PC2

PC1PB口输出用时PC7

PC6

PC5

PC4

PC3PC2

PC1

PC02,8255A在模式2时的状态字IBFb

:B口“输入缓冲器满”标志。

INTRb:B口中断请求信号,高电平有效。/OBFaINTE1IBFaINTE2IngraINTEbIBFbINTRbC口各位:

D7

D6

D5

D4D3D2

D1

D0返回上一次A组模式2(输入、输出)

B组模式1

输出(或输入)/OBFa:A口“输出缓冲器满”标志。INTE1

:A口与输出相关的中断允许位,软件置位。IBFa

:A口“输入缓冲器满”标志。INTE2:A口与输入相关的中断允许位,软件置位。

INTRa:A口中断请求信号,高电平有效。INTEb:B口中断允许位,软件置位。返回本节目录3,8255的工作模式8255A有三种工作模式:模式0,模式1,和模式2。用户可以通过“8255A方式控制字”来设定所需的工作模式。模式0:

基本的输入/输出方式(同步数据传送);模式1:

选通输入、选通输出方式(与低速外设之间的 异步数据传送)。此时:A口、B口作为输入或输出,C口做联络线;模式2:

A口的双向选通(输入/输出)异步传送方式。转控制字同步(模式0)与异步(模式1、2)示意图接口电路接口电路打印机驱动灯开关量输入用于通用I/O方式的接口电路(同步传输方)对于低速外设使用选通方式的接口电路(异步数据传输)握手信号(1)模式0:基本的输入/输出方式--同步传送A口、B口和C口均可设定为此种模式。【例如】:设定A口和C口的高4位为模式0的输出方式(A组),B口和C口的低4位为模式0的输入方式(B组)。MOVR0,

#0C3H;控制寄存器地址送R0MOVA,#10000011B;方式控制字83H送AMOVX@R0,A;控制字83H送控制寄存器MOVR0,#0C1H;选择B口MOVXA,@R0;从8255的B口输入到AMOVR0,#0C0H;选择A口MOVX@R0,A;从A口输出累加器A的数据转控制字模式0时,CPU可以对8255A进行同步的I/O数据传送。输出时:数据可以在8255A对应的锁存器中锁存;输入时:外设I/O数据可以送到各端口得到锁存或缓冲。模式0

主要适用于快速外设或不需要CPU去等待的场合。接口电路驱动灯开关量输入例题中模式0时的电路示意图89C51P0ALECP8255PAPCH/CEPCLPBD7~D074LS373地址译码器采用与存储器统一编址的8255接口电路连接(2)模式1:选通输入、输出方式-异步查询A口、B口均可独立的设置为这种工作模式。①:A口、B口用于传送I/O数据;②:C口作为A口、B口与外设之间的联络握手信号。CPU与外设之间以“中断”或“查询”的方式进行异步

I/O数据传送。转8255逻辑图返回上一次接口电路打印机/ACK/OBFDB/OBF:对外发送的“数据好”信号/ACK:外设回答的“收到数据”信号D7D6D5D4D3D2D1D0I/OI/OIBFaINTEaINTRAPA口输入用时/OFBaINTEaI/OI/OINTRAPA口输出用时INTEbIBFbINTRbPB口输入用时INTEb/OBFbINTRbPC7

PC6

PC5PC4

PC3PC2

PC1

PC0PB口输出用时PC7

PC6

PC5PC4

PC3PC2

PC1

PC0C口各位状态字C口各位模式1模式2输入方式输出方式双向I/O方式PC7I/O/OBFa/OBFaPC6I/O/ACKa/ACKaPC5IBFaI/OIBFaPC4/STBaI/O/STBaPC3INTRAINTRAINTRAPC2STBb/ACKb由B口模式决定PC1IBFb/OBFb由B口模式决定PC0INTRbINTRb由B口模式决定模式1下C口各位引脚定义(参见245页)INTR:8255A发出的中断请求信号,经反相后送单片机。IBF:

8255A发出“输入缓冲器满”信号。/OBF:输出缓冲器满信号/STB:输入操作时,外设发出的“选通信号”,用于8255A的数据锁存用。/ACK:输出操作时,外设发出通知8255A的“已接收到数据”的应答信号。【注意】:引脚定义不同于状态字:①状态字是通过读8255的C口读入的,供CPU查询的状态;②引脚定义则是8255在模式1、2时与外部设部之间的联络线(握手信号)连接。(1)8255的模式1:选通输入方式(A口)P08031/INT0(高速)D7-D0

PAPC4PC5PC3D7-D0输入设备(低速)INTEa/STBaIBFa12转符号说明模式一时的状态字INTR

A(参见246页)1,当外设输入数据到PA口时,发送/STBa低电平选通信号;2,8255A收到/STBa上的负脉冲后作两件事:①将数据存入A口输入缓冲/锁存器中;②向外设输出“缓冲器满”的IBFa高电平信号,通知收到数据。3,8255A检测到/STBa变为高电时,若Qibfa高电平,

Qintra高电平时,将INTRa变高向CPU申请中断(Qintra可由用户对PC4进行单一置复位控制字控制,参见模式一时的状态字)。4,CPU响应中断后,从A口读取数据,并在读走数据后8255A撤掉INTRa信号,并使/STBa变低通知外设送下一个字节的数据。(2)8255的模式1:选通输出方式(B口)P08031/INT0D7-D0

PBPC1PC2PC0D7-D0输入设备INTEb/ACKbINTRb13/OBFb

2模式一时的状态字1,CPU通过MOVX

@Ri

,A

指令将数据送到B口输出锁存器,8255A收到数据后便令“输出缓冲器满”/OBFb变为低电平,通知外设准备接收。2,外设接到/OBFb的低电平后作两件事情:①从PB上取走数据;②,使/ACKb线变低,通知8255A外设已收到数据。3,8255A接收到/ACKb线变低后,就对/OBFb

,/ACKb

和Qinteb的状态进行检测,当它们皆为“1”时,INTRb变为高电平向CPU发终端申请。4,CPU响应中断后,通过中断服务程序将下一个数据送到8255A的B口,同时撤掉INTRb信号。(参照258页程序)开中断等待中断送控制字到8255数据块指针R1、计数器R2赋初值从数据块中取数到8255的A口通过PC0输出一个负脉冲/STB中断服务程序RETI修改数据指针R1从数据块中取数到8255的A口通过PC0输出一个负脉冲/STBR2-1→R2R2=0?开INT0中断关INT0中断YesNo主程序流程图中断服务程序流程图参照258页程序(3)模式2:A口的双向(输入/输出)方式只有A口具有模式2

方式。此时,PA口为双向I/O总线。1,当PA作输入口时,由/STBa和IBFa信号控制,过程同模式1的输入操作。2,当PA作输出口时,由/OBFa和/ACKa控制,工作过程同模式1的输出操作。模式2

非常适应像终端一类的外设,如键盘、显示器等设备。P08031/INT0D7-D0

PAD7-D0输入设备PC7INTE1/OBFa/ACKaIngraPC6PC4PC5PC3/STBaIBFa+INTE2返回本节目录模式2

状态字回到8255的状态字4,8255A应用举例(方式0)/RD/WRP0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE89C51D7

Q7D6

Q6D5

Q5D4

Q4D3

Q3D2

Q2D1

Q1D0

Q074LS373G/E/RD/WRRESET/CSPC口8255AA1A0PB口D7D6D5D4D3D2

PA口D1D0设8255A工作在方式0,且A口输入,B、C口输出。/CS=FF7XHA口:

FF7CHB口:FF7DH,C口:FF7EH,控制口:FF7FH程序清单ORG

0100HSTART:MOVA

,#90H;方式0,A口输入,B口、C口输出MOVDPTR,#0FF7FH;8255A控制口地址送指针MOVX

@DPTR,A

;控制字送8255A控制寄存器MOVDPTR,#0FF7C;A口地址送指针MOVXA,@DPTR;从A口输入数据到AMOVDPTR,#0FF7DH;B口地址送指针MOVMOVXA,DATA1@DPTR,A;从内存DATA1单元中取数X1到A;数据从B口输出MOVDPTR,#0FF7EH;C口地址送指针MOVA,DATA2;从内存DATA2单元中取数X2到AMOVX

@DPTR,A;数据从C口输出返回本节目录4.3.4,使用串行口扩展I/O端口在MCS-51单片机串行口的4种工作模式中模式0

(同步移位模式)可以用来实现系统并行I/O端口的扩展。使用这种方式的特点:扩展I/O端口数量可以不受限制(N*8位);扩展端口与单片机之间的连线少(2

3条);扩展口与单片机之间的数据交换时间较长;需要使用外部的“并入串出”或“串入并出”移位寄存器。MCS-51RXDTXD移位寄存器移位寄存器同步移位脉冲由MCS-51的串口与两个8位移位寄存器(74LS164)构成的16位并行输出口数据线串行口0模式特点:同步移位方式。8位数据移位,低位在先;波特率固定为fosc/12;数据由RXD(P3.0)出入,同步移位脉冲由TXD发出。与串行口模式0相关的寄存器SBUF。用来装载接收或待传送数据的缓冲器;SCON。设定工作模式,存放相关标志的串口控制寄存器。设定串口模式:00000000B00010000B模式0时发送机的控制字;模式0

时接收机的控制字。【注意】:在接收或发送前必须将对应的标志RI或TI清零!只要REN=1便开始启动接收。SM0SM1SM2RENTB8RB8TIRI使用2片74LS165构成的16位输入扩展口MCS-51P3.0P3.1P1.0H

G

F

E

D

C

B

AQH

74LS165

SINS/

L

CLKH

G

F

E

D

C

B

AQH

74LS165

SINS/

L

CLKRXDTXD16位并行I/O端口A~H:8位并行数据输入端;74LS165:并入串出移位寄存器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;将接收的数据送AMOV@R0,A;数据送内存INCR0;修改数据区指针R0CPLF0;标志取反JBF0,RCV2;接收偶次后重新置入数据DECR7;接收奇次时要再接收一帧SJMP

RCV1;转RCV1接收第二帧数据RCV2:DJNZR7,RCV0;是否完成20个字节的输入【注意】:F0的作用和程序根据F0的状态转移到RCV1、RCV0的区别。数据块指针R0、计数器R7赋初值设定串口命令启动接收MOV

A,SBUF修改数据指针从P1.0输出负脉冲锁定并行数据RI=1?NYCLRRI标志F0原始置一R7-1→R7CPL

F0NF0=1?YR7-1→R7R7=0?YN结束CC程序流程图思考题:编一个在下面的电路中读入20个字节的数据的程序MCS-51P3.0P3.1P1.0H

G

F

E

D

C

B

AQH

74LS165

SINS/

L

CLKRXDTXD使用2片74LS164构成的16位输出扩展口MCS-51P3.0P3.1P1.0QHQAA,B

74LS164/CLRCLKQA

QHA,B

74LS164/CLR

CLKRXDTXD共阳极LED数码管.

g

f

e

d

c

b

a共阳极LED数码管.

g

f

e

d

c

b

a+5V编程:利用静态数码管显示电路,显示RAM中的数据数据存RAM的20H开始的单元,以BCD码的形式存储;显示前必须利用查表程序将BCD码转换为共阳极的字符码。显示字型dp

,g,f,e,d,c,b,a字符码+VCCaaf

g

b

bcde

ced

d

fp

gdp01

1

0

0

0

0

0

0C0H11

1

1

1

1

0

0

1F9H21

0

1

0

0

1

0

0A4H31

0

1

1

0

0

0

0B0H41

0

0

1

1

0

0

199H51

0

0

1

0

0

1

092H61

0

0

0

0

0

1

082H71

1

1

1

1

0

0

0F8H81

0

0

0

0

0

0

080HORG2000HDISP:MOVR7,#02H;设置显示位数MOVR0,#20H;设置数据区指针MOVSCON,#00H;设串行口为模式0MOVDPTR,

#TABLE;设置字符表指针DISP0:MOVA

,

@R0;取数据到A;从表中取与A对应的字符到A;字符向外传送;等待传送结束;清除标志TI;指向下一个数据;未完时转DISP0继续MOVC

A,@A+DPTRMOV

SBUF,ALOOP:

JNB

TI,$CLR

TIINC

R0DJNZ

R7,DISP0RET;0,1,2,3,4的字符码;5,6,7,8,9的字符码TABLE:DB

0C0H,0F9H,0A4H,0B0H,99HDB

92H,82H,0F8H,80H,98H

END返回设定串行口工作模式取数据到AMOV

A,@R0查表:MOVC

A,@A+DPTR发送数据MOV

SBUF,A初始化:计数器R7赋初值02H数据指针R0赋20HDPTR赋表头地址CTI=1?清标志:CLR

TI修改指针INC

R0NYNR7-1→R7R7=0?Y返回C程序流程图(查寻法)采用中断的方式实现串行口的操作设定串行口工作模式开串行口中断取数据到AMOV

A,@R0查表发送数据MOV

SBUF,A初始化:R7=02H,R0=20HDPTR赋表头地址等待中断中断服务程序返回清除标志修改指针N关闭串口中断R7-1→R7R7=0?Y取数据到A

查表、发送数据ORGLJMPORGLJMP0000HSTART0023HCHUAN程序清单(中断方式)ORG2000HSTART:MOVR7,02H;设置显示位数MOVR0,#20H;设置数据区指针MOVSCON,#00H;设串行口为模式0SETBEASETBES;开串口中断MOVDPTR,

#

TABLE;设置字符表指针DISP0:MOVA

,

@R0;取数据到AMOVCA,@A+DPTR;从表中取与A对应的字符码到AMOVSBUF,A;字符向外传送SJMP$;等待中断ORG

2500HCHUAN:

CLR

TIINC

R0DJNZ

R7,DISP1CLR

ESSJMP

DISP0DISP1:MOV

A,@R0SBUF,A;清除标志TI;修改数据指针;未完时转DISP1继续;完成时关闭串口中断;转返回;未完时,取下一个数据;查表;发送MOVC

A,@A+DPTRMOVRETIDISP0:TABLEDB

0C0H,0F9H,0A4H,0B0H,99H

;0,1,

2,3,4的字符码

DB

92H,82H,0F8H,80H,98H

;5,6,7,8,9的字符码

END程序在ROM中的位置LJMP

STARTLJMPCHUANMOV

R7,02HCLR

TIRETIC0HF9H0000H0023H2000H2500HTABLE上电入口ES中断矢量入口主程序串口服务程序字符表思考题:TI=1时,单片机是如何实现中断调用的?在主程序的什么位置上产生中断调用的?中断返回时,返回到主程序的什么位置?如果想把主程序、中断服务程序和字符表三者

紧密相连(节省程序空间),程序应如何修改?将查表指令改为

MOVC A,@A+PC时,程序应如何修改?;设置显示位数;设置数据区指针;设串行口为模式0ORGSTART:

MOVMOVMOVSETBSETBDISP0:2000HR7,02HR0,#20HSCON,#00HEAESMOV A

,

@R0ADD A

,#dataMOVC

A,@A+PCMOV

SBUF,ASJMP

$;开串口中断;取数据到A;调整data=2+2;从表中取字符码到A;字符向外传送;等待中断TABLEDB

0C0H,0F9H,0A4H,0B0H,99H ;0,1,

2,3,4的字符码DB

92H,82H,0F8H,80H,98H ;5,6,7,8,9的字符码

END返回4.4:定时计数器的应用:定时计数器的四种工作模式:定时器相关的寄存器:定时器模式1电路:定时计数器的初始化:定时器方式1应用举例(一):定时器方式1应用举例(二):定时器门控位GATE的应用继续4.4.1:定时计数器的四种工作模式M1M0工作模式00模式0:13位计数器模式01模式1:16位计数器模式10模式2:8位自动重装模式11模式3:TH0、TL0和T1各自独立(3T)模式0、模式1:区别仅在于长度为13位和16位;

模式2:常用于单片机串行通讯时作“波特率”发生器。本节主要介绍模式1

的应用。返回本节目录4.4.2:定时器相关的寄存器GATEC/TM1M0GATEC/TM1M0定时/计数器1定时/计数器0TF1TR1TF0TR0IE1IT1IE0IT01,模式寄存器TMOD

(

SFR地址:

89H

注意:不能位寻址)2,控制寄存器TCON

(SFR地址:88H)T0、T1的启动TR和溢出标志TF

外部中断标志IE和触发极性选择IT返回上一次

返回本节目录4.4.3:定时器模式1电路TL1TH1震荡器1/12(8位)(8位)TF1中断控制T1

引脚TR1GATEINT1C/T=0C/T=1返回本节目录4.4.4:定时计数器的初始化(一)初始化的步骤:1,根据需要,设定工作方式(C/T位)计数或定时;2,确定初值TC;3,若采用中断方式,则要设置相应的中断参数、优先级别;4,送命令字,启动

温馨提示

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

评论

0/150

提交评论