专注电子技术学习与研究
当前位置:单片机教程网 >> MCU设计实例 >> 浏览文章

单片机接口扩展

作者:佚名   来源:本站原创   点击数:  更新时间:2007年07月07日   【字体:


单片机接口扩展
教学目标
介绍单片机程序存储器的扩展方法
介绍单片机数据存储器的扩展方法
介绍单片机I/O口的扩展方法
学习要求
熟悉单片机片外三总线结构和扩展能力
掌握单片机接口扩展EPROM,RAM,I/O口方法
掌握地址译码及片选方法
了解单片机总线驱动能力和扩展方法
通常情况下,采用8051/8751/89C51的最小应用系统最能发挥单片机体积小,成本低的优点.但在很多情况下,构成一个工业测控系统时,考虑到传感器接口,伺服控制接口以及人机对话接口等的需要,最小应用系统常常不能满足要求,因此,必须在片外扩展相应的外围芯片,这就是单片机接口扩展.它包括程序存储器(ROM)扩展,数据存储器(RAM)扩展,I/O口扩展,定时/计数器扩展,中断单片机接口扩展以及其它特殊功能扩展等.
7.1 MCS-51系列单片机的外部扩展性能
7.1.1 MCS-51系列单片机的片外总线结构
为了满足单片机接口扩展要求,MCS-51系列单片机的片外引脚可以构成图7-1所示的三总线结构,即地址总线(AB),数据总线(DB)和控制总线(CB).所有的外部芯片都是通过这三组总线进行扩展.
图7-1 单片机的片外三总线结构


高8位地址
低8位地址 16位地址总线
__
8位数据总线
控制总线
_
P2口
ALE

8051
P0口
RD
EA WR
PSEN

地址
锁存器
1.地址总线(AB)
地址总线宽度为16位,因此可寻址范围为216=64KB.地址总线由P0口提供低8位地址A7~A0,由P2口提供高8位地址A15~A8.
2.数据总线(DB)
数据总线由P0口提供,其宽度为8位.
3.控制总线(CB)
控制总线包括片外单片机接口扩展用线和片外信号对单片机的控制线.
, :用于片外数据存储器(RAM)的读写控制.当执行片外数据存储器操作指令MOVX时,这两个信号自动生效.
:用于片外程序存储器(EPROM)的读数控制.
ALE:用于锁存P0口输出的低8位地址的控制线.通常,ALE在P0口输出地址期间用其下降沿控制锁存器锁存地址数据.
:用于选择片内或片外程序存储器.当 =0时,只访问片外程序存储器,而不管片内有无程序存储器.因此,在扩展并使用外部程序存储器时,必须将 接地.

7.1.2 MCS-51系列单片机的单片机接口扩展能力
根据地址总线宽度,MCS-51系列单片机在片外可扩展的存储器最大容量为64KB,地址范围为0000H~FFFFH.
1.片外数据存储器与程序存储器的地址范围一样为64KB,地址也可重复,它们由单片机不同的指令和控制信号区分:读片外程序存储器的指令为MOVC,读写片外数据存储器的指令为MOVX;读片外程序存储器的控制信号为 ,读写片外数据存储器的控制信号为 和 .
2.片外数据存储器与片内数据存储器的地址可重复,但操作指令不同.对片内数据存储器读写的指令为MOV,对片外数据存储器读写的指令为MOVX.
3.为配置外围设备而需要扩展的I/O接口,如A/D,D/A等,与片外数据存储器统一编址,
7.1.3 MCS-51系列单片机的总线驱动能力及扩展方法
一,总线的驱动能力
MCS-51系列单片机作为数据总线和低8位地址总线的P0口可驱动8个LSTTL电路,而P1,P2,P3只能驱动4个LSTTL电路.当应用系统规模过大时,可能造成负载过重,致使驱动能力不够,系统不能可靠地工作.
二,总线的扩展概述
在设计计算机应用系统硬件电路时,首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展.
地址总线和控制总线为单向的,可采用单向三态线驱动器(如74LS244)进行驱动能力的扩展.数据总线为双向的,必须采用双向三态线驱动器(如74LS245)进行驱动能力的扩展.
7.2 MCS-51系列单片机存储器扩展
7.2.1程序储存器扩展
一,_ 储存器扩展概述
外部程序存储器芯片与单片机可按如下方式连接:
1.地址线的连接
外部程序存储器低8位地址线A0~A7与P0口的口线P0.0~P0.7对应相连;外部程序存储器高8位地址线A8~A15与P2口的口线P2.0~P2.7对应相连.
2.数据线的连接
外部程序存储器8位数据线D0~D7与P0口的口线P0.0~P0.7对应相连.
3.控制线的连接
(片外程序存储器取指信号)和 (程序存储器输出允许信号)相连;ALE(地址锁存允许信号)和 (地址锁存器锁存信号)相连; (片内/片外程序存储器选择信号),当选用8031/8032时,应接地;单片机的相关地址线经过地址译码和程序存储器的片选信号 相连.
由上面论述可以得到外部扩展程序存储器的一般连接方法,见图7-2所示.
图7-2 单片机的外部程序存储器一般连接方法
地址
锁存器
P2.7
P2.0
ALE
8031
P0.7~P0.0
EA PSEN
A15
A8
A7外部程序
A0存储器
D7~D0
OE
二,程序储存器EPROM的扩展
1.使用单片EPROM的扩展电路
图7-3为8031单片机外接一片EPROM 27256的扩展电路.
图7-3 8031单片机扩展一片27256的电路
27256的 端是输出使能端,与8031的
端相连,当 有效时,把27256中的指令送上P0口线.由于只扩展一片EPROM,27256的片选端 可直接接地.27256的编程电压端VPP接电源.
当用户熟悉了其它EPROM芯片后,很容易改成其它容量EPROM的单片扩展电路:扩展27128时,去掉P2.7引出线,将27128的27脚接Vcc;扩展2764时,去掉P2.6,P2.5引出线,并将2764的27脚接Vcc,26脚不接;扩展2732时,去掉P2.6,P2.5和P2.4引出线;扩展2716时,去掉P2.6,P2.5,P2.4和P2.3引出线,并将2764的Vpp接Vcc即可.
3.使用多片EPROM的扩展电路
在扩展多片EPROM时,所有芯片的片选端都必须按照地址线进行选择.芯片的片选是在保证对EPROM片内存储空间寻址条件下,使用剩余的地址线进行的,分为线选法和译码法.现以扩展多片2764 EPROM为例来说明这两种片选法:
2764的片内地址为8K,因此片内寻址需占用A12~A0的13根地址线,尚剩余3根地址线A13,A14,A15,采用线选法时,剩余的三根地址线每根可接一个芯片的片选信号,则只能扩展3片2764,见图7-4(a)所示;采用译码法时,剩余三根地址线经过3-8译码得到8根片选信号,可扩展8片2764,见图7-4(b)所示.
图7-4(a) 线选法扩展三片2764的电路

图7-4(b) 译码法扩展三片2764的电路
目前,随着大容量EPROM的出现,像图7-4(b)这种多片地址译码的方法已不太常用,它完全可以用两片27256代替.对于扩展两片27256 EPROM的电路如图7-5所示,它是带反相器的线选法:用一根地址线,使它不经反相器和经反向器后分别连接到两个EPROM的片选.
图7-5 两片27256的扩展电路
三,作为程序储存器EEPROM的扩展
电擦除可编程只读存储器EEPROM(Electrically Erasable PROM)具有能在应用系统中进行在线改写,并可在断电情况下保存数据而不需保护电源等优点,在智能仪表,控制装置,分布式监控系统子站以及开发装置中得到了广泛的应用.
图7-6为8031单片机的EEPROM 28C16的扩展电路,图中使用了控制线 , , .图中 线是 由 和
相"与"后提供,无论 有效还是 有效都能使28C16的输出允许端有效,这种联接方法是把EEPROM既作为程序存储器,也作为数据存储器用;28C16的 与8031的 相连,单片机可以向28C16写指令数据或数据,表格;28C16的 与8031的P2.7进行线选,当系统中有其它程序存储器或数据存储器时,要统一考虑地址选择.
7.2.2数据储存器扩展
一, 数据储存器扩展概述
外部数据存储器芯片与单片机可按如下方式连接:
1.地址线的连接
外部程序存储器低8位地址线A0~A7与P0口的口线P0.0~P0.7对应相连;
外部程序存储器高8位地址线A8~A15与P2口的口线P2.0~P2.7对应相连.
2.数据线的连接
外部程序存储器8位数据线D0~D7与P0口的口线P0.0~P0.7对应相连.
3.控制线的连接
(单片机片外数据读信号)和 (数据存储器读信号)相连;
ALE(单片机地址锁存允许信号)和G(地址锁存器锁存信号)相连;
(单片机片外数据写信号)和 (数据存储器写信号)相连;
单片机的相关地址线经过线译码或地址译码和数据存储器的片选信号 相连.
由上面论述可以得到外部扩展数据存储器的一般连接方法,见图7-6所示.
图7-6 单片机的外部数据存储器一般连接方法
地址
锁存器
P2.7
P2.0
ALE
8031
P0.7~P0.0
EA WR
RD
A15 CE
A8
A7
A0 外部数据
存储器
D7~D.0
WE
RD


访问外部数据区可只采用低8位地址线寻址,这时可寻址空间为256B,采用下面读,写指令来访问此数据存储区:
MOVX A,@Ri (i=0,1)
MOVX @Ri,A (i=0,1)
由于8位寻址指令所占字节少,指令执行速度快,故在数据量不大的情况下,应尽可能采用这种8位寻址指令.在单片机系统中通常选用8155外围芯片,其内部的256B就可以作为外部扩展RAM使用.
也可以采用16位地址线寻址外部数据区,这时可寻址空间为64KB,采用下面8位寻址指令来读,写此数据存储区:
MOVX A,@DPTR
MOVX @DPTR,A
当外部RAM容量较大(大于256B)时,采用此寻址方法.
二,数据储存器静态RAM的扩展
由于单片机是面向测,控为主的,实际所需要的数据存储器的扩展容量不会很大,所以在扩展时为了电路的简单,一般使用静态RAM,如6116和6264.
图7-7为扩展单片6116时的电路.前面讲过,扩展单片程序存储器时,片选端直接接地即可,因为系统中不会再有其它程序存储器芯片.但扩展单片数据存储器时,其片选端能否直接接地则还要考虑应用系统中有无I/O口及外围设备扩展,如果有,则要统一进行片选选择.
图7-7 6116的扩展电路
三,作为数据储存器EEPROM的扩展
EEPROM兼有程序存储器与数据存储器的特点,故在单片机应用系统中既可作为程序存储器,又可作为数据存储器.作为程序存储器,其操作主要是程序运行操作,必须严格按照程序存储器的地址总线,数据总线,控制总线的联接方式.而将EEPROM作为数据存储器时,与单片机的接口较灵活,既可直接将EEPROM作为片外数据存储器扩展,也可以作为一般外围设备电路扩展,而不影响数据的存取.
图7-8为并行EEPROM的数据存储器扩展电路.图中2816A可按照典型的数据存储器扩展电路联接方式,如2814A(1)芯片.也可以作为外设电路,通过扩I/O口8255连接,如2816A(2).可以看出,作为数据存储器时其电路连接较为灵活.2816A(2)工作时,要使8255进入工作状态(P2.7使8255有效),2816A所需的地址采用通过8255用MOVX指令送入.
图7-8 28C16作为数据存储器的扩展电路
7.3 MCS-51系列单片机I/O口扩展
MCS-51单片机共有四个8位并行I/O口,但这些I/O口并不能完全提供给用户使用.只有对于片内有ROM/EPROM/FLASH-RAM单片机8051/8751/89C51,在不使用外部扩展时,才允许这四个I/O口作为用户I/O口使用.然而对于大多数使用8031以及使用8051/8751/89C51需外部扩展时,MCS-51单片机可提供给用户使用的I/O只有P1口和部分P3口线.因此,在大部分的MCS-51单片机应用系统设计中都不可避免地要进行I/O口的扩展.
扩展I/O口可以通过MCS-51单片机的数据总线进行,也可以利用移位寄存器通过MCS-51单片机的串行口进行.
7.3.1通过数据总线扩展
通过数据总线扩展I/O口,是采用外部数据存储器映射方式进行输入,输出的,与外部数据存储器的扩展在方法上是基本相同的.从功能上看,通过数据总线扩展的I/O口有两种基本类型:简单I/O口扩展和可编程I/O口的扩展.
一,采用简单并行I/O接口芯片扩展
P0口是数据总线口,通过P0口扩展I/O口时,P0口只能分时使用,故输出时,接口电路应具有锁存功能,如采用8D锁存器74LS273,74LS373,74LS377组成输出口;输入时,接口电路应能三态缓冲,如采用8位三态缓冲器74LS244组成输入口.
1.用三态门扩展8位输入并行口
图7-9是用74LS244通过P0口扩展的8位并行输入接口.74LS244由两组4位三态缓冲器组成,分别由选通端和控制.当它们为低电平时,这两组缓冲器被选通,数据从输入端A送到输出端Y. 和 同时由P2.7和相或后控制,由此可知74LS244的地址为7FFFH,其数据的输入使用以下几条指令即可:
MOVX DPTR,#7FFFH ;数据指针指向74LS244口地

MOVX A,@DPTR ;读入数据
图7-9 简单I/O口的扩展电路
2.用锁存器扩展简单的8位输出口
图7-9是用74LS273通过P0口扩展的8位并行输出接口.74LS273是带三态门控的锁存器,CLR为数据清零端,其为低电平时有效,故此处应接高电平.CLK为锁存时钟端,由P2.7和相或后控制,当同时为低电平时,将P0口的数据锁存到74LS273.因此74LS273的地址为7FFFH,和输入口地址相同,但由于它们分别由和信号控制,仍然不会发生冲突.其数据的输出使用以下几条指令即可:
MOVX DPTR,#7FFFH;数据指针指向 74LS273口地址
MOVX A,#data ;输出数据要通过累加器传送
MOVX @DPTR,A ;P0口通过74LS273输出数据
当要扩展多个简单的8位输入口和输出口,多个74LS244的选通端和和多个74LS273的锁存时钟CLK,应采用类似前面所讲述的多片EPROM扩展时的片选方法.但要注意8031的I/O口驱动能力,在实际应用时,要根据负载的大小适当增设驱动电路.
二,采用可编程并行I/O接口芯片扩展
在单片机接口中,常使用一些结构复杂的接口芯片,以完成各种复杂的操作.这类芯片一般具有多种功能,在使用前,必须由CPU对其编程,以确定其工作方式,之后才能使芯片按设定的方式进行操作,这就是可编程接口.下面将通过使用8255扩展并行I/O口重点说明这个问题.
1. 8255的初始化
使用8255时,首先要由CPU对8255写入控制命令字,有两种控制命令字:一个是方式选择控制字,另一个是C口按位置位/复位控制字,8255的各种工作方式都要由控制命令字来设定,这个设置过程称为"初始化".
(1)方式选择控制字(D7=1)
D0~D2三位用来对B组的端口进行工作方式设定.D2设置B口的工作方式,D2=1为方式1;D2=0为方式0.D1位设定B口的输入或输出,D1=1为输入;D1=0为输出.D0位设定C口的低半部,D0=1为输入,D0=0为输出.
D3~D6四位用来对A组的端口进行设定.D6D5组合起来设定A口工作方式,D6D5=00,为方式0;D6D5=01为方式1;D6D5=10和11都为方式2.D4位用来设定A口的输入或输出.D3位用来设定C口上半部的输入或输出,D3=1为输入,D3=0为输出.
(2)_ C口按位置/复位控制字(D7=0)
因为C口共有8个二进制位,要确定对其中某一位进行操作,就要在控制字中指定该位的编号.图中用了D3D2D1三位的编码与C口的某一位相对应,对指定位进行的操作则由D0确定,如D0=1时,将指定位置"1".D0=0则将指定位置"0".
2. 8255和8031的接口方法
MCS-51单片机与8255的接口逻辑简单,其接口电路如图7-10所示.图中,8255的片选信号及口地址选择线A0,A1分别由8031的P0.7和P0.0,P0.1经地址锁存后提供.故8255的A,B,C口及控制口地址分别为FF7CH,FF7DH,FF7EH,FF7FH.8255的复位端与8031的复位端相连,都接到8031的复位电路上.
_
图7-10 8031与8255接口电路
7.3.2通过串行口扩展
一,用并入串出移位寄存器扩展并行输入口
图7-11是利用两片74LS165扩展2个8位并行输入口的电路.74LS165是8位并行输入串行输出移位寄存器,单片机的RXD(P3.0)作为串行数据输入端与74LS165的串行输出端Q7相连;单片机的TXD(P3.1)为移位脉冲输出端,与所有的74LS164芯片的移位脉冲输入端CLK相连;用1根I/O线(P1.0)与74LS165的移位/置位端相连,来控制其移位与置位.当 为低电平时,并行数据置入74LS165的寄存器;当 为高电平时,开始串行移位.当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端SER)相连.
串行接收时,由RI引起中断或对RI查询来决定何时接受下一个字符(在采用查询方式时,也需预先关闭中断).
 单片机扩展中断的简便方法(zz)

 

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展,下面介绍两种简单的扩展方法:
  一、采用硬件请求和软件查询的方法:
这种方法是:把各个中断源通过硬件“或非”门引入到单片机外部中断源输入端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这样当外部中断时,通过“或非”门引起单片机中断,在中断服务程序中再通过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于软件查询的次序。其硬件连接和软件编程如下:
         

  Void zhongduan (void) interrupt 0 using 3 //中断函数
{
EX0=0;//关中断
If(P0_0=1) { *****}//中断查询
If(P0_1=1) { *****}//中断查询
If(P0_2=1) { *****}//中断查询
EX0=1;开中断
}

  二、用定时器/计数器作外部中断
单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负跳变时,计数器加一,当加一计数器溢出时,就向CPU发出中断,利用这个特性来扩展中断的方法是:首先把定时器/计数器设置成计数方式,并预置满值,把外部中断源输入到P3口第4引脚或第5引脚(计数器输入端),这样就可以利用定时器/计数器作为单片机外部中断了。注意这种方法的中断服务的入口地址应在000BH或001BH。
 

 

 

图7-11 利用串行口扩展并行输入口
下面程序为利用图7-11读入16位数据并存入8031的片内RAM30H和31H两个端单元中:
MOV R0,#30H ;建立指针
MOV R7,#02H ;字节计数初值
CLR P1.0 ;=0,并置入数据
SETB P1.0 ;=1,允许串行移位
LOOP:MOV SCON,#10H ;置串行口方式0,REN=1,RI=0
NB RI,$ ;等待一帧数据接受完
MOV A,SBUF ;读接受数据
MOV @R0,A ;存入RAM缓冲区
INC R0 ;调整指针
DJNZ R7,LOOP ;数据未接受完,继续
CLR RI ;清接收标志
二,采用串入并出移位寄存器扩展并行输出口
图7-12是利用两片74LS164扩展2个2位输出口的接口电路. 74LS164是8位串入并出移位寄存器,单片机的RXD(P3.0)为串行输出与74LS164数据输入端(1,2)相连;TXD(P3.1)为移位脉冲输出,与74LS164的时钟脉冲输出端(8)相连;由P1.0口线控制74LS164的清除端
(9).当 为低电平时,清除74LS165中的数据;当 为高电平时,开始串行移位.当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端A,B)相连.
图7-12 利用串行口扩展并行输出口
下面程序为利用图7-12扩展一个16位并行输出口,将8031的片内RAM30H和31H两个单元中的数据通过两片74LS164输出:
MOV R0,#30H ;建立指针
MOV R7,#02H ;字节计数初值
SETB P1.0 ;=1,清零端无效
LOOP:MOV SCON,#10H ;置串行口方式0,REN=1,RI=0
MOV A,@R0 ;取RAM缓冲区内容
MOV SBUF,A ;发送
JNB RI,$ ;等待一帧数据发送完
INC R0 ;调整指针
DJNZ R7,LOOP ;数据未发送完,继续
CLR TI ;清发送标志
应当指出,再两次发送过程中,两片74LS164的16位输出端是连续变化的.每个移位脉冲使数据自Q0向Q7方向移动一位,待两个字节全部发送完毕时,输出稳定下来.
小 结
在很多情况下,构成一个单片机应用系统时,考虑到传感器接口,伺服控制接口以及人机对话接口等的需要,必须在片外扩展相应的外围芯片,这就是单片机接口扩展.它包括程序存储器(ROM)扩展,数据存储器(RAM)扩展,I/O口扩展等.
MCS-51单片机片外引脚可以构成三总线结构,即地址总线(AB),数据总线(DB)和控制总线(CB),所有的外部芯片都是通过这三组总线进行扩展.由于P0口分时用作数据总线和地址总线的低8位,因此必须采用地址锁存器将P0口输出的低8位地址进行锁存.
根据地址总线宽度,在片外可扩展的程序存储器和数据存储器最大容量都为64KB,地址范围为0000H~FFFFH.扩展的程序存储器和数据存储器的地址范围虽然相同,但可通过不同的指令和控制信号加以区别.读片外程序存储器采用MOVC指令和 取指信号 ;读和写片外数据存储器采用MOVX指令和 ,
片外数据读,写信号.
扩展的I/O口与片外数据存储器采用统一编址,这样做的优点是不必为扩展的I/O另外提供地址线,减少单片机的引脚数.但当应用系统需要扩展较多的I/O口时,要占去大量的数据存储器的地址.
当片外扩展单一芯片(存储器和I/O芯片)时,该芯片的片选信号可以直接接地;当扩展多片程序存储器或多片数据存储器(包括I/O口芯片)时,所有芯片的片选端都必须按照地址线进行选择,常用线选法或地址译码法.
片外扩展的程序存储器常用EPROM和EEPROM,片外扩展的数据存储器常用静态RAM和EEPROM.扩展I/O口常用数据总线进行,在串行口不作它用时,还可以用串行口外接并入串出移位寄存器和串入并出移位寄存器,扩展并行输入口和并行输出口.用数据总线扩展并行I/O时,可采用简单的8位三态缓冲器和8位三态锁存器扩展并行输入口和输出口,也可以采用可编程I/O芯片扩展并行I/O口.
思考题与习题七
1.MCS-51单片机与外部扩展的存储器相接时,为何低8位地址信号需通过地址锁存器,而高8位不需经过地址锁存器
2.在MCS-51扩展系统中,程序存储器和数据存储器共有16位地址和8位数据线,为什么两个存储空间不会发生冲突
3.利用74LS138设计一个译码电路,分别选中8片6116,且列出各芯片所占的地址空间范围.
4.程序存储器的扩展和数据存储器的扩展有何异同 试在8031芯片外采用2732作ROM,6116作RAM,扩展具有12KB ROM和6KB RAM的存储系统.
5.8255芯片内部有哪几个主要部分 各部分的功能如何
6.用8255和8031构成一个EPROM2732的编程器接口,该系统含2K字节的EPROM外部程序存储器和两片6116共4K字节的数据存储器.用8255作为EPROM2732的编程器接口,8255的A,B,C口均设置为方式0输出,A口作为编程数据输出口,B口为编程器的低8位地址输出口,PC0~PC3为高4位地址输出口,PC7为编程信号输出端.试设计该编程器的硬件电路和编程写出子程序.
7.试利用8031的串行口设计一个接口电路和相应的软件,用于读取8位开关信号,并用8个LED显示对应开关的状态.
 单片机扩展中断的简便方法(zz)

 

MCS—51系列单片机内部只有两个外部中断源输入端,当外部中断源多于两个时,就必须进行扩展,下面介绍两种简单的扩展方法:
  一、采用硬件请求和软件查询的方法:
这种方法是:把各个中断源通过硬件“或非”门引入到单片机外部中断源输入端(INT0或INT1),同时再把外部中断源送到单片机的某个输入输出端口,这样当外部中断时,通过“或非”门引起单片机中断,在中断服务程序中再通过软件查询,进而转相应的中断服务程序。显然,这种方法的中断优先级取决于软件查询的次序。其硬件连接和软件编程如下:
         

  Void zhongduan (void) interrupt 0 using 3 //中断函数
{
EX0=0;//关中断
If(P0_0=1) { *****}//中断查询
If(P0_1=1) { *****}//中断查询
If(P0_2=1) { *****}//中断查询
EX0=1;开中断
}

  二、用定时器/计数器作外部中断
单片机的定时器/计数器是一个加一计数器,每当计数输入端有一个“1—0”的负跳变时,计数器加一,当加一计数器溢出时,就向CPU发出中断,利用这个特性来扩展中断的方法是:首先把定时器/计数器设置成计数方式,并预置满值,把外部中断源输入到P3口第4引脚或第5引脚(计数器输入端),这样就可以利用定时器/计数器作为单片机外部中断了。注意这种方法的中断服务的入口地址应在000BH或001BH。 
 

关闭窗口
上一篇:电话遥控器