单片机原理及接口技术-基于C51 Proteus仿真(第二版)课件 第6、7章 80C51单片机定时器计数器最终;单片机系统的并行扩展_第1页
单片机原理及接口技术-基于C51 Proteus仿真(第二版)课件 第6、7章 80C51单片机定时器计数器最终;单片机系统的并行扩展_第2页
单片机原理及接口技术-基于C51 Proteus仿真(第二版)课件 第6、7章 80C51单片机定时器计数器最终;单片机系统的并行扩展_第3页
单片机原理及接口技术-基于C51 Proteus仿真(第二版)课件 第6、7章 80C51单片机定时器计数器最终;单片机系统的并行扩展_第4页
单片机原理及接口技术-基于C51 Proteus仿真(第二版)课件 第6、7章 80C51单片机定时器计数器最终;单片机系统的并行扩展_第5页
已阅读5页,还剩120页未读 继续免费阅读

下载本文档

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

文档简介

第6章80C51单片机定时器/计数器

126.1定时器/计数器T0和T1的结构及工作原理6.1.1定时器/计数器T0和T1的基本结构6.1.280C51单片机定时器/计数器的工作原理6.2定时器/计数器T0和T1的控制寄存器6.3定时器/计数器的工作方式6.4定时器/计数器T0、T1的应用3第6章80C51单片机定时器/计数器在工业测控应用中,经常需要产生精确的定时或者延时控制,如果采用软件定时,则需要占用CPU运行时间,降低单片机工作效率;许多场合还要用到对外部事件计数的功能。MCS-51系列中51子系列单片机片内集成2个16位可编程控制的定时器/计数器T0和T1,52子系列片内集成3个,第3个是定时器T2。T0、T1是MCS-51单片机的片内功能部件,它们既可用作定时器方式,又可用作计数器方式。本章主要介绍80C51单片机定时器/计数器T0和T1的结构、工作原理及应用。6.1定时器/计数器T0和T1的结构及工作原理只有掌握T0和T1的结构及工作原理,才能熟练使用MCS-51系列单片机片内的定时器和计数器。6.1.1定时器/计数器T0和T1的结构80C51单片机定时器/计数器T0、T1的结构如图6-1所示,T0、T1是2个16位加法计数器,T0由TH0和TL02个SFR组成加计4数单元,T1由TH1和TL12个SFR组成加计数单元。TH1、TL1、TH0、TL0只能按照字节访问。对T0、T1定时或计数的模式、工作方式选择以及控制是由2个SFRTCON和TMOD的设置确定的。TMOD、TCON与T0计数单元TH0和TL0、T1计数单元TH1和TL1间通过内部总线及逻辑电路连接,TMOD用于控制定时器的模式和工作方式,TCON用于控制定时器的启动与停止。一旦设置好T0(或T1)的工作方式并启动,T0(或T1)就开始独立工作,不占CPU操作时间,当加计数器计满置位TF0(或TF1)。CPU可通过软件主动查询是否定时时间到或计数满时,也可以选择定时中断。5图6-180C51定时器/计数器的基本结构6.1.280C51单片机定时器/计数器的工作原理定时/计数器T0、T1都可以独立设定为定时模式或者计数模式,定时和计数的实质都是加计数器,区别在于计数信号来源不同。6

1.定时器的原理T0(或T1)用作定时器时,是对内部机器周期Tcy的加计数器。即每个机器周期TH0、TL0(或TH1、TL1)计数器在初值的基础上加1,计满溢出时,置位TF0(或TF1),也可以选择产生中断请求。因此,一个N位的加1计数器,从初值a开始每个机器周期加1计数,直至溢出,定时时间T为:

上式中,Tcy为机器周期,a为计数初值,N是由定时方式决定的,当T0、T1工作在方式0、1和2时,N取值分别为13、16和8。【例6-1】设单片机晶振频率为24MHz,T0、T1工作在方式0、1、2,最大定时时间各为多少?在初值为0时,有最大的定时时间。7

所以T0(或T1)在工作方式0下,其最大定时时间为

同样可以求得方式1下的最大定时时间为32.768ms;方式2下的最大定时时间为0.128ms。

2.计数器的原理T0(或T1)用作计数器时,是对P3.4引脚(或P3.5)输入的外部脉冲的加计数器,每输入一个外部脉冲(每当外部脉冲产生负跳变),TH0、TL0(或TH1、TL1)计数器在初值a基础上加1,计满溢出时置位TF0(或TF1),也可以选择产生中断请求。因此,一个N位的加计数器,从初值a开始每来一个外部脉冲加1计数,直至溢出,计数总个数C为:8

上式中,a为计数初值,N是由计数方式决定的,当T0、T1工作在方式0、1和2时,N取值分别为13、16和8。由于单片机需要两个机器周期来识别一个从“1”到“0”的跳变,因此外部计数脉冲的最高计数频率为晶振频率的1/24。【例6-2】单片机T0、T1工作在计数器各种方式下,计数范围各为多少。由于初值a取值从0~2N-1。T0、T1工作在计数器方式0下,N=13,计数范围是:1~8192(213)。在工作方式1下,N=16,计数范围是:1~65536(216)。在工作方式2下,N=8,计数范围是:1~256(28)。

3.对T0和T1的主要特性总结如下:(1)T0和T1可以通过编程选择定时模式或者计数模式,定时和计数的区别是:定时是对内部机器周期计数实现的,而计数是对外部信号计数实现。9

(2)T0和T1均可通过编程设定多种工作方式,其中T0有4种工作方式;T1有3种工作方式,T2有3种工作方式。(3)T0和T1定时时间到或计数满时,都会使计数器溢出,从而置位相应的溢出位,是否定时到或计数满可通过查询或中断方式处理。6.2T0和T1的控制寄存器对T0和T1的控制主要通过设置TMOD和TCON这2个SFR。TMOD用来确定T0和T1的工作模式及工作方式,TCON用来设定和表征T0和T1的工作过程。

1.定时器/计数器方式寄存器TMODTMOD字节地址为89H,其格式如表6-1所示。TMOD的8位分为2组,2组含义相同,高4位为T1的控制字段,低4位为T0的控制字段。10

(1)M1位和M0位M1和M0为工作方式控制位,其含义如表6-2所示(其中i=0,1)。

表6-2定时器工作方式控制位11

(2)C/位定时与计数的模式选择位。C/=0时,设置为定时器模式;C/=1时,设置为计数器模式。(3)门控位GATE当GATE=0时,仅控制位TR0(或TR1)置1可启动T0(或T1)。仅TR0(或TR1)清0可停止T0(或T1)工作。当GATE=1时,控制位TR0(或TR1)置1,同时还需(或)引脚为高电平方可启动定时器,即允许外部硬件通过P3.2(或P3.3)控制T0(或T1)启动。TMOD不能位寻址,只能用字节指令设置一次设置8位。复位时,TMOD=00H。例如:要求T1非门控,定时模式,工作方式1;语句为:TMOD=0x10;

2.定时器/计数器控制寄存器TCONTCON的字节地址为88H,可以位寻址,清溢出标志位或启动定时器都可以用位操作指令。TCON的格式如表6-3所示,12TCON低4位用于控制外部中断,在第5章中已介绍,TCON高4位的功能是控制T0(或T1)的启动、停止以及标志T0(或T1)的溢出。当系统复位时,TCON=0x00。低4位含义如下。

(1)T1溢出标志位TFl当T1计满数溢出时,由硬件自动置TF1=1,向CPU发出T1中断请求,在中断允许时响应。进入中断服务程序后,由硬件自动使TF1=0。当中断屏蔽时,TF1可由软件查询,此时只能由指令清0(编写TF1=0语句)。(2)T1运行控制位TR1TR1=0时,关闭T1;13

TR1=1时,分2种情况:当GATE=0时,则启动T1;当GATE=l时,则引脚为高电平,才可以启动Tl。(3)T0溢出标志位TF0其功能及操作情况同TF1。(4)T0运行控制位TR0其功能及操作情况同TR1。6.3定时器/计数器的工作方式80C51片内T0、T1可以通过对特殊功能寄存器TMOD中M1、M0两位的设置来选择工作方式,其中T0有方式0、1、2和3等4种工作方式;T1有方式0、1和2共3种工作方式。1.工作方式0当M1、M0设置为00时,T0(或T1)工作在方式0。T0方式0的逻辑图如图6-2所示。14

(1)计数器单元在方式0下,16位计数器单元只用了13位,由TH0的8位和TL0的低5位组成一个13位计数器,TL0(或TL1)的高3位未用,方式0计数器单元如图6-3所示,当TL0(TL1)的低5位溢出时,会向TH0(TH1)进位,当13位计数器加1到全“1”后,再加1就溢出。这时,置TCON的溢出标志位TF0(TF1)为1,同时把13位TH0和TL0(或TH1和TL1)变为全“0”。图6-2T0方式0逻辑图15图6-3T0和T1方式0计数器单元

(2)定时/计数模式控制位C/①C/=0:为定时器工作模式,对内部机器周期信号计数;②C/=1:为计数器工作模式,对P3.4(或P3.5)引脚外部输入脉冲负跳变计数。(3)定时/计数运行控制位GATEGATE位决定了T0(或T1)的运行取决于软件控制还是硬件-软件共同控制。GATE=0时,当TR0/TR1=1,13位计数器就开始计数;当TR0/TR1=0,T0(或T1)关闭。16图6-4T0方式1逻辑图17

3.工作方式2当M1、M0设置为10时,T0(或T1)工作在方式2。T0方式2的逻辑图如图6-5所示。方式2把TL0(TL1)配置成一个可以自动恢复初值(初始常数自动重新装入)的8位计数器,TH0(TH1)作为常数缓冲器,由软件预置值;当TL0(TL1)溢出时,一方面使溢出标志TF0(TR1)置1,同时把TH0(TH1)中的8位数据重新装入TL0(TL1)中。图6-5T0方式2逻辑图218

在实际应用中,工作方式0和工作方式1在定时时间到或者计数满产生溢出时,计数单元清0,如果想循环定时或者循环计数就需要频繁重新给计数单元装初值,这不但影响定时/计数,也给程序设计带来麻烦。方式2常用于循环精确地定时/计数控制。例如,80C51单片机晶振频率为12MHz,希望每隔200s产生一个定时控制脉冲,可在定时方式2下,把TH0和TL0同时预置为56实现。方式2还用作串行口波特率发生器。

4.工作方式3方式3只适用于T0。方式3使80C51具有3个定时器/计数器(增加了一个附加的8位定时器/计数器)。(1)T0工作在方式319(a)TL0作为8位定时器/计数器图6-6定时器/计数器T0工作方式320

(2)T0工作在方式3下的T1通常,当T1用作串口波特率发生器时,T0才定义为方式3,以增加一个8位计数器。T0工作在方式3时,TH0使用了T1的中断标志位(TF1),这时T1还可以设置为方式0~2,用于任何不需要中断控制的场合,或用作串行口的波特率发生器。①T1工作在方式0T1工作在方式0,作为波特率发生器,需要设置M1、M0=00,工作示意图如图6-7所示。图6-7T0工作在方式3下T1工作在方式0工作示意图21

②T1工作在方式1T1工作在方式1,作为波特率发生器,需要设置M1、M0=01,工作示意图如图6-8所示。图6-8T0工作在方式3下T1工作在方式1工作示意图

③T1工作在方式2T1工作在方式2,由于方式2可循环计数或定时,不需要重置计数初值,在波特率产生器中常用。需要设置M1、M0=10,工作示意图如图6-9所示。22图6-9T0方式3时T1为方式2时工作示意图6.4定时器/计数器T0、T1的应用本节介绍T0、T1的初始化设计及编程应用。

1.T0和T1的初始化由于T0和T1的功能实现是由软件编程确定的,所以使用前首先要初始化,步骤如下。(1)确定工作模式与工作方式,为TMOD赋值。(2)确定计数器单元初值,为T0计数单元TH0、TL0(或T1计数单元TH1、TL1)预置初值。2324

(4)给TCON送命令字,以启动或禁止定时器/计数器的运行。(5)确定定时时间到或计数满,以便进行相应的处理。若用查询方式则不需要第3步,可查询溢出标志位TF0(或TF1),溢出标志为1,则进行相应处理;若用中断方式处理,设置IE、TR0(TR1)后,一旦TF0(或TF1)标志为1,则自动转向中断服务程序。

2.T0、T1的编程应用【例6-5】T0和T1作为计数器的应用电路如图6-10所示,外部计数输入端T0(P3.2)接一按钮开关K1,外部计数输入端T1(P3.3)接信号源,P1.7引脚接一LED灯。要求:按下开关K1开始对信号源计数,当计满10个脉冲时,LED闪烁10次,T0、T1都采用中断方式。25图6-102个计数器的使用26

(1)确定TMODT0、T1都计数,T0计数1次,选择用方式1;T1计数10次选择方式1,都选择非门控。所以TMOD=0x55。(2)确定计数初值T0计数1次,方式1,计数初值为65535=0xFFFF,TH0=0xFF;TL0=0xFF,T1计数10次,选择方式1,初值为65536-10=65526=0xFFF6,TH1=0xFF;TL1=0xF6。(3)设置IE、IP由于T0、T1均采用中断方式,不设置优先级。IE=0x8A,IP=0;(4)启动T0、T1T0启动在主程序中,T1启动在T0的中断服务程序中。参考程序如下:#include<reg51.h>#defineucharunsignedcharsbitP1_7=P1^7;27voidDelay(unsignedintx)//延时1ms函数{ucharj;while(x--){for(j=0;j<125;j++);}}voidmain(){TMOD=0x55;TH0=0xFF;TL0=0xFF;TH1=0xFF;TL1=0xF6;IE=0x8A;TR0=1;P1_7=1;28while(1);}voidc0(void)interrupt1//T0中断服务程序{TR0=0;TR1=1;}voidc1(void)interrupt3//T1中断服务程序{uchari;for(i=0;i<10;i++){P1_7=0;Delay(500);P1_7=1;Delay(500);}TR1=0;}29

在实际应用中,经常用T0、T1产生精确的周期性波形。利用T0、T1产生周期性波形的思想是:利用T0、T1定时,定时时间到对输出端作相应的处理。如产生方波可在定时时间到对输出端取反。例6-6】电路如图6-11所示,设80C51晶振频率为12MHz,用T1编程实现从P1.7引脚输出频率为2kHz的音频信号。分析:从P1.7引脚输出频率为2kHz的超声波,即周期为500us的方波,可定时250us,定时时间到时,让P1.7取反一次。T1可分别工作于方式0、方式1、方式2,可分别采用查询和中断方式实现。当晶振频率为12MHz,机器周期为1us。30图6-11定时器T1产生超声波31

(1)T1采用方式0、中断方式处理方式控制字应设定为00000000B(0x00)。定时250μs,初值X=8192-250/1=7942=0x1F06,则TH1=0xF8,TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x00;TH1=0xF8;TL1=0x06;EA=1;ET1=1;TR1=1;while(1);}32voidti1(void)interrupt3//中断服务程序{TH1=0xF8;TL1=0x06;P1_7=!P1_7;}

仿真时,用鼠标右键单击虚拟数字示波器,在菜单中选择“DigitalOscilloscope”选项,调整时间旋钮在合适位置,会看到P1.7引脚输出给A通道的频率为2kHz的音频信号,如图6-12所示。33图6-12频率为2kHz的音频信号34

(2)T1采用方式1、中断方式处理方式控制字应设定为00010000B(0x10)。定时250μs,初值X=65536-250/1=65286=FF06,则TH1=0xFF,TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x10;TH1=0xFF;TL1=0x06;EA=1;ET1=1;TR1=1;while(1);}35voidti1(void)interrupt3//中断服务程序{TH1=0xFF;TL1=0x06;P1_7=!P1_7;}(3)T1采用方式2、中断方式处理方式控制字应设定为00100000B(0x20)。定时250μs,初值X=256-250/1=06,则TH1=TL1=0x06。参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){TMOD=0x20;TH1=0x06;TL1=0x06;EA=1;36ET1=1;TR1=1;while(1);}voidti0(void)interrupt3//中断服务程序{P1_7=!P1_7;}(4)T1采用方式2、查询方式处理参考程序:#include<reg51.h>//包含特殊功能寄存器库sbitP1_7=P1^7;voidmain(){chari;TMOD=0x20;37TH0=0x06;TL0=0x06;TR1=1;for(;;){if(TF1){TF1=0;P1_7=!P1_7;}//查询计数溢出}}若需要定时器定时时间超过定时器最大值时,即方式1时的216个机器周期时,用一个定时器直接处理不能实现,可用两个定时器级联或一个定时器配合软件计数方式处理。【例6-7】电路如图6-13所示,设晶振频率为12MHz,定时控制P1口连接的8只LED自上而下点亮的跑马灯,每只灯点亮0.5s。每只灯点亮0.5s,这时应产生500ms的周期性的定时,定时时间到时点亮下一盏灯。可用T0产生10ms定时,然后对10ms计数50次或用T1对10ms计数50次实现。38

晶振频率12MHz,T0定时10ms,可选方式1,则TMOD=00000001B(0x01),初值X:X=65536-10000/1=55536=1101100011110000B则TH0=11011000B=0xD8,TL0=11110000B=0xF0。图6-13定时控制P1口连接的8只LED跑马灯39

(1)T0定时10ms、软件计数50次,中断处理方式。参考程序:#include<reg51.h>//包含特殊功能寄存器库#include<intrins.h>#defineucharunsignedcharuchari;voidmain(){TMOD=0x01;TH0=0xD8;TL0=0xF0;EA=1;ET0=1;i=0;TR0=1;P1=0xFE;40while(1);}voidtime0_int(void)interrupt1//T0中断服务程序{TH0=0xD8;TL0=0xF0;i++;if(i==50){P1=_crol_(P1,1);i=0;}}

(2)T0定时10ms、T1计数25次,T0和T1都采用中断方式工作。由于T1工作于计数方式时,计数脉冲通过T1(P3.5)输入,设定时器T0定时10ms时间到,对T1(P3.5)取反一次,则T141(P3.5)每20ms产生一个计数脉冲。定时500ms需要T1计数25次。T0工作于方式1,定时10ms,则TH0=11011000B=0xD8,TL0=11110000B=0xF0。设计数器T1工作于方式2,初值X=256-25=231=0xE7,TH1=TL1=0xE7。方式控制字TMOD=01100001B=0x61。参考程序如下:#include<reg51.h>#include<intrins.h>#defineucharunsignedcharsbitP3_5=P3^5;voidmain(){TMOD=0x61;TH0=0xD8;TL0=0xF0;42TH1=0xE7;TL1=0xE7;EA=1;ET0=1;ET1=1;TR0=1;TR1=1;P1=0xFE;while(1);}voidtime0_int(void)interrupt1//T0中断服务程序{TH0=0xD8;TL0=0xF0;P3_5=!P3_5;}43voidtime1_int(void)interrupt3//T1中断服务程序{P1=_crol_(P1,1);}【例6-8】利用门控位GATE测量正脉冲信号的宽度。模式控制寄存器TMOD中的GATE位置1时,可使T0(或T1)的启动受外部引脚和TR0(或和TR1)的共同控制,利用这个特点,可测量引脚上正脉冲的宽度,即正脉冲中包含的机器周期数。测量正脉冲信号宽度的电路原理如图6-14所示,T0的计数输入端外接信号源,P2、P1口外接16只LED,用于以二进制形式显示周期信号的高电平中包含的机器周期数,其中P2口显示低8位,P1口显示高8位。设置信号源周期数,LED显示的脉冲信号宽度会发生变化。44图6-14测量正脉冲信号宽度电路45

参考程序如下:#include<reg51.h>#defineuintunsignedint#defineucharunsignedcharsbitP3_2=P3^2; //位变量定义voiddelay(uintz) //延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidmain(){ while(1){TMOD=0x09; //定时器T0为方式1定时TH0=0;46TL0=0;while(P3_2==1); //等待变低TR0=1;//启动T0while(P3_2==0);//等变高,T0开始计数while(P3_2==1);//等变低TR0=0;P1=~TH0;P2=~TL0; delay(200);}}在proteus仿真中,晶振频率为12MHz,设置信号源输出频率为50Hz,其高电平宽度为10ms时,即10000个机器周期,因为10000=0x2710。则P1口、P2口输出分别为0x27、0x10。4748

第7章单片机系统的并行扩展

49507.1MCS-51单片机的最小系统7.1.18051/8052的最小系统7.1.28031最小应用系统7.2MCS-51单片机系统并行扩展技术7.2.1并行扩展总线原理7.2.2I/O口扩展概述7.2.3并行扩展地址译码技术7.3存储器扩展技术7.3.1存储器的概述7.3.2程序存储器的扩展7.3.3数据存储器的扩展7.4 I/O接口扩展概述7.5简单74系列并行I/O接口的扩展7.6通用可编程I/O接口芯片82C55的扩展7.6.1并行I/O接口芯片82C557.6.2并行I/O接口82C55的3种工作方式7.6.380C51单片机与82C55的接口设计51第7章单片机系统的并行扩展MCS-51系列单片机虽具有很强的功能,但片内驻留的程序存储器容量、数据存储器的容量、并行I/O口等是有限的,在不能满足应用系统需要时,需要进行系统扩展。系统扩展分为并行扩展和串行扩展,本章介绍应用系统的并行扩展,第11章介绍串行扩展。7.1MCS-51单片机的最小系统单片机最小系统,是指一个可用的最小配置系统。根据片内有无程序存储器,MCS-51单片机最小系统分两种情况,若单片机内部程序存储器资源已能满足系统需要,则增加晶振及复位电路直接构成最小系统。7.1.18051/8052的最小系统8051/8052片内有4K(8052有8K)ROM/EPROM,因此,仅需要外接晶振和复位电路就可构成最小系统。8051/8052的最小系统如图7-1所示。52图7-18051/8052的最小系统8051/8052的最小系统特点如下。(1)片外无需扩展存储器,P0、P1、P2、P3都可以作为用户I/O口。(2)片内有128B(地址00H~7FH)RAM,无片外数据存储器。53(3)内部有4KB(地址空间0000H~0FFFH)ROM,EA应接高电平。7.1.28031最小应用系统8031片内无程序存储器片,其最小应用系统不仅要外接晶体振荡器和复位电路,还应扩展程序存储器,8031最小应用系统如图7-2所示。

该最小系统特点如下:(1)P0在扩展程序存储器时作为低8位地址/数据分时复用线,P2口作为高8位地址线,不能作为I/O线,只有P1、P3可作为I/O口使用。(2)片内有128B(地址空间00H~7FH)RAM,没有片外RAM。(3)片外扩展了程序存储器,其地址空间随芯片容量不同而不一样。图7-2中使用的是27512芯片,容量为64KB(地址空间为0000H~FFFFH)。由于只使用片外程序存储器,EA接低电平。54图7-28031/8032的最小系统7.2MCS-51单片机系统并行扩展技术根据单片机应用系统具体应用中需要的ROM、RAM及I/O空间,可以方便地设计并行扩展。本节首先介绍并行扩展总线原理,然后简单概况I/O接口扩展,最后重点介绍并行扩展地址译码技术。557.2.1并行扩展总线原理本小节介绍并行扩展的三总线结构,并行扩展遵循的扩展原则,以及单片机系统并行扩展的内容。1.三总线结构MCS-51单片机外部都有单独的并行地址总线、数据总线、控制总线。其中P0口作数据总线和低8位地址总线复用,为了能把分时复用的数据总线和地址总线分离,以便同外部扩展的芯片正确连接,需要在单片机的外部增加地址锁存器(例如74LS373),从而构成三总线结构,如图7-3所示。56图7-380C51的三总线结构(1)地址总线单片机地址总线(AddressBus,AB)用于单向传送单片机送出的地址信号,以便进行存储器单元和I/O端口的选择。地址总线的数目决定了可直接访问的存储单元和I/O端口的数目。地址总线由P2构成的高8位地址与P0构成的低8位地址组成16位地址总线,达到64KB的寻址能力。实际应用中,如果不需要扩展16位地址,扩展后剩余的地址线仍可作一般I/O57口使用。

(2)数据总线数据总线(DataBus,DB)用于单片机与存储器(或I/O接口)间双向的的数据传送。MCS-51单片机的数据总线与其字长一致,为8位。

(3)控制总线控制总线(ControlBus,CB)是控制片外ROM、RAM和I/O口读/写操作的。

2.并行扩展原则:三总线对接MCS-51单片机系统的并行总线接口扩展是通过扩展三总线实现的,总结为“三总线对接”,连线时应遵守下列原则:(1)单片机扩展存储器和I/O口芯片时,双方数据线与数据线相连,地址线与地址线相连,控制线与控制线相连。(2)扩展多片存储器和I/O口芯片时,控制线相同的芯片地址线不能相同,地址线相同的芯片控制线不能相同。58

(3)由于只有片选信号有效的芯片才被选中,当一类芯片仅有1片时,片选端可接地;当同类芯片存在多片时,可用单片机地址线(通常是高位地址线)通过线选法或译码法(全译码和部分译码)等方法分时选中各芯片片选端,在单片机应用中大多采用线选法。

3.单片机系统并行扩展的内容MCS-51单片机系统并行扩展的内容包括外部存储器的扩展(外部RAM、ROM)和I/O接口部件的扩展。主要包含如下内容。

(1)外部ROM的扩展①紫外线擦除的EPROM主要有Intel2716(2KB)、2732(4KB)、2764(8KB)、27128(16KB)、27256(32KB)和27512(64KB)等。②电擦除的EEPROM主要有高压(+21V)电写入的2816和2817(2KB),以及+5V59电写入的2816A和2817A(2KB)等。

(2)外部RAM的扩展①静态RAM有Intel6116(2KB)、6264(8KB)、62256(32KB)等。②动态RAM主要是2164A(64K×1)。(3)I/O接口的扩展①专用I/O扩展:8255(3×8并行口)、8243(4×4并行口)②复合芯片:8155具有可编程的I/O及RAM扩展接口电路,含有2个8位I/O口、1个6位I/O口、256个RAM字节单元,具有1个14位的减法定时器/计数器。③TTL芯片:通过P0口扩展的锁存、缓冲器:74LS373、74LS273、74LS244、74LS245。(4)其它主要有8259、8279、ADC0809、8251和DAC0832等。7.2.2I/O接口扩展概述60

由于MCS-51的I/O接口和外部RAM是统一编址的,因此,可以把外部64KB的RAM空间的一部分用作扩展I/O的地址空间。这样,单片机可以像访问外部RAM一样访问I/O接口,对其进行读/写。Intel公司常用外围器件如表7-1所示。表7-1Intel公司常用外围器件617.2.3并行扩展地址译码技术并行扩展包括片外存储器的扩展(RAM和ROM)和I/O接口的扩展,其中,片外ROM有独立的64KB地址空间,I/O口与片外RAM统一编址,占据相同的64KB地址空间。扩展时,占据相同地址空间的芯片要共同划分单片机64KB地址空间。

1.并行扩展的地址译码方法并行扩展的核心问题是扩展芯片的编址问题,即给存储单元和I/O接口单元分配地址。对于扩展多个存储器和I/O接口芯片的单片机系统,编址分为两个层次:扩展芯片的选择和扩展芯片片内单元的选择。占据相同地址空间的扩展芯片(ROM之间或者RAM和I/O之间)与单片机地址连接方式如下:(1)片内单元的选择:单片机地址总线A0~A15由低位到高位与扩展芯片片内地址线顺次相接,选中芯片片内单元。62

(2)对存储器芯片、I/O接口芯片访问时,片选端信号必须有效。单片机的剩余高位地址线作为片选线,经译码后与扩展芯片的片选端相接,选中芯片。(3)扩展芯片的选择:由高位地址实现,扩展芯片片选端连接方式有线选法和译码法。1)线选法若系统只扩展少量的ROM或者少量的RAM和I/O接口,可采用线选法,即把单片机单独的地址线(通常是P2的某一条线)连接到扩展芯片片选端上,只要此地址线为低电平,就选中该芯片。线选法的连接方法有多种:一线二用、一线一选和综合线选方式。线选法的特点是:电路简单,不需另外增加硬件电路,体积小,成本低。由于除了片选端和片内地址是确定的,其余单片机地址无论取1或0,都不会影响对片内单元的确定,因此会出现地址重叠。63

2)译码法译码法分全译码和部分译码,全译码需使用地址译码器。当译码器输入为某一个固定编码时,其输出只有某一个固定的引脚为低电平,其余的为高电平。因此,使用较少的单片机地址信号编码即可产生较多的译码信号,从而实现对多块ROM或者多块RAM和I/O器件的选择。①全译码全译码就是扩展芯片的地址线与单片机系统的地址线顺次相接后,剩余的单片机高位地址线全部参加译码。由于地址译码器使用了全部剩余高位地址线,地址与存储单元一一对应,也就是1个存储单元只占用1个唯一的地址。全译码的特点:这种译码方法存储器芯片的地址空间是唯一确定的,但译码电路相对复杂。常用的译码器有74LS138(3-8译码器)、74LS139(双2-4译码器)和74LS154(4-16译码器)。64

②部分译码单片机系统的地址线与扩展芯片的片内地址线顺次相接后,剩余的单片机高位地址线仅一部分参加译码。部分译码的特点:由于地址译码器仅使用部分剩余地址线,没有使用的地址取0和1都可行,使得1个存储单元或I/O接口单元占用了多个地址。扩展芯片的地址空间有重叠,造成单片机系统地址空间的浪费。

2.避免地址重叠方法在并行扩展芯片编址时,对于某一扩展芯片,如果单片机地址线部分没有用到,没用到的地址可取0或1,使得1个存储单元或I/O接口单元占用了多个地址,出现扩展芯片单元地址重叠,避免单元地址重复方法如下:(1)用来选择其他芯片的片选地址线取为1,其他未用到地址线全取为1;(2)用来选择其他芯片的片选地址线取为1,其他未用到地址线全取为0。653.典型3-8译码器74LS13874LS138译码器是一种常用的地址译码器芯片,其引脚如图7-4所示,其中,、、、、、、、为8个输出端,C、B、A为译码输入端,其8种逻辑组合选通各输出端。G1、、为控制端,只有当G1为“1”,且、均为“0”时,译码器才能译码输出。否则译码器的8个输出端全为高阻状态。74LS138译码器控制端、译码输入端与输出端之间的译码关系如表7-2所示。图7-474LS138译码器引脚66表7-274LS138译码器真值表

4.并行扩展地址译码的应用【例7-1】80C51单片机采用线选法扩展RAM和I/O接口,电路如图7-5所示,单片机扩展1片RAM芯片6116(存储容量为2KB),扩展I/O接口82C55、8155、DAC0832和定时/计数器8253等各1片。扩展外围芯片除了片选端外,还有片内地址,67将单片机地址总线A0~A15由低位到高位的顺序与RAM地址线、I/O片内地址线依次相接,由于6116内部有2KB的存储空间,占用11根地址线,单片机剩余高位地址线A11~A15依次直接与各芯片片选端相接。将A11接6116片选端,A12接82C55片选端,A13接8155片选端、A14接DAC0832片选端,A15接定时/计数器8253片选端。除片内地址和片选端外,各扩展芯片未用到的地址位均设成“1”状态(也可设成“0”状态),根据图7-5中地址线的连接方法,则各芯片地址如表7-3所示。表7-3线选法方式RAM及I/O地址译码表68图7-5片选法扩展RAM和I/O接口69

对于RAM和I/O容量较大的应用系统,当扩展芯片所需的片选线多于可利用的高位地址线时,常采用地址译码法。它将低位地址线作为芯片片内地址,用译码器对剩余高位地址线译码,译出的信号作为片选线。【例7-2】80C51单片机采用全译码方式扩展RAM和I/O接口,电路如图7-6所示,单片机扩展2片RAM芯片6264(存储容量为8KB)、2片RAM芯片6116(存储容量为2KB),扩展I/O接口82C55、8155、DAC0832和定时/计数器8253等各一片。由于片内单元数最多的6264是8KBRAM,需要13条低位地址线(A0~A12)为片内单元寻址,高位地址线仅剩3条(A13~A15),不能对8个芯片采用线选法编址,此时,可采用全译码方式,用一片74LS138分别选通8个扩展芯片的片选线。图7-6中,将A15~A13连接74LS138的C、B、A输入端,Y0连接定时/计数器8253片选端,Y1连接D/A变换器700832片选端,Y2连接8155片选端,Y3连接82C55片选端,Y4、Y5分别连接2片6116片选端,Y6、Y7分别连接2片6264片选端。除片内地址和片选端外,各扩展芯片未用到的地址位均设成“1”状态(也可设成“0”状态),根据图7-6中地址线的连接方法,则各芯片地址如表7-4所示。71图7-6单片机全译码扩展RAM和I/O接口72表7-4全译码方式RAM及I/O地址译码表

7.3存储器扩展技术本节首先介绍存储器扩展的一般方法,然后介绍如何扩展程序存储器和数据存储器。

7.3.1存储器的概述一个最小的单片机系统必须包括程序存储器和数据存储器。存储器是单片机系统的主要组成部分,运行程序、处理数73据和存储数据都需要存储器。

1.存储器的主要指标存储器的主要指标有存储容量和存取速度。(1)存储容量用字数位数表示,或者用位数表示。(2)存取速度用完成一次存取需要的时间表示。高速存储器的存取时间仅有10ns左右。选择存储器件的考虑因素有易失性、只读性、位容量、功耗、速度、价格和可靠性等。

2.存储器的类型存储器的主要类型如下:(1)掩膜ROM(ROM):在制造过程中编程,只适合于大批量生产。(2)可编程ROM(PROM):用独立的编程器写入,只能写入一次。(3)可擦除可编程ROM(EPROM):电信号编程,紫外线擦除的只读存储器芯片。74

(4)电可擦除可编程ROM(EEPROM):电信号编程,电擦除。读写操作与RAM相似,写入速度稍慢。(5)随机存储器(RAM):易失性的存储器包括静态存储器SRAM(static random access memory)和动态存储器DRAM (dynamic random access memory)。 SRAM和DRAM在掉电的时候均会失去保存的数据。(6)闪存(FlashMemory):又称闪烁存储器,简称闪存。电改写,电擦除,读写速度快(70ns),读写次数多(1万次)。(7)铁电存储器(FRAM):将ROM的非易失性数据存储特性和RAM的无限次读写、高速读写以及低功耗等优势结合在一起。FRAM产品包括各种接口(如工业标准的串口和并口),具有工业标准的封装类型和密度(4Kbit、16Kbit、64Kbit、256Kbit和1Mbit等)。

3.扩展存储器所需芯片数目的确定若扩展存储器字长与单片机字长一致,则只需扩展容量。所需芯片数目按下式确定:75若所选存储器芯片字长与单片机字长不一致,则不仅需扩展容量,还需字扩展。所需芯片数目按下式确定:

4.存储器扩展的一般方法(1)地址总线16位,可扩展片外程序存储器64KB,地址为0x0000~0xFFFF;可扩展片外数据存储器及I/O口共64KB,地址为0x0000~0xFFFF。(2)存储器芯片的地址线的数目由芯片的容量决定。容量(Q)与地址线数目(N)满足关系式:Q=2N。一般来说,存储器芯片的地址线数目总是少于单片机地址总线的数目,连接时,存储器芯片的地址线与单片机的地址总线(A0~A15)按从低到高的顺序依次相接。连接后,单片机的高位地址线如有剩余。剩余地址线一般作为译码76线,译码输出与存储器芯片的片选信号线相接。(3)对外扩的程序存储器芯片,其输出允许控制线与单片机的信号线相连;对外扩的数据存储器芯片,其输出允许控制线和写控制线分别与单片机的读信号线和写信号线相连。(4)存储器芯片的数据线与单片机的数据总线(P0.0~P0.7)按由低到高的顺序依次相接。【例7-3】在80C51片外扩展24KBRAM,采用6264芯片,计算需要几片6264芯片。解:根据公式7-1可得,芯片数=24KB/8KB=3片

5.常用的存储器(1)EPROM存储器EPROM是以往单片机最常选用的一种紫外线可擦除可编程的存储器,主要有27C系列的EPROM,如27C16(2KB)、27C32(4KB)、27C64(8KB)、27C128(16KB)、27C256(32KB),除了27C16和27C32为24个引脚外,其余均为28个引脚。扩展程序存储器时,应尽量用大容量的芯片。77

(2)EEPROM存储器常用的AT24C02是采用CMOS工艺制作的串行EEPROM存储器,它具有可用电擦除的256字节的容量,由3~15V电源进行供电。AT24C02将在11.3.4节具有I2C串行总线的EEPROMAT24C02的设计中介绍。(3)典型的SRAM存储器IntelSRAM的典型芯片有6116(2K×8位)、6264(8K×8位)、62256(32K×8位)、628128(128K×8位)等。其中,6264芯片应用较广泛。6264是一种8KB

×

8的静态存储器,它采用CMOS工艺,数据存取时间为200ns。其内部组成包括512×16×8的存储器矩阵、行/列地址译码器以及数据输入输出控制逻辑电路。在存储器读周期,选中单元的8位数据经过列I/O控制电路输出;在存储器写周期,外部8位数据经过输入数据控制电路和列I/O控制电路写入所选中的单元中。6264有28个引脚,引脚结构如图7-7所示,采用双列直插式结构,使用单一

+

5V电源。其引脚功能如下:78图7-76264引脚结构796264的、、、CS共同作用决定了芯片的运行方式,如表7-5所示。表7-56264的操作逻辑表

7.3.2程序存储器的扩展51系列单片机为外部程序存储器的扩展提供了专门的读指令控制信号,使外部程序存储器形成独立的64KB空间。

1.单片程序存储器的扩展【例7-4】80C51单片机扩展单片27C64A作为程序存储器,电路如图7-8所示。27C64A是8K

×

8位的EPROM芯片,将单片机地址A12~A0连接2764片内地址A12~A0,27C6480片选端直接接地,单片机程序存储器读选通信号接2764的端,由此A15~A13组成8个重叠的地址范围为如表7-6所示。图7-8单片机扩展单片27C64A程序存储器81表7-6单片27C64A程序存储器重叠地址表

2.多片程序存储器的扩展【例7-5】80C51单片机扩展2片27C64A作为程序存储器,电路如图7-9所示。图中,A15连接27C64A(U3)端,并经过74LS04反向后连接27C64A(U4)端,由于单片机地址A12~A0连接2片2764片内地址A12~A0,剩余地址A13、A14可以是0或者1,组成4种逻辑状态,由此,2片27C64A82各有4组重叠地址空间,且各占据32KB的程序存储空间,如表7-7所示。图7-9单片机扩展2764作为程序存储器83表7-7单片27C64A程序存储器重叠地址表

7.3.3数据存储器的扩展51子系列单片机片内只有128B数据RAM,对于数据处理量不大的智能仪表及控制系统,片内的数据存储器完全够用。但在单片机需要采集及处理的数据量较大时,需要考虑扩展片外RAM,可扩展的最大容量为64KB。目前使用的RAM有两类,即静态RAM和动态RAM。在单片机系统中,外部扩展大多为静态RAM,如6116、6264、62256。随着串行接口芯片技术的发展,现多采用串行接口EEPROM存储器,如24CXX系列等。84【例7-6】80C51单片机采用全译码方式扩展8片6264RAM,电路如图7-10所示。单片机地址A12~A0连接8片6264片内地址A12~A0,剩余地址A15、A14、A13连接74LS138译码器的C、B、A输入端,译码器输出端Y0连接6264(U3)片选端,Y1连接6264(U4)片选端,Y2连接6264(U5)片选端,Y3连接6264(U6)片选端,Y4连接6264(U7)片选端,Y5连接6264(U9)片选端,Y6连接6264(U10)片选端,Y7连接6264(U11)片选端。根据图7-10中地址线的连接方法,全地址译码如表7-8所示。采用全地址译码方式,单片机发地址码时,每次只能选中一个存储单元。同类存储器间不会产生地址重叠的问题。85图7-10单片机全译码扩展8片6264RAM86表7-8扩展8片6264RAM地址表

【例7-7】80C51单片机采用部分译码器法扩展2片8KBEPROM2764,2片8KBRAM6264,电路如图7-11所示。A13和A14分别连接2-4译码器74LS139输入端A、B,74LS139输出端Y0连接6264(U3)片选端,Y1连接6264(U4)片选端,Y2连接2764(U5)片选端,Y3连接2764(U6)片选端,80C51地址A15引脚未连接线,使得当单片87机地址输出时,A15可以为0或者1,因此每个芯片都有2个8KB的地址空间。表7-9是80C51扩展2片2764和2片6264的地址表。88图7-11采用部分译码器法扩展2片8KBEPROM2764和2片8KBRAM626489表7-9扩展2片2764和2片6264地址表

7.4I/O接口扩展概述I/O(输入/输出)接口是MCS-51与外设交换数字信息的桥梁,也属于系统扩展的一部分。MCS-51真正用作I/O口线的只有P1口的8位I/O线和P3口的某些位线。在多数应用系统中,MCS-51单片机都需要外扩I/O接口电路。90

1.I/O接口的功能I/O接口电路应满足以下要求:(1)实现和不同外设的速度匹配大多数外设的速度很慢,无法和µs量级的单片机速度相比。单片机只有在确认外设已为数据传送做好准备的前提下,才能进行I/O操作。外设是否准备好,需I/O接口电路与外设之间传送状态信息。(2)输出数据锁存由于单片机工作速度快,数据在数据总线上保留的时间十分短暂,无法满足慢速外设的接收数据的要求。I/O电路应具有数据锁存器,以保证接收设备可靠接收。(3)输入数据三态缓冲输入设备向单片机输入数据,但数据总线上面可能“挂”有多个数据源,为不发生冲突,只允许当前正在进行数据传送的数据源使用数据总线,其余的应处于隔离状态。91

2.I/O接口与I/O端口的区别I/O接口(Interface)是指单片机与外设间的I/O接口芯片。I/O端口(Port)是指具有端口地址的寄存器或缓冲器。一个I/O接口芯片可以有多个I/O端口,每个I/O端口是一个数据口、命令口或者状态口。

3.I/O端口编址I/O端口编址是给所有I/O接口中的寄存器编址,I/O端口编址有两种方式:独立编址与统一编址。(1)独立编址方式I/O寄存器地址空间和存储器地址空间分开编址,但需专门读写I/O的指令和控制信号。(2)统一编址方式I/O寄存器与数据存储器单元同等对待,统一编址。不需要专门的I/O指令,直接使用访问数据存储器的指令进行I/O操作,简单、方便且功能强。92

MCS-51使用统一编址的方式。

4.I/O数据的传送方式为实现MCS-51和不同速度的外设的匹配,I/O接口必须选择恰当的I/O数据传送方式。I/O数据传送方式有同步传送、查询传送方式和中断传送。(1)同步传送方式(无条件传送)当外设速度和单片机的速度相当时,常采用同步传送方式,最典型的同步传送就是单片机和外部数据存储器之间的数据传送。(2)查询传送方式(条件传送,异步式传送)MCS-51查询外设“准备好”后,再进行数据传送。查询方式通用性好,硬件连线和查询程序十分简单;但是效率不高。为提高效率,通常采用中断传送方式。(3)中断传送方式外设准备好后,发出中断请求,单片机进入与外设数据传送的中断服务程序,进行数据的传送,中断服务完成后又返回主程序继续执行。中断传送方式工作效率高。93

7.5简单74系列并行I/O接口的扩展MCS-51有四组I/O口P0~P3,但是在某些特定的场合,可能会出现I/O口不够用的情况。需要通过扩展I/O以满足使用的需要。 在MCS-51单片机应用系统中,经常采用74系列TTL电路或4000系列CMOS电平的锁存器或三态门电路构成简单并行I/O口。例如:74LS273、74LS373、74LS377等锁存器可构成输出口,用74LS244缓冲驱动器可作为输入口,74LS245三态输出8路收发/驱动器可作为双向口使用。这种应用通常是利用P0口的第二功能扩展I/O。由于P0口第二功能是地址/数据总线分时复用,扩展的原则是:“输出要锁存,输入要三态缓冲或锁存选通”。【例7-8】80C51单片机利用74LS244和74LS373芯片扩展简单I/O口,电路如图7-12所示,将P0口扩展成简单的输入、输出口的电路。74LS244是缓冲驱动器,扩展为输入口,连接8个按钮开关;74LS373扩展为输出口,连接894个LED发光二极管,用来显示8个按钮开关状态,某位开关为低电平时二极管发光。74LS273和74LS244的工作受80C51的P2.7、、三条控制线控制。当P2.7=0,=0(=1)时选中74LS244,8位开关的状态被读入单片机P0口。当P2.7=0,=0(=1)选中74LS373,80C51单片机P0口数据锁存到74LS373;可见,74LS244和74LS373具有相同端口地址:0x7fff,单片机读数据时,选中74LS244;单片机输出数据时,选中74LS373。参考C程序如下:#include<reg51.h>#include<absacc.h>#defineucharunsignedchar#defineIN244XBYTE[0x7fff]//输入端口地址#defineOUT273XBYTE[0x7fff]//输出端口地址voidmain(void){uchara;

95while(1){a=IN244;//读244数据OUT273=a;//输出数据给373,驱动二极管显示}}96

图7-12利用74LS244和74LS373芯片扩展简单I/O口7.6通用可编程I/O接口芯片82C55的扩展82C55是一种通用的可编程并行I/O接口芯片,用于几乎所有微型机系统中,如8086、MCS-51、Z80CPU系统等。82C55有3个8位带锁存或缓冲的数据端口,可与外设并行交换数据。用户可用程序来选择多种操作方式,成为CPU与外设之间灵活的并行输入/输出接口芯片。7.6.1并行I/O接口芯片82C55下面介绍82C55的应用特性。1.82C55的引脚信号82C55采用双列直插式封装,共40引脚,如图7-13所示,各引脚信号功能如下:(1)D7~D0:三态双向数据线,与单片机的数据总线P0相连,用来传送数据信息。(2)PA7~PA0:PA口的8根I/O信号线,与外部设备连接。(3)PB7~PB0:PB口的8根I/O信号线,用于与外部设备连接。97

(4)PC7~PC0:PC口的8根I/O信号线,用于与外部设备连接。(5):片选信号线,低电平有效时,选中82C55芯片。(6):读信号线,低电平有效时,控制从82C553个数据端口寄存器之一读出信息。(7):写信号线,低电平有效,用于控制向82C554个数据端口和控制端口之一写入信息。(8)A1、A0:地址线,其逻辑关系组合成为4个端口的地址译码信号。A1A0=00,选中PA口;A1A0=01,选中PB口;A1A0=10,选中PC口;A1A0=11,选中控制口。(9)RESET:复位信号线,高电平时有效。(10)VCC:+5V电源线。(11)GND:地信号线。98

图7-1382C55引脚

2.82C55内部结构82C55内部结构如图7-14所示,分为2部分功能部件:与微处理器接口功能部件和与外设接口的功能部件。99

图7-1482C55内部结构(1)与外设接口部分——三个独立的数据口82C55片内有3个彼此独立的8位数据端口PA口、PB口、PC口。1)PA口:由一个8位输入锁存器和一个8位输出锁存器及缓冲器组成。100

2)PB口:由一个8位的数据输入缓冲器和一个8位的数据输出锁存器及缓冲器组成。3)PC口:由一个8位的数据输入缓冲器和一个8位的数据输出锁存器组成。PA口、PB口和PC口都可作为独立的输入口和输出口使用,PA口适合双向数据传输。在方式1和方式2应用中,PC端口的某些位固定配合PA口和PB口的工作。(2)与微处理器的接口部分1)数据总线缓冲器数据总线缓冲器是一个双向的三态8位缓冲器,是82C55和系统数据总线连接的通道,传送输入/输出数据、CPU发出的控制字及外设的状态信息。2)内部控制部分——A组、B组控制电路82C55内部控制部分包含A组、B组控制电路2部分,A组控制PA口和PC口的高4位(PC4~PC7)。B组控制PB口和PC口的低4位(PC0~PC3)。101

内部控制的功能是执行单片机CPU写入的“控制字”,接收读/写控制部件的读/写命令,决定A、B组的工作方式和读/写操作。3)读写控制逻辑将单片机送来的地址线(A1、A0)、控制线(、RESET、和)组合,根据相应的逻辑关系,把CPU的控制字、数据送至控制端口或数据端口,或将外设状态、外设输入数据通过相应数据端口到CPU。82C55控制信号对4个端口执行的操作的情况如表7-10所示。102

3.82C55的工作方式、控制字和编程(1)82C55的工作方式82C55有3种工作方式:方式0、方式1、方式2。103

(2)控制字单片机CPU向82C55控制寄存器输出2种不同的控制字,决定82C55工作方式和3个数据端口执行的输入/输出操作。控制字分为工作方式控制字和PC置1/置0控制字两种。2种控制字都必须写入控制寄存器才能发挥作用。1)工作方式控制字82C553种工作方式由方式控制字决定,工作方式控制字的特征是最高位D7=1,格式如图7-15所示。104图7-15工作方式控制字格式105

【例7-9】设82C55作扫描键盘和数码管显示接口芯片,PA口工作于方式0,控制七段数码管输出段选码,PC口工作于方式0,作为键盘扫描线输出,PB口工作于方式0作为键盘输入线,设82C55控制口地址为0x7ff3,写出82C55初始化语句。参考C程序如下:#include<absacc.h>#defineCOM8255XBYTE[0x7ff3]//控制寄存器地址voidmain(void){ COM8255=0x82; //写入82C55控制寄存器

…}2)PC置1/置0控制字82C55在与CPU传输数据的过程中,有时需要将C端口的某几位作为控制位或状态位106来使用,或需要将C端口按位设置以配合PA或PB的工作,需将PC按位置1或清0。PC置1/置0控制字的格式如图7-16所示,说明如下。107

【例7-10】设计采用82C55的PC7产生方波。设82C55控制口地址为0x7ff3,向82C55控制口写入0x0f,则PC7置1;向控制口写入0xe,PC7清0。参考C程序段如下:#include<absacc.h>#defineuintunsignedint#defineCOM8255XBYTE[0x7ff3]//控制口地址voiddelay(uintz) //延时函数{ uintx,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}voidmain(void){ COM8255=0x0f;//PC7置1delay(5);

108COM8255=0xe;//PC7清0delay(5);}7.6.2并行I/O接口82C55的3种工作方式82C55的PA、PB和PC3个数据口具有3种工作方式。1.工作方式0方式0是基本的输入/输出工作方式,提供简单的输入和输出操作,不需要固定应答信号。PA口、PB口和PC口(PC口分为2个4位使用)都可工作在方式0下,方式0特点如下:(1)具有两个8位端口(PA、PB)和两个4位端口(PC口的高4位和PC口的低4位)。(2)任何一个端口都可以设定为输入或者输出。(3)每一个端口输出时可锁存,输入可缓冲。PA口、PB口和PC口3个数据口都具有输出锁存器和输入缓冲器,可工作在方式0的以下情况:109

(1)适用于无条件传输数据的设备,如读一组开关状态、控制一组指示灯;不使用应答信号,CPU可以随时读出开关状态,随时把一组数据送指示灯显示。(2)键盘扫描。

2.工作方式1工作方式1是选通输入/输出方式,工作方式1仅适用于PA和PB,当PA口和PB口在方式1下进行数据的输入/输出时,必须利用PC口某些位提供选通和应答信号,即PA和PB输入/输出是由PC口固定位的硬件状态决定。此时PA口和PB口既可以作输入,也可作输出,输入和输出都具有锁存能力。(1)方式1输入无论是PA口输入还是PB口输入,都用PC口固定的三位作应答信号,一位作中断允许控制位,各应答信号如图7-17所示,信号含义如下:110

1):外设输入给82C55的“输入选通”信号,低电平有效;2)IBF:82C55输出给外设的“输入缓冲器满”信号,高电平有效;3)INTR:82C55送给CPU的“中断请求”信号,高电平有效;4)INTE:82C55内部为控制中断而设置的“中断允许”111信号,可通过对PC4(PA口)和PC2(PB口)的置位/复位控制字来开放中断或禁止。当82C55PA或PB工作在方式1选通输入方式,单片机可以采用查询输入或中断输入2种方式读取外设数据:1)采用查询式输入时,单片机可以查82C55的输入缓冲器信号IBF,若IBF为高,则CPU读入数据。2)采用中断方式输入时,应该先用C口置1/置0的控制字使相应的端口允许中断,即使INTEA(PC4)=1或INTEB(PC2)=1,然后将中断请求信号INTR送单片机外部中断。以PA工作于方式1输入为例,介绍工作过程如下:①当外设向82C55PA7~PA0引脚输入数据时,外设需要在上送入一个低电平选通信号。②82C55接收到后,首先将PA7~PA0上数据存入PA口的输入数据缓冲/锁存器,接着将IBFA变为高电平,通知外设,PA接收到输入数据。112

③当82C55检测到由低电平变为高电平、IBFA(PC5)=1和INTEA(PC4)=1同时满足时,使INTRA(PC3)变为高电平,INTRA可向单片机发出外部中断请求。其中,INTEA(PC4)=1的设置可由PC4置/复位控制字来控制。④单片机响应INTRA中断后,在中断服务程序中读取PA中的输入数据。当数据被读走后,INTRA中断请求撤销,IBFA清0,外设可以传送下一个数据。(2)方式1输出无

温馨提示

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

评论

0/150

提交评论