第六章mcs-51单片机IO端口
- 格式:ppt
- 大小:993.50 KB
- 文档页数:15
单片机I/O口定义I/O端口又称为I/O接口,也叫做I/O通道或I/O通道。
I/O端口是MCS-51单片机对外部实现控制和信息交换的必经之路,是一个过渡的集成电路,用于信息传送过程中的速度匹配和增强它的负载能力。
I/O端口右串行和并行之分,串行I/O端口一次只能传送一位二进制信息,并行I/O端口一次可以传送一组(8位)二进制信息。
并行I/O端口8051有四个并行I/O端口,分别命名为P0、P1、P2和P3,在这四个并行I/O端口中,每个端口都有双向I/O功能。
即CPU即可以从四个并行I/O端口中的任何一个输出数据,又可以从它们那里输入数据。
每个I/O端口内部都有一个8位数据输出锁存器和一个8位数据输入缓冲器,四个数据输出锁存器和端口号P0、P1、P2和P3同名,皆为特殊功能寄存器SFR中的一个。
因此,CPU数据从并行I/O端口输出时可以得到锁存,数据输入时可以得到缓冲。
四个并行I/O端口在结构上并不相同,因此它们在功能和用途上的差异较大。
P0口和P2口内部均有一个受控制器控制的二选一选择电路,故它们除可以用作通用I/O口外,还具有特殊的功能。
例如:P0可以输出片外存储器的低八位地址码和读写数据,P2口可以输出片外存储器的高八位地址码,等等。
P1口常作为通用I/O口使用,为CPU传送用户数据;P3口除可以作为通用I/O口使用外,还具有第二功能。
在四个并行I/O端口中,只有P0口是真正的双向I/O口,故它具有较大的负载能力,最多可以推动8个LSTTL门,其余3个I/O口是准双向I/O口,只能推动4个LSTTL门。
四个并行I/O端口作为通用I/O使用时,共有写端口、读端口和读引脚三种操作方式,写端口实际上是输出数据,是把累加器A或其他寄存器中的数据传送到端口锁存器中,然后由端口自动从端口引脚线上输出。
读端口不是真正的从外部输入数据,而是把端口锁存器中的输出数据读到CPU的累加器A中。
读引脚才是真正的输入外部数据的操作,是从端口引脚线上读入外部的输入数据。
单片机IO口结构及上拉电阻MCS-51有4组8位I/O口:P0、P1、P2和P3口,P1、P2和P3为准双向口,P0口则为双向三态输入输出口,下面我们分别介绍这几个口线。
一、P0口和P2口图1和图2为P0口和P2口其中一位的电路图。
由图可见,电路中包含一个数据输出锁存器(D触发器)和两个三态数据输入缓冲器,另外还有一个数据输出的驱动(T1和T2)和控制电路。
这两组口线用来作为CPU与外部数据存储器、外部程序存储器和I/O扩展口,而不能象P1、P3直接用作输出口。
它们一起可以作为外部地址总线,P0口身兼两职,既可作为地址总线,也可作为数据总线。
图1 单片机P0口内部一位结构图图2 单片机P0口内部一位结构图P2口作为外部数据存储器或程序存储器的地址总线的高8位输出口AB8-AB15,P0口由ALE选通作为地址总线的低8位输出口AB0-AB7。
外部的程序存储器由PSEN信号选通,数据存储器则由WR和RD读写信号选通,因为2^16=64k,所以MCS-51最大可外接64kB的程序存储器和数据存储器。
二、P1口图3为P1口其中一位的电路图,P1口为8位准双向口,每一位均可单独定义为输入或输出口,当作为输入口时,1写入锁存器,Q(非)=0,T2截止,内上拉电阻将电位拉至"1",此时该口输出为1,当0写入锁存器,Q(非)=1,T2导通,输出则为0。
图3 单片机P2口内部一位结构图作为输入口时,锁存器置1,Q(非)=0,T2截止,此时该位既可以把外部电路拉成低电平,也可由内部上拉电阻拉成高电平,正因为这个原因,所以P1口常称为准双向口。
需要说明的是,作为输入口使用时,有两种情况:1.首先是读锁存器的内容,进行处理后再写到锁存器中,这种操作即读—修改—写操作,象JBC(逻辑判断)、CPL(取反)、INC(递增)、DEC(递减)、ANL(与逻辑)和ORL(逻辑或)指令均属于这类操作。
2.读P1口线状态时,打开三态门G2,将外部状态读入CPU。
第六章MCS-51的定时/计数器1.如果采用晶振的频率为3MHz,定时器/计数器工作方式0、1、2下,其最大的定时时间为多少?解答:因为机器周期,所以定时器/计数器工作方式0下,其最大定时时间为;同样可以求得方式1下的最大定时时间为262.144ms;方式2下的最大定时时间为1024ms。
2.定时/计数器用作定时器时,其计数脉冲由谁提供?定时时间与哪些因素有关?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号12分频后提供。
定时时间与时钟频率和定时初值有关。
3.定时/计数器用作定时器时,对外界计数频率有何限制?答:由于确认1次负跳变要花2个机器周期,即24个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的1/24。
4.采用定时器/计数器T0对外部脉冲进行计数,每计数100个脉冲后,T0转为定时工作方式。
定时1ms后,又转为计数方式,如此循环不止。
假定MCS-51单片机的晶体振荡器的频率为6MHz,请使用方式1实现,要求编写出程序。
解答:定时器/计数器T0在计数和定时工作完成后,均采用中断方式工作。
除了第一次计数工作方式设置在主程序完成外,后面的定时或计数工作方式分别在中断程序完成,用一标志位识别下一轮定时器/计数器T0的工作方式。
编写程序如下:ORG 0000HLJMP MAINORG 000BHLJMP IT0PMAIN: MOV TMOD,#06H ;定时器/计数器T0为计数方式2MOV TL0,#156 ;计数100个脉冲的初值赋值MOV TH0,#156SETB GATE ;打开计数门SETB TR0 ;启动T0,开始计数SETB ET0 ;允许T0中断SETB EA ;CPU开中断CLR F0 ;设置下一轮为定时方式的标志位WAIT: AJMP WAITIT0P: CLR EA ;关中断JB F0,COUNT ;F0=1,转计数方式设置MOV TMOD,#00H ;定时器/计数器T0为定时方式0MOV TH0,#0FEH ;定时1ms初值赋值MOV TL0,#0CHSETB EARETICOUNT: MOV TMOD,#06HMOV TL0,#156SETB EARETI5. 定时器/计数器的工作方式2有什么特点?适用于哪些应用场合?答:定时器/计数器的工作方式2具有自动恢复初值的特点,适用于精确定时,比如波特率的产生。
51单片机io口工作的基本原理51单片机是一种广泛应用于嵌入式系统开发的微控制器,其基本原理是通过控制输入/输出(I/O)口的电平状态来实现与外部设备的连接与交互。
单片机的I/O口被称为通用I/O口(General Purpose I/O,GPIO),可以通过设置其输入与输出模式以及控制电平状态来与外部设备进行数据的传输与控制。
在51单片机中,GPIO口可以进行两种模式的设置:输入模式和输出模式。
在输入模式下,GPIO口可以将外部设备的电平状态作为输入信号接收,并将该信号传送至单片机内部进行处理。
在输出模式下,单片机可以通过控制GPIO口的电平状态向外部设备发送数据或控制信号。
当GPIO口设置为输入模式时,单片机内部会初始化一个输入缓冲区,用于存储外部设备传入的电平信号。
当外部设备改变电平状态时,单片机会及时检测到,并将相应的电平状态记录在输入缓冲区中。
通过读取输入缓冲区的数值,单片机可以获取外部设备传入的数据。
这样,单片机就能够实现与外部设备的数据交互。
当GPIO口设置为输出模式时,单片机内部会初始化一个输出缓冲区,用于存储将要发送至外部设备的数据。
根据所需的传输方式,单片机可以通过改变输出缓冲区的数值来控制GPIO口的电平状态。
当输出缓冲区的数值发生改变时,单片机会通过输出电路将该数值转换为相应的电平状态,从而将数据或控制信号送至外部设备。
除了设置输入/输出模式以及控制电平状态之外,单片机还可以对GPIO口进行中断配置以及上下拉电阻的设置。
中断配置可以实现在特定事件发生时自动跳转至相应的中断服务函数,从而实现对外部设备的实时响应。
上下拉电阻则可以提供电平稳定性,防止输入口因为无输入信号而漂移到不确定状态。
综上所述,51单片机的I/O口工作基于设置输入/输出模式以及控制电平状态,通过与外部设备进行电平交互来实现数据的传输与控制。
通过合理配置中断和上下拉电阻,单片机可以实现高效稳定的IO口工作,为嵌入式系统开发提供强大的功能与灵活性。
51单片机各引脚及端口详解51单片机引脚功能:MCS-51是标准的40引脚双列直插式集成电路芯片,引脚分布请参照----单片机引脚图:l ~ P0口8位双向口线(在引脚的39~32号端子)。
l ~ P1口8位双向口线(在引脚的1~8号端子)。
l ~ P2口8位双向口线(在引脚的21~28号端子)。
l ~ P2口8位双向口线(在引脚的10~17号端子)。
这4个I/O口具有不完全相同的功能,大家可得学好了,其它书本里虽然有,但写的太深,对于初学者来说很难理解的,我这里都是按我自已的表达方式来写的,相信你也能够理解的。
P0口有三个功能:1、外部扩展存储器时,当做数据总线(如图1中的D0~D7为数据总线接口)2、外部扩展存储器时,当作地址总线(如图1中的A0~A7为地址总线接口)3、不扩展时,可做一般的I/O使用,但内部无上拉电阻,作为输入或输出时应在外部接上拉电阻。
P1口只做I/O口使用:其内部有上拉电阻。
P2口有两个功能:1、扩展外部存储器时,当作地址总线使用2、做一般I/O口使用,其内部有上拉电阻;P3口有两个功能:除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置,具体功能请参考我们后面的引脚说明。
有内部EPROM的单片机芯片(例如8751),为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的,即:编程脉冲:30脚(ALE/PROG)编程电压(25V):31脚(EA/Vpp)接触过工业设备的兄弟可能会看到有些印刷线路板上会有一个电池,这个电池是干什么用的呢这就是单片机的备用电源,当外接电源下降到下限值时,备用电源就会经第二功能的方式由第9脚(即RST/VPD)引入,以保护内部RAM中的信息不会丢失。
在介绍这四个I/O口时提到了一个“上拉电阻”那么上拉电阻又是一个什么东东呢他起什么作用呢都说了是电阻那当然就是一个电阻啦,当作为输入时,上拉电阻将其电位拉高,若输入为低电平则可提供电流源;所以如果P0口如果作为输入时,处在高阻抗状态,只有外接一个上拉电阻才能有效。