1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,#,5.1 51,系统扩展原理,一、大系统的扩展总线和扩展原理,1,何,谓大系统,大系统,P0,、,P2,口第二功能,需要扩展外部,ROM,、,RAM,、,I/O,的系统。,此时,P0,口作,AD0,AD7,、,P2,口作,A8,A15,、,P3.6,作,/WR,、,P3.7,作,/RD,,以上口线不能作为第一功能去连接外部设备。涉及的控制信号还有,/PSEN,、,ALE,。,DPTR,、,R0,、,R1,可以作为访问外部,RAM/IO,的地址指针。,2,大系统总线时序,3,大系统扩展总线,4,大系统地址译码方
2、法,线选法,利用某一位地址线作为选片线,连接芯片的,/CS,、,/CE,。,注意:在地址译码中,不用地址信号默认填,“,1,”,。,如:,0#,芯片,7FF8H,7FFFH,,,2#,芯片,DFFCH,7FFFH,地址译码法,利用门电路或地址译码器进行,常用三,八译码器,74HC138,等芯片。实际使用时常常将线选法和地址译码法结合起来使用。,二、紧凑系统的扩展总线和扩展原理,1,何谓紧凑系统和小系统,紧凑系统,使用,P0,口第二功能,只扩展少量外部,RAM,和外部,I/O,的系统。,此时,P0,口作,AD0,AD7,、,P3.6,作,/WR,、,P3.7,作,/RD,,以上口线不能作为第一功
3、能去连接外部设备。涉及的控制信号还有,ALE,。只能用,R0,、,R1,作为访问外部,RAM/IO,的地址指针。,小系统,不使用,P0,、,P2,口的系统。,2.,紧凑系统的扩展总线,3.,紧凑系统地址译码方法,线选法,适用只扩展少量,I/O,场合。一般,I/O,芯片内部工作寄存器不多于,8,个,所以可把,A0,A2,作为工作寄存器地址选择线,,A3,A7,作为芯片选择线,这样可扩展,5,个,I/O,芯片。,地址译码法,若,A0,A4,用于,I/O,寄存器选择,,A5,A7,用三,八译码器,74HC138,输出芯片片选信号,这样可扩展,8,个,I/O,芯片。,P2,部分口线作为地址线的译码方法
4、,可用于扩展,256,字节,RAM,和,I/O,的系统。以下:,P2.1,为低电平、,P2.0,为高电平时,,/CS0,有效。,P2.0,为低电平、,P2.1,为高电平时,,/CS1,有效。,P2.1,、,P2.0,均为高电平时,根据,A6,、,A7,输出,,/CS2,、,/CS3,、,/CS4,、,/CS5,分别有效,。,三、海量存贮器系统地址译码方法,三、海量存贮器系统地址译码方法,62128,为,128KB,的,RAM,P1.1,为低电平、,P1.0,为低电平时,选中,62128,的低,64KB,;,P1.1,为低电平、,P1.0,为高电平时,选中,62128,的高,64KB,;,P1.
5、1,为高电平、,P1.0,为低电平时,选中外部,I/O(,可接,8,个,),;,P1.1,、,P1.0,均为高电平时,外部,RAM,、外部,I/O,均不工作。,5.2,程序存储器的扩展,一、常用,EPROM,芯片,常用,27128(16KB),、,27256(32KB),、,27512(64KB),1,引脚说明,A0,Ai,:地址输入线,,i=13,15,;,O0,O7,:三态数据线,即,D0,D7,;,/CE,:片选信号输入线;,/PGM,:编程脉冲输入线;,/OE,:读选通信号输入线,与,CPU,的,/PSEN,相连;,Vpp,:编程电源输入线,电源值因芯片而异;,Vcc,5V,、,GND
6、,0V,。,2.,操作方式,二、程序存贮器扩展方法,89C52,寻址范围,64K,,扩展地址总线为,16,根。,27C512,容量,64KB,,需要地址线,16,根,所以,27C512,的,/CE,必须接地。,CPU,的,/EA,接,5V,,意味着,CPU,在取指令或执行查表指令时,,地址小于,1FFFH,时从内部,FLASH,中取代码,大于,1FFFH,时从外部,EPROM,中取代码。,为程序保密,程序代码尽可能放在内部,FLASH,中,常数存放在外部,EPROM,中。,对,89C52,编程时不要对,LB3,位编程,以允许,CPU,读取,EPROM,中的代码。,5.3,数据存储器的扩展,一、
7、常用,RAM,芯片,常用,6116(2KB),、,6264(8KB),、,62256(32KB),1,引脚说明,A0,Ai,:地址输入线,,i=10,(,6116,)、,12,(,6264,)、,14,(,62256,);,O0,O7,:三态数据线,即,D0,D7,;,/CE,:片选信号输入线;,/OE,:读选通信号输入线,与,CPU,的,/RD,(,P3.7,)相连;,/WE,:写选通信号输入线,与,CPU,的,/WR,(,P3.6,)相连;,Vpp,:编程电源输入线,电源值因芯片而异;,Vcc,5V,、,GND,0V,。,二、,RAM,芯片扩展方法,左图中,,62256,地址线,15,根,
8、其,/CE,接,CPU,的,A15,,所以其地址范围为,0,7FFFH,。,如需扩展,I/O,,可用,74HC138,按右图连接,,I/O,地址被设定在,8000H,0FFFFH,之间。,三、,RAM,芯片数据读写方法,例,1,:清零外部,RAM2100H,21FFH,这,256,个单元的子程序。,用,R0,作指针,INRAMR0,:,MOV,P2,21H,MOV,R0,,,0,CLR,A,INRR,:,MOVX,R0,,,A,INC,R0,CJNE,R0,,,0,,,INRR,RET,用,DPTR,作指针,INRAMDP,:,MOV,DPTR,2100H,MOV,R7,,,0,CLR,A,I
9、NRD,:,MOVX,DPTR,,,A,INC,DPTR,DJNZ,R7,,,INRD,RET,例,2,:将外部,RAM2110H,2100H,的内容送入,2200H,2210H,的子程序。,IORAM,:,MOV DPTR,,,#2110H,MOV P2,,,#22H,MOV R1,,,#00H,MOV R7,,,#16,IORAM1,:,MOVX A,,,DPTR,MOVX R1,,,A,DEC DPL,;注意无,DEC DPTR,指令,,;同时注意,DPL,的范围。,INC R1,DJNZ R7,,,IORAM1,RET,5.4,并行接口芯片,8255,的扩展,一、结构和引脚,与,CPU
10、,连接的主要信号:,D7,D0,:,双向三态数据线。,A0,、,A1,:,地址线,/RD,:,读选通信号。,/WR,:,写选通信号。,/CS,:,片选信号。,RESET,:,复位信号。复位后,,A,、,B,、,C,口均为输入方式。,二、操作方式,8255A,共有三种工作方式,即方式,0,、方式,1,和方式,2,。,1.,方式,0,基本,I/O,方式,方式,0,适合于无条件数据传送,可供使用的是两个,8,位口(,A,口和,B,口)及两个,4,位口(,C,口高位部分和低位部分)。,2.,方式,1,选通,I,/,O,方式,方式,1,下,,A,口和,B,口分别用于数据的输入,/,输出。而,C,口则作为
11、数据传送的联络信号。,3.,方式,2,双向数据传送方式,只有,A,口才能选择这种工作方式,这时,A,口既能输入数据又能输出数据。在这种方式下需使用,C,口的五位口线作控制线。方式,2,适用于查询或中断方式的双向数据传送。,A,口方式,2,下,,B,口仍可使用方式,0,或方式,1,。,方式,1,、,2,下的,PC,口各位线的用途,方式,1,输入时的状态控制信号,/STBA,、,/STBB,:,设备选通信号输入线,,STB,下降沿将端口数据线上信息打入端口锁存器。,IBFA,、,IBFB,:,端口锁存器满空标志输出线,与设备相连。,IBF,高电平,(,满,),表示设备已将数据打入端口锁存器,但,C
12、PU,尚未读取。,CPU,读取端口数据后,,IBF,变低电平,(,空,),。,INTRA,、,INTRB,:,中断请求信号。,INTEA,、,INTEB,:,端口内部中断允许触发器。只有当,INTE,为高电平时才允许端口中断。,INTEA,、,INTEB,分别由,PC4,、,PC2,置位,/,复位控制。,方式,1,输出时的状态控制信号,/ACKA,、,/ACKB,:,设备响应信号输入线。,/ACK,上出现设备送来的负脉冲,表示设备已取走了端口数据。,/OBFA,、,/OBFB,:,输出锁存器满空标志输出线。,/OBF,低电平,(,满,),表示,CPU,已将数据写入端口,输出数据有效。设备从端口
13、取走数据后发来的响应信号使,/OBF,变高电平,(,空,),。,INTRA,、,INTRB,:,中断请求信号。,INTEA,、,INTEB,:,端口内部中断允许触发器。只有当,INTE,为高电平时才允许端口中断。,INTEA,、,INTEB,分别由,PC6,、,PC2,置位,/,复位控制。,A,口方式,2,的状态控制信号综合了,A,口方式,1,的输入、输出状态控制信号,三、控制字,1.,方式控制字,注意:控制字、命令字的任意位、未用位默认填,“,0,”,2.P,C,口位置位,/,复位控制字,例,1,:方式,0,应用:键盘输入状态的,LED,显示,芯片,PA,端口地址为,7FFCH,,,PB,端
14、口地址为,7FFDH,,,PC,端口地址为,7FFEH,,控制寄存器地址为,7FFFH,。,四、接口技术与编程,ORG 0000H,AJMPAICO,ORG 0030H,AICO,:,MOV A,,,#90H,;,方式,0,,,PA,输入、,PC,输出,MOV DPTR,,,#7FFFH,;,控制字地址,DPTR,MOVX DPTR,,,A,;,写控制字,A1,:,MOV DPTR,,,#7FFCH,;,A,口地址,DPTR,MOVX A,,,DPTR,;,接收,A,口数据,MOV DPTR,,,#7FFEH,;,C,口地址,DPTR,MOVX DPTR,,,A,;,接收的数据从,C,口输出,
15、SJMP A1 END,例,2,:方式,1,应用,若,PA,为方式,1,输入,,PB,为方式,1,输出,允许,PA,、,PB,中断,初始化程序如下:,IAOB,:,MOV R0,,,#7FH,;,指向控制字地址,MOV A,,,#0B4H,;,控制字,MOVX R0,,,A,MOV A,,,#09H,;,PA,置位,/,复位字,MOVX R0,,,A,;,1INTEA(PC4),MOV A,,,#05H,;,PB,置位,/,复位字,MOVX R0,,,A,;,1INTEB(PC2),RET,置位,/,复位字:,PA,为方式,1,输出为,0DH,,,即,1INTEA(PC6),;,PB,为方式,
16、1,输入、输出相同。,5.5 RAM/IO,芯片,8155,的扩展,功能:,256BRAM,,,2,个,8,位并行口,,1,个,6,位并行口,,1,个,14,位定时,/,计数器。,内有地址锁存器。,一、结构和引脚,与,CPU,连接的主要信号:,AD7,AD0,:,地址数据复用线。,ALE,:,地址锁存信号。内部包含地址锁存器,/RD,:,读选通信号。,/WR,:,写选通信号。,/CE,:,片选信号。,IO/M,:,I/O,与片内,RAM,选择信号。,8155,内部的,I/O,口与,RAM,是分开编址的,要使用控制信号进行区分。,RESET,:,复位信号。,8155,以,600ns,的正脉冲进行
17、复位。复位后,A,、,B,、,C,口均为输入方式。,二、内部寄存器及其操作,内部有,6,个,I/O,寄存器,三、命令字和状态字,1.,命令字,(,只写不读,),I/O,工作方式:基本、选通两种。,I/O,选通方式联络信号线由,PC0,PC5,完成,其中:,PC0(INTRA),、,PC3(INTRB),:,中断请求线,PC1(BFA),、,PC4(BFB),:,端口锁存器满空标志输出线,(,相当,8255,相应的,IBF,、,OBF,信号线,),PC2(/STBA),、,PC5(/STBB),:,输入时是设备选通信号输入线,(,相当,8255,相应的,/STB,信号线,),输出时是设备响应信号
18、输入线,(,相当,8255,相应的,/ACK,信号线,),从以上命令字可知:,PA,和,PB,都是,8,位通用,I/O,口,可有基本,I/O,、选通,I/O,两种工作方式。,PC,口为,6,位口,它既可以作为数据口用于数据的基本方式,I/O,传送,也可以用于传送控制信号和状态信号,对,PA,和,PB,的,I/O,操作进行控制。,PC,口具有,4,种工作组态,,即数据输入组态、数据输出组态、,PA,口控制端口组态和,PA,和,PB,口控制端口组态。,命令字,D3,、,D2,位确定的,PA,、,PB,、,PC,各口组态,2.,状态字,(,只读不写,),除,TIMER,外,各状态位与引脚状态或中断允
19、许位状态有关。定时器,/,计数器不设中断允许位。,四、定时器,/,计数器,是,14,位减法计数器,计数初值在,2,3FFFH,之间,工作方式,4,种,最高计数频率,4MHZ,。,计数初值、工作方式存放在定时器高、低寄存器中,初始化时,应先对定时器高、低字节寄存器编程,设置方式和计数初值,再对命令寄存器编程,使其,D7D6=11,,启动,/,计数器工作。,停止计数的方式:命令寄存器的,D7D6=01,,立即停止计数。,D7D6=10,,待计数溢出后停止计数。,TI,输入时钟数的获取:,停止计数。,读计数器高、低字节并取低,14,位计数信息。,当前计数值计算:,当前计数值,=14,位值,(,为偶数
20、,)/2,当前计数值,=(14,位值,(,为奇数,)+,计数初值,)/2,时钟数获取:,时钟数,=,计数初值当前计数值,五、接口方法,8155,可以直接与,51,单片机接口,通常用于紧凑系统中。,例,1,:,8155,与,89C52,形成的一个紧凑系统见右图,其中,/CE,接地。,若要使,8155,的,TO,输出方波,频率是,TI,输入的,24,分频,,PA,、,PB,为输出口,,PC,为输入口,初始化程序如下。,I8155,:,SETB P2.0,MOV R0,,,#4,;,准备写,T,低字节寄存器,MOV A,,,#16H,;,计数初值,24,MOVX R0,,,A,INC R0,;,准备
21、写,T,高字节寄存器,MOV A,,,#40H,;,设置方式,1(,方波,),MOVX R0,,,A,MOV R0,,,#0,;,准备写命令寄存器,MOV A,,,#0C3H,;,启动定时器,,PA,、,PB,MOVX R0,,,A,;,为输出口,,PC,为输入口,RET,例,2,:键盘输入状态的,LED,显示,ORG0000H,AJMPMAIN,ORG0030H,MAIN,:,MOV DPTR,,,#7F00H,;,指向命令字端口,MOVA,,,#02H,;,A,口为输入,,;,B,口、,C,口为输出,MOVXDPTR,,,A,;,送命令字,M1,:,MOVDPTR,,,#7F01H,;,指
22、向,A,口地址,MOVXA,,,DPTR,;,读入,A,口数据,INCDPTR,;,指向,B,口地址,MOVXDPTR,,,A,;,数据送入,B,口,AJMPM1,END,5.6,简单并行,I/O,接口的扩展,扩展并行,I/O,接口所用的芯片主要有可编程,I/O,芯片,(,如,8155,、,8255),和通用,TTL,、,CMOS,锁存器、三态门电路芯片两大类。,简单并行,I/O,输入接口的扩展:,主要采用,TTL,、,CMOS,的三态缓冲器芯片,如,74LS,、,HC,系列的,240(2,组,4,位、单向、反相,),、,244(2,组,4,位、单向、同相,),、,245(1,组,8,位、双向
23、、同相,),等。,简单并行,I/O,输出接口的扩展:,主要采用,TTL,、,CMOS,的,8D,触发器、锁存器芯片,如,74LS,、,HC,系列的,273,、,373,、,377,等,下图是采用,74LS244,做扩展输入、,74LS273,做扩展输出的简单,I/O,扩展电路。,程序如下:,ORG 0000H,AJMP MAIN,ORG 0030H,MAIN,:,MOV DPTR,,,#0FEFFH,;,数据指针指向,I/O,口地址,MOVX A,,,DPTR,;,从,244,读入数据,检测按键,MOVX DPTR,,,A,;,向,273,输出数据,驱动,LED,AJMP,MAIN,END,6
24、.7 51,系列单片机基本,I/O,口应用总结,P0,口是真正的双向口,作基本,(,第一功能,)I/O,使用时需要接上拉电阻,(,一般,10k),,,P1,P3,口是准双向口,内部具有上拉电阻。,P0,P3,口作基本,(,第一功能,)I/O,的输入引脚使用时,有关的口锁存器内容必须始终保持“,1”,的状态,否则有可能产生输出竞争现象,造成器件的永久性损坏。,CPU,复位情况下,,P0,P3,口锁存器内容均为“,0FFH”,,所有引脚呈输入状态。,P0,、,P2,、,P3,口作第二功能使用时,相关口锁存器内容也必须始终保持“,1”,的状态。,注意对,P0,P3,口的写操作永远是写口锁存器内容,读
25、操作有读口锁存器内容和读引脚状态之分。一般情况下,两个操作数的逻辑运算和一个操作数的,INC,、,DEC,指令是读口锁存器内容,其他指令基本上是读引脚状态的。,写指令,如:,MOV P1,,,#00H,ANL P2,,,Rn,INC P3,MOV P1.1,,,C,读口锁存器指令,如:,DEC P0,;先读后减,1,ORL A,,,P2,读引脚状态指令,如:,MOV A,,,P1,MOV C,,,P2.0,例:基本,I/O,应用:下图从,P1.0,P1.3,输入开关状态,再经,P1.4,P1.7,输出去驱动发光二极管,使发光二极管显示开关的状态。试设计相应子程序。,(,图中上拉电阻对,P1,口不需要,,P0,口必须加,),程序如下:,ORG 0000H,AJMP MAIN,ORG 0030H,MAIN,:,MOV A,,,#FFH,;,高,4,位为“,1”,准备熄灭发,光二极管,低,4,位为“,1”,相应管脚呈输入状态,MOV P1,,,A,;,M_1,:,MOV A,,,P1,;,读入开关状态,SWAP A,;,A,高低半字节交换,ORL A,,,#0FH,;,保持低,4,位为输入状态,MOV P1,,,A,;,开关状态输出,AJMP M_1,RET,