开发板上面使用的是DIP封装(双列直插式),有40只引脚!
40只引脚按其功能来分,可分为3类:
该类包含:Vcc
,Vss
,XTAL1
,XTAL2
。
Vcc
(40脚)接+5V
电源;Vss
(20脚)接地。 XTAL1
和XTAL2
(18、19号引脚)分别接我们开发板的外部晶振,为单片机提供工作频率节拍。有人说实物上有白线表示20脚附近是3个
GND
,那是因为它是芯片引出来的排针,有时候需要接各种外设而提供VCC
和GND
的端口,它并不是芯片内部。
RST
(RESET)9号引脚是复位信号输入端,当单片机运行时,在此引脚加上持续两个机器周期的高电平时,就可以完成复位操作。Vpd
为本引脚的第二功能,即备用电源输入端。当主电源Vcc
发生故障,降低到某一规定值的低电平时,将+5v
电源自动接入RST
端,为内部RAM提供备用电源,从而保证单片机复位后能继续运行。有人不是很理解复位,简单说一下就是单片机在运行程序时,假设总共有50行代码,你关闭电源时单片机恰好运行在20行代码,那么你下次开机时,程序必须从头开始运行,有个叫程序指针的东西就会自动从20行转到第1行从而完成自动复位。手动复位就是程序执行一般,手动让程序从头开始执行。
EA
为内外部程序储存器选择端(31号引脚)。当EA
为高电平时,单片机访问内部程序储存空间,为低电平时访问外部程序存储空间。Vpp
编程电压的输入端。ALE
(30号引脚)为地址所存允许信号,PROG
为对片内为EPROMS
单片机编写程序时,此引脚做编程脉冲输入。PSEN
(29号引脚)当单片机访问外部程序储存器时。此引脚为读取读取外部储存选通信号。早期的单片机内部存储空间比较小,需要与外部程序存储空间一起使用,所以诞生了这些引脚,但是现在的单片机内部存储空间足够使用,所以这些引脚在现在没什么用,了解即可。重点是理解前面的
RST
引脚。
P0
是三态I/O口,P1
口内部有上拉普通准双向IO口,P2
口内部有上拉普通准双向I/O口,P3
口内部有上拉普通准双向I/O口(有第二功能,可以通过配置特殊功能寄存来实现)
这里需要注意的是P0
口如果需要接高电平,那么我们需要接一个上拉电阻;而P2
、P1
口则不需要,除此之外,P3
口还有第二功能。
P3
口各引脚第二功能定义:
- P3.0: RXD串行口输入
- P3.1: TXD串行口输出
- P3.2: INT0外部中断0输入
- P3.3: INT1外部中断1输入
- P3.4: T0定时器0外部输入
- P3.5: T1定时器1外部输入
- P3.6:WR外部写控制
- P3.7:RD外部读控制
中断系统中,有很多种中断,比如串口中断、外部中断、定时器中断……,我们后面慢慢学,今天这里只是了解中断系统。
什么是中断系统?
基本解释:
计算机执行某程序时,发生了紧急事件或有特殊请求,CPU暂停某程序的执行,转而去处理上述事件或请求,处理完毕后再重新执行某程序的过程叫做中断。
为了让我们更加方便的理解中断这个概念,举例:假设你正在吃饭,这时接到快递员电话叫你下楼取快递只等5分钟,这就是中断请求。然后你回答:“好的,我现在就来”这就是中断响应。接着你停止吃饭下楼去取快递,这就是中断处理;取完快递,你再回来接着吃饭,这就叫做中断返回。从以上可以看出,中断分为4个步骤: 中断请求->中断响应->中断处理->中断返回。
其实如果学习了计算机组成原理或操作系统,这个比较号好理解的,这里的中断步骤太非专业化了,你甚至可以熟悉中断的整个流程并且由什么完成。
好理解吧,学了计算机组成原理我们还知道通道传送方式。
数据传送的双方平时各自做自己的工作,一旦甲方要求与乙方进行数据传送,就主动发出信号提出申请,乙方接到申请后若同意传送,安排好当前的工作,再响应与甲方发生数据传送。完事后,回去继续做打断前的工作。
中断功能强弱是计算机性能优劣的重要标志:
51子系列允许5个中断源:
TCON
的低4位控制。TCON
和SCON
中。STC89C51RC/RD+
系列单片机CPU对中断源的开放或屏蔽,每一个中断源是否被允许中断,是由内部的中断允许寄存器IE (地址为A8H
)和XICON
(地址为COH
) 控制的。
允许中断,结合上一部分的结构图,说的就是IE(允许中断寄存器)部分,里面有一个总开关EA,只有总开关EA=1被打开时,各中断才能够允许进入下一阶段;除了总开关EA要打开之外,各种中断对应的开关也需要打开,比如INT0
要打开对应的EX0,T0
要打开对应的ET0……此外,IE的一个显著特征是可位寻址,可位寻址的体现在我们写代码时就是可以直接赋值,比如EA=1
,EX0=1
等等。
首先认识一个寄存器:TCON
。TCON
为定时器/计数器T0、T1
的控制寄存器,同时也锁存T0、T1
溢出中断源和外部请求中断源等,其也是可位寻址的。
TF1
:T1溢出中断标志。T1被允许计数以后,从初值开始加1计数。当产生溢出时由硬件置“1”,TF1向CPU请求中断,一直保持到CPU响应中断时,才由硬件清“0” (也可由查询软件清“0”)TR1
:定时器1的运行控制位。TF0
:T0溢出中断标志。T0被允许计数以后,从初值开始加1计数,当产生溢出时,由硬件置“1”,TFO向CPU请求中断,一直保持CPU响应该中断时,才由硬件清0(也可由查询软件清0)。TR0
:定时器0的运行控制位。IE1
:外部中断1请求源(INT1/P3.3)
标志。IE1=1,外部中断向CPU请求中断,当CPU响应该中断时由硬件清“0”。IT1
:外部中断1中断源类型选择位。IT1=0
,INT1/P3.3
引脚上的低电平信号可触发外部中断;IT1=1
,外部中断1为下降沿触发方式。IE0
:外部中断0请求源 (INTO/P3.2)
标志。IE0=1
外部中断0向CPU请求中断,当CPU响应外部中断时,由硬件清“0”。IT0
:外部中断0中断源类型选择位。IT0=0
,INTO/P3.2
引脚上的低电平可触发外部中断0;IT0=1,外部中断0为下降沿触发方式。总共有8位,上一部分的图中只显示了4位,其余4位的功能如上所示,定时器和计数器是同一种中断,而该类中断与外部中断一起均受
TCON
的控制。
中断优先级处理原则(对同时发生多个中断申请时):
内部查询顺序:在同时收到几个同一优先级的中断请求时,哪一个中断请求能优先得到响应,取决于内部的查询顺序。这相当于在同一优先级内,还同时存在另一辅助优先级结构,其查询顺序如下:
中断处理函数模型:
void 函数名() interrupt 2 //普通函数基础上,加关键字interrupt和入口号
{
中断处理语句
}