《单片机知识点.doc》由会员分享,可在线阅读,更多相关《单片机知识点.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精品文档,仅供学习与交流,如有侵权请联系网站删除第二章一、AT89C51内部结构和引脚功能1、AT89C51单片机内部结构框图2、AT89C51单片机内部结构u 中央处理器:中央处理器(CPU)是整个单片机的核心部件,是8位数据宽度的处理器,能处理8位二进制数据或代码,CPU负责控制、指挥和调度整个单元系统协调的工作,完成运算和控制输入输出功能等操作。u 数据存储器(RAM):89C51内部有128字节数据存储器(RAM)和21个专用寄存器单元,它们是统一编址的,专用寄存器有专门的用途,通常用于存放控制指令数据,不能用作用户数据的存放,用户能使用的RAM只有128个字节,可存放读写的数据,运算
2、的中间结果或用户定义的字型表。u 程序存储器(ROM): 89C51共有4K字节程序存储器(FLASH ROM),用于存放用户程序和数据表格。 u 定时/计数器:89C51有两个16位的可编程定时/计数器,以实现定时或计数,当定时/计数器产生溢出时,可用中断方式控制程序转向。u 并行输入输出(I/O)口:89C51共有4个8位的并行I/O口(P0、 P1、P2、P3),用于对外部数据的传输。u 全双工串行口:89C51内置一个全双工异步串行通信口,用于与其它设备间的串行数据传送,该串行口既可以用作异步通信收发器,也可以当同步移位器使用。u 中断系统:89C51具备较完善的中断功能,有五个中断源
3、(两个外中断、两个定时/计数器中断和一个串行中断),可基本满足不同的控制要求,并具有2级的优先级别选择。u 时钟电路:89C51内置最高频率达12MHz的时钟电路,用于产生整个单片机运行的时序脉冲,但需外接晶体振荡器和振荡电容。 二、AT89C51引脚说明 1电源引脚Pin20:接地脚 Pin40:正电源脚,接+5V电源2.时钟引脚这两个管脚用来为单片机提供时钟信号Pin19:时钟XTAL1脚,晶体振荡电路的输入端 Pin18:时钟XTAL2脚,晶体振荡电路的输出端两种接法:使用内部振荡电路时,外接石英晶体 外部振荡脉冲输入时,接外部时钟振荡脉冲,悬空不用。3.控制线Pin9:RESET/Vp
4、d复位信号脚 /备用电源 正常工作时,RST(RESET)端为复位信号输入端 在VCC掉电情况下,该引脚还可接上备用电源,由VPD向内 供电,以保持内RAM中的数据不丢失。Pin30:ALE/ 地址锁存允许信号 ALE:当访问外部存储器时, ALE(允许地址锁存信号)以每机器周期两次的信号输出, 用于锁存出现在P0口的低8位地址。 PROG:在对闪存进行编程期间(也称“烧录程序”)时,此引脚用于输入编程脉冲,此时为低电平有效Pin31:EA/Vpp外部程序存储器地址允许输入端 正常工作时,EA为内外ROM选择端 对闪存进行编程期间,此引脚用于施加编程电源VPPPin29: 外部程序存储器读选通
5、信号,在从片外ROM中读取指令时,PSEN送出片外ROM的读信号(低电平),一般接到外ROM的读控制端4.I/OPin39-Pin32为P0.0-P0.7输入输出脚 普通的I/O口 作为与外部传送数据的8位数据总线(D0D7)。作为扩展外部存储器时的低8位地址总线(A0A7)Pin1-Pin8为P1.0-P1.7输入输出脚 普通的I/O口Pin21-Pin28为P2.0-P2.7输入输出脚 普通的I/O口 作为扩展外部存储器时的高8位地址总线(A8 A15)Pin10-Pin17为P3.0-P3.7输入输出脚 普通的I/O口 第二功能 P3口的第二功能表三、 时钟电路u 单片机的时钟信号用来提
6、供单片机内部各种操作的时间基准,u 时钟电路用来产生单片机工作所需要的时钟信号。图24 HMOS型MCS51单片机时钟产生方式 (a) 内部振荡器方式; (b) 外部振荡器方式 (a)采用内部时钟方式时,片内的高增益反相放大器通过XTAL1、 XTAL2外接作为反馈元件的片外晶体振荡器(呈感性)与电容组成的并联谐振回路构成一个自激振荡器, 向内部时钟电路提供振荡时钟。 振荡器的频率主要取决于晶体的振荡频率, 一般晶体可在1.212 MHz之间任选, 电容C1、 C2可在530 pF之间选择, 电容的大小对振荡频率有微小的影响, 可起频率微调作用2、周期的概念u (a) 振荡周期:为单片机提供定
7、时信号的振荡源的周期,即振荡频率的倒数(晶振周期或外加振荡源周期),用P表示振荡频率:振荡器元件(晶振)的频率u (b)时钟周期:振荡周期的二倍,用S表示内部时钟发生器是二分频触发器,对振荡频率二分频u (c)机器周期:6个时钟周期或12个振荡周期一个机器周期由6个状态(时钟)周期组成u (d)指令周期:执行一条指令所占用的时间 用机器周期个数表示,可查附录AT89C51 :最高振荡频率24MHZu (e)ALE信号:允许地址锁存信号,当访问外部存储器时, ALE以每机器周期两次的信号输出, 用于锁存出现在P0口的低8位地址。 输出周期性的信号,频率为振荡频率的1/6 ,周期为机器周期的1/2
8、。1复位 以便中央处理器 及其他功能部件都处于一个确定的初始 状态,并从这个状态开始工作 a.单片机上电后,对单片机的初始化,从ROM中地址为0000H处开始执行程序 b.程序运行出错或操作错误进入死锁状态,复位后,重新开始u 2复位信号 在单片机的RST端(9)至少维持2个机器周期以上的高电平,高电平有效,再从高电平到底电平,单片机完成复位,从0000H地址开始执行程序u 3.复位后的状态 复位后,大部分寄存器清0,特例是SP=07H,P0-P3=FFH,但不影响片内RAM存放的内容, 而ALE、 在复位期间将输出高电平。n 在复位电路中, 构成微分电路,在接电瞬间,产生一个微分脉冲,其宽度
9、若大于个机器周期,型单片机将复位。为保证微分脉冲宽度足够大, 时间常数应大于个机器周期。一般取电容、 电阻。 一、AT89C51存储器的组成程序存储器:只读存储器,用于存放程序。具有非易失性,掉电后其内的信息依然存在片内ROM(FLASH ROM):用来存放程序和表格常数,4KB。片外ROM:用来存放程序,片内不够用时可以外扩ROM,内ROM+ 外ROM 64K数据存储器:随机读写存储器,用于存放数据 。具有易失性,芯片掉电后,其内的信息消失。 片内RAM:用来存放运算过程中的数据,256B(片内数据+SFR)。 片外RAM:在数据采集系统中可存放大量的数据,可扩展64KBu 单片机的工作是按
10、照事先编制好的程序命令一条条循序执行的, 程序存储器就是用来存放这些已编好的程序和表格常数的u 片内ROM是4KB的FLASH ROM,只能读,需要用编程器写入程序u 4KB的ROM的地址范围0000H0FFFH,有一个专门的程序计数器地址指针PC, PC用于存放CPU下一条要执行的指令地址, 是一个 16 位的专用寄存器, 可寻址范围是0000H0FFFFH共 64 K.u 片内不够用时,可以外扩ROM,内ROM+ 外ROM 64Ku EA管脚作用=0,全访问片外ROM;=1,先访问片内,超出4KB后,访问片外u 几个特殊地址: 0000H:系统复位后的启动地址,用户程序的第一条指令(转移指
11、令) 中断程序的入口地址:0003H,000BH,0013H,001BH,0023H 三、数据存储器 1. 片内数据存储器u 片内RAM为 256 字节, 地址范围为00HFFH, 分为两大部分: 低 128 字(00H7FH)为真正的RAM区; 高 128 字节(80HFFH)为特殊功能寄存器区SFR低(三个区域) 工作寄存器区 1.工作寄存器区 是指00H1FH区, 共分4个组, 每组有8个单元, 共32个内部RAM单元。 2.作为工作寄存器使用的8个单元,又称为R0R73.程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择哪一组作为工作寄存器使用。CPU通过软件修改
12、PSW中RS0和RS1两位的状态, 就可任选一个工作寄存器工作。每组个寄存器每个寄存器都是8位4.每次只能有1组作为工作寄存器使用(R0,R1,R2,R3,R4,R5,R6,R7), 其它各组可以作为一般的数据缓冲区使用。u 位寻址区1、位寻址区是指 20H2FH单元,共16个单元。 2、 位寻址区的 16个单元(共计128位)的每1位都有一个8位表示的位地址, 位地址范围为00H1FH。3、位寻址区的每1位都可当作软件触发器, 由程序直接进行位处理。4、 同样, 位寻址的RAM单元也可以按字节操作作为一般的数据缓冲 区。u 数据缓冲区 1.30H37H,数据缓冲区 2.堆栈区也在此区中堆栈区
13、高(四个区域u 高128B的RAM单元中有21个单元可用,称为SFR(特殊功能寄存器)。这21个SFR分散在高128B(80HFFH)的地址空间内u 凡是地址能被8整除的SFR既可字节寻址,也可位寻址SFR特殊功能)累加器(E0H) 累加器 是型单片机中最常用的寄存器。许多指令的操作数取自,许多运算的结果存放在 中。乘除法指令必须通过 进行。累加器 的指令助记符为。 ()寄存器(F0H) 在-型单片机乘除法指令中要用到寄存器。除此外,可作为一般寄存器用。()程序状态字寄存器(D0H) 也称为标志寄存器,存放各有关标志。其结构和定义如表- 所示。CY:进位标志。有进位借位时CY=1,否则CY=0
14、;AC:半进位标志。当D3位向D4位产生进位借位时AC=1,常用于十进制调整运算中;F0:用户可设定的标志位,可置位复位,也可供测试。RS1、RS0:四个通用寄存器组的选择位,该两位的四种组合状态用来选择03寄存器组。见表1-2。OV:溢出标志。当带符号数运算结果超出-128+127范围时OV=1,否则OV=0。当无符号数乘法结果超过255时,或当无符号数除法的除数为0时,OV=1,否则OV=0。P:奇偶校验标志。每条指令执行完,若A中“1”的个数为奇数时P=1,否则P=0,即奇偶校验方式。()数据指针(83H,82H) 数据指针是一个位的特殊功能寄存器,由两个位寄存器 和 组成, 是的高位,
15、是的低位,既可合并作为一个位寄存器,又可分开按位寄存器单独操作。()堆栈指针(81H) 堆栈是 用于暂时存放部分数据的“仓库”。在中,由内 中若干存储单元组成。存储单元的个数称为堆栈的深度(可理解为仓库容量)(6)其他寄存器 与单片机定时、中断、串行、并行通信功能相关的寄存器2. 片外数据存储器u 若片内RAM不够用(数据采集系统),可扩展片外数据存储器u 片外最大可扩展64KB(0000HFFFFH),和片内RAM独立编址u 当访问片内00HFFH区域和片外0000HFFFFH区域时,用不同的指令来区分(MOV,MOVX)u 片外数据存储区的指针:DPTR第五章一、四个口的功能和第二功能u
16、单片机经常要和外设之间传输数据(输入,输出),P0,P1,P2,P3就是可以和外设完成并行数据传输的接口。u 一、P1口1.结构u P1由8个这样的电路组成 u 锁存器起输出锁存作用,u 场效应管(FET)V组成输出驱动器, 以增大带负载能力; u 三态门1是用于读锁存器端口;u 三态门2是引脚输入缓冲器; 其1位的结构原理如图27所示。u 2.功能u (1)输出(外接发光二极管)u MOV P1,#data(P1=0Xdata)u 内部总线输出“0”,则D=0,u Q=1,V导通,则输出点=0u (2)输入(外接开关)u a.读引脚u MOV A,P1(A=P1)u 读引脚脉冲有效,为高电平
17、,把该三态缓冲器打开,这样端口引脚上的数据经过三态门缓冲器读入到内部总线。u 如果输入数据走该通道,那么V是否对引脚有影响?有的。u 如果锁存器原来寄存的数据Q=0,那么则V导通,引脚始终被嵌位在低电平,不可能输入外接电路的高电平。所以在输入前,必须用输出指令向锁存器写入“1”,使V截止(断开),保证单片机输入的电平与外接电路电平相同。所以P0口被称为一个准双向口。u MOV P1,#0FFH(P1=0XFFH)u MOV A,P1(ACC=P1)u 复位时?u b.读锁存器u 如:ANL P0,A 称为“读-改-写”二、P0口1.结构与P1不同:多路选择开关(选择它的两种功能)V1:输出驱动
18、器2功能(1)输出开关连接B点,V1截止(其它同P1口) 因为输出驱动器漏极开路,所以外接上拉电阻(2)输入(准双向口,先写入“1”)外接上拉电阻(其它同P1口)(3)地址/数据线开关接在A点,输出地址信号(低8位)或输出/输入数据信号不需接上拉电阻u 三、P2口1.结构u 多路选择开关(接在Q上)u 反相器、Q0输出驱动u 2.功能u (1)输出(同P1口)u (2)输入(同P1口)u (3)地址总线(高8位) 与P0口构成16位地址u 四、P3口u 1.结构u 2.功能u (1)输出(同P1口)u (2)输入(同P1口)u (3)第二功能u 第二功能输入:u 缓冲器2关闭, P3口的口线状
19、态通过缓冲器0送入“第二功能输入端”u 第二功能输出:u Q端为高电平时, P3口的口线状态就取决于第2功能输出线的状态。 u P3第二功能各引脚功能定义:u P3.0:RXD串行口输入u P3.1:TXD串行口输出u P3.2:INT0外部中断0输入u P3.3:INT1外部中断1输入u P3.4:T0定时器0外部输入 P3.5:T1定时器1外部输入u P3.6:WR外部写控制 P3.7:RD外部读控制总结:准双向口通用I/O口上拉电阻(I/O口)其它用途P0口 数据线/低8位地址线P1口P2口高8位地址线P3口总结:第二功能u 五、带负载能力(驱动能力)u 负载能力就是说能够在一定的电压(
20、0-5V)下面能够灌入或拉出的最大电流。u 拉电流和灌电流是衡量电路输出驱动能力的参数,这种说法一般用在数字电路中。u 1.灌电流(输出低电平)u 当负载的另一端接VCC/VDD,输出端口输出低电平时,就会产生灌电流。u 就是从负载流向输出端口,“灌进去”的电流,一般是要吸收负载的电流,其吸收电流的数值叫“灌电流”。 u 2.拉电流(输出高电平)u 当负载的另一端接地,输出端口输出高电平时,就会产生拉电流;u 就是从输出端口流向负载,“拉出来”的电流,一般是对负载提供电流,其提供电流的数值叫“拉电流”. u 一般地, LSTTL即低功耗肖特基晶体管。1个LSTTL:拉电流(高电平)0.20uA
21、,灌电流(低电平)0.35mA。u 所以灌电流一般它比拉电流要大得多。u 3.I/O口驱动能力 u P0:灌入,驱动8个(没有高电平能力,必须上拉电阻),2.88mAu P1-3:灌入、拉,驱动4个,1.44mAu 51系列的芯片低电平的驱动能力比较大一点 。举例说明流水灯u 4个引脚,每个引脚灌电流10mA每个端口8个引脚灌电流之和:P0 26mA P1、P2、P3 15mA1.要求P1.0所接的灯闪烁u #include u sbit LED=P10;u void Delay(unsigned int a)u unsigned char i;u while(-a!= 0)u for(i=0
22、;i125;i+); u void main() u while (1) u LED=0;u Delay(1000);u LED=1;u Delay(1000);u 红色段可改写为: LED=LED;u DELAY(1000);为了增加单片机I/O口的驱动能力,可以使用三极管4148、4007、3904、3906、8050、8550、9012、9013或驱动芯片74HC245,74HC574。放大电流、非门、ULN200374LS245是我们常用的芯片,用来驱动led或者其他的设备,它是8路同相三态双向总线收发器或驱动器,可双向传输数据当片选端/CE为低电平有效时, AB/BA=“0”,信号由
23、 B 向 A 传输; AB/BA=“1”,信号由 A 向 B 传输;(或者加三极管)共阴数码管 共阳数码管 8050 8550 ULN2003:反相驱动芯片,高压大电流达林顿晶体管阵列系列产品,具有电流增益高(大于1000)、工作电压高(大于50V) 、温度范围宽、带负载能力强(输出电流大于500mA)等特点,适应于各类要求高速大功率驱动的系统。主要用于如下领域:伺服电机;步进电机;电磁阀;可控照明灯。 二极管起断电后放电保护作用第六章中断系统1. 中断定义在单片机中,当CPU在执行程序时,由单片机内部或外部的原因引起的随机事件要求CPU暂时停止正在执行的程序,而转向执行一个用于处理该随机事件
24、的程序,处理完后又返回被中止的程序断点处继续执行,这一过程就称为中断。u 单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。u 向CPU发出中断请求的来源,或引起中断的原因称为中断源。中断源要求服务的请求称为中断请求。u 中断源可分为两大类:一类来自单片机内部,称之为内部中断源;另一类来自单片机外部,称之为外部中断源。u 1中断源(5个)u 向CPU发出中断请求的来源,或引起中断的原因称为中断源。(1). 外部中断类u 外部中断是由外部原因(如打印机、键盘、控制开关、外部故障)引起的,可以通过两个固定引脚来输入到单片机内的信号,即外部中0(INT0)和外部中断1(INT1)。u
25、 外部中断(INT0)请求信号输入引脚为3.2。当CPU检测到P3.2引脚上出现有效的中断信号时,向申请中断。u 外部中断(INT1)请求信号输入引脚为.3 。当 检测到P3.3引脚上出现有效的中断信号时,向申请中断。(2). 定时中断类u 定时中断是由内部定时(或计数)溢出或外部定时(或计数)溢出引起的,即定时器0(T0)中断和定时器1(T1)中断。u 当定时器对单片机内部定时脉冲进行计数而发生计数溢出时,即表明定时时间到,申请中断;或者当定时器对单片机外部计数脉冲进行计数而发生计数溢出时,即表明计数次数到,申请中断。u 片内定时计数器溢出中断(TF0):当定时计数器T0发生溢出时,置位TF
26、0,并向CPU申请中断。u 片内定时计数器溢出中断(TF1):当定时计数器T1发生溢出时,置位TF1,并向CPU申请中断。u (3). 串行口中断类u 串行口中断是为接收或发送串行数据而设置的。u 串行接口中断,包括 或。当发送或接收完一帧数据时,向CPU申请中断。 2中断入口地址中断服务子程序的入口地址。中 断 源中断入口地址外部中断00003H定时器T0中断000BH外部中断10013H定时器T1中断001BH串行口中断0023H因为相邻中断入口地址间的间隔为8个单元,所以一般在这些入口地址处存放一条跳转指令,跳到真正的中断服务程序3. 中断优先级、优先权、中断嵌套u 几个中断源同时请求中
27、断;或者当某一个中断正在响应中(即正在执行该中断源的中断服务程序),又有其它的中断源请求中断,这时中断系统应如何处理呢?(优先级)u MCS-51单片机的中断系统,只规定了两个中断优先级:高优先级中断或低优先级中断。这需要用指令预先设置u 在同1个优先级中,对5个中断源的优先次序安排如下(优先权)u 几个原则: (1)不同级的中断源同时申请中断时先高后低; (2)同级的中断源同时申请中断时事先规定; (3)处理低级中断又收到高级中断请求时停低转高;(中断嵌套) (4)处理高级中断又收到低级中断请求时高不理低(三)、与中断控制相关的寄存器(掌握)有4个(特殊功能寄存器)TCON-定时控制寄存器,
28、 IE-中断允许控制寄存器,主要用于控制中断的开放和关闭。IP-中断优先级控制寄存器,主要用于设定优先级别。SCON-及串行口控制寄存器u 1IE(interrupt enable)中断允许控制寄存器,字节地址为A8H由于单片机没有专门的开中断和关中断指令,个中断源中断的开放和关闭是通过中断允许寄存器 进行两级控制的D7D6D5D4D3D2D1D0EA-ESET1EX1ET0EX0只有对应的中断允许触发器被置“1”,CPU才能响应该中断.0 禁止,1允许各位的功能说明:(1) EA(IE.7):CPU中断总允许位。EA=1,CPU开放中断。每个中断源是被允许还是被禁止,分别由各中断源的中断允许
29、位确定;EA=0,CPU屏蔽所有的中断要求,称为关中断。(2) ES(IE.4):串行口中断允许位。ES=1,允许串行口中断;ES=0,禁止串行口中断。 (3) ET1(IE.3):定时器1中断允许位。ET1=1,允许定时器1中断;ETl=0,禁止定时器1中断。(4) EX1(IE.2):外部中断1中断允许位。EX1=1,允许外部中断1中断;EX1=0,禁止外部中断1中断。(5) ET0(IE.1):定时器0中断允许位。ET0=1,允许定时器0中断;ET0=0,禁止定时器0中断。(6) EX0(IE.0):外部中断0中断允许位。EX0=1,允许外部中断0中断;EX0=0,禁止外部中断0中断。
30、u 2TCON定时、外中断控制寄存器,字节地址为88H定时器控制寄存器TCON的作用是控制定时器的启动与停止,并保存T0、T1的溢出中断标志和外部中断、的中断标志。D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0(1) TF1(TCON.7):定时器1溢出标志位。定时器1被启动计数后,从初值开始进行加1计数,当定时器1计满溢出时,由硬件自动使TF1置1,并申请中断。该标志一直保持到CPU响应中断后,才由硬件自动清0。也可用软件查询该标志,并由软件清0。(2) TR1(TCON.6):定时器1启停控制位。 (3) TF0(TCON.5):定时器0溢出标志位。其功能
31、同TF1。(4) TR0(TCON.4):定时器0启、停控制位。其功能同TR1。(5) IE1(TCON.3):外部中断1请求标志位。IEl=1表示外部中断1向CPU申请中断。当CPU响应外部中断1的中断请求时,由硬件自动使IE1清0(边沿触发方式)。(6) IT1(TCON.2):外部中断1触发方式选择位。 当ITl=0时,外部中断1为电平触发方式。若P3.3为低电平,则认为有中断申请;若为高电平,认为无中断申请或中断申请已撤除。 当ITl=1时,外部中断1为边沿触发方式。若P3.3为下降沿,则认为有中断申请。(7) IE0(TCON.1):外部中断0请求标志位。其功能同IE1。(8) IT
32、0(TCON.0):外部中断0触发方式选择位。其功能同IT1。 3.SCON串口控制寄存器,字节地址为98HD7D6D5D4D3D2D1D0SMOSM1SM2RENTB8RB8TIRI低2位TI和RI保存串行口的接收中断和发送中断标志。(1)TI (SCON.1):串行发送中断请求标志。CPU将一个字节数据写入发送缓冲器SBUF后启动发送,每发送完一帧数据,硬件自动使TI置1。但CPU响应中断后,硬件并不能自动使TI清0,必须由软件使TI清0。(2) RI (SCON.0):串行接收中断请求标志。在串行口允许接收时,每接收完一帧数据,硬件自动使RI置1。但CPU响应中断后,硬件并不能自动使RI
33、清0,必须由软件使RI清0。 u 4.IP中断优先级控制寄存器中断优先级寄存器IP的作用是设定各中断源的优先级别。D7D6D5D4D3D2D1D0-PSPT1PX1PT0PX0(1) PS(IP.4):串行口中断优先级控制位。PS=1,串行口为高优先级中断;PS=0,串行口为低优先级中断。(2) PT1(IP.3):定时器1中断优先级控制位。PT1=1,定时器1为高优先级中断;PTl=0,定时器1为低优先级中断。(3) PX1(IP.2):外部中断1中断优先级控制位。PX1=1,外部中断1为高优先级中断;PXl=0,外部中断1为低优先级中断。(4) PT0(IP.1):定时器0中断优先级控制位
34、。PT0=1,定时器T0为高优先级中断PT0=0,定时器0为低优先级中断。(5) PX0(IP.0):外部中断0中断优先级控制位。PX0=1,外部中断0为高优先级中断;PX0=0,外部中断0为低优先级中断u 四、中断过程(了解) 单片机处理中断的4个步骤:中断请求、中断响应、中断处理和中断返回。要补充;结构、中断程序、课上例子外部中断(外部中断(P3.2或P3.2),TF0、TF1(内部定时器,外部计数脉冲输入P3.4或P3.5),TI、RIu 1、主程序 在产生中断请求前,即主程序中完成中断初始化(设置3个寄存器)(1)开放CPU中断和有关中断源的中断允许,设置中断允许寄存器IE中相应的位。
35、(2)根据需要确定各中断源的优先级别,设置中断优先级寄存器IP中相应的位(3)根据需要确定外部中断的触发方式,设置定时器控制寄存器TCON中相应的位。(4)设定SP的初值2.中断服务程序 在中断入口地址处存放一条跳转指令 保护现场清除中断标志位,相关操作 恢复现场RETI)例子1 1设计电路和程序,8个发光二极管和1个开关。平时,8个灯循环点亮;当开关按下时,8个灯全亮然后全灭,如此循环8次后,返回平时状态。2.设计电路和程序,2个开关(简称为S1和S2),2个数码管(简称为L1和L2),平时L1、L2循环显示0099。当S1 按下时,L1显示04,然后全暗,返回平时状态;当S2 按下时,L2
36、显示04,然后全暗,返回平时状态。S1的优先级高于S2。3:记录按键次数u 三、外部中断的扩展 对多个外部中断源,采用中断加查询相结合的方法响应中断扩展电路原理如下图所示。多个外部中断源通过多个OC门电路组成线或电路后与P3.2(P3.3)相连,同时,每一个外部中断源将并行I/O口(如P1口)作为多个外部中断源的识别线。方法:在多个外部中断源中若有一个或几个为高电平则输出为0,则P3.2(P3.3)为低电平,向CPU发出中断请求;CPU在执行中断服务程序时,先依次查询P1口的中断源输入状态,然后转入到相应的中断服务程序。应用:中断加查询扩展法比较简单,但当外部中断源的个数较多时,因查询时间较长
37、,不能满足实时控制的要求。 定时器/计数器用到定时/计数 定时/实现方式:1.软件定时;(延时程序)2.不可编程硬件定时(555);3.可编程定时(8253,单片机定时/计数器)u 一、定时/计数器概述1.核心 定时/计数器的核心部件是16位二进制加1计数器(TH0、TL0或TH1、TL1) 。 每来一个计数脉冲信号,T0或T1会在原来计数值(或初值)的基础上加1.直到计满,发生溢出。再从0开始下一轮计数。u 它的输入脉冲有两个来源:一个是外部脉冲源,另一个是系统机器周期(时钟振荡器经12分频以后的脉冲信号)。 这和它的定时/计数功能有关。u 2计数器对外部信号计数,外部计数脉冲从T0(P3.
38、4)和T1(P3.5)输入,外部脉冲的下降沿有效,将触发计数。因检测一个由1至0的跳变需要两个机器周期,故外部信号的最高计数频率为时钟频率的二十四分之一。如果晶振频率为12MHz,则最高计数频率为0.5MHz。虽然对外部输入信号的占空比无特殊要求,但为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高电平与低电平保持时间均需在一个机器周期以上。u 3.定时器定时器也是一种计数器,是对振荡器经过12分频后信号的计数。计数器的加1信号由振荡器的12分频信号产生,即每过一个机器周期,计数器加1,直至计满溢出。定时器的定时时间与晶振频率和计数次数、初值等有关有关。如果晶振频率为12MHz,则机器周
39、期为1ms。若计数器对此信号计数100次,则定时时间=100 1ms100ms。u 与定时计数有关的特殊功能寄存器,:定时器的高位,低位(存放计数值),:定时器的高位,低位(存放计数值):定时控制寄存器:定时方式寄存器二、定时计数器的控制(工作方式寄存器)定时器方式寄存器TMOD的作用是设置T0、T1的工作方式。 TMOD的格式各位的功能说明:(1) GATE:门控位。用于控制定时器的启动是否受外部中断源信号的影响。 GATE=0:定时的启动与外部中断无关,把TCON寄存器中的TR1(TR0)置1即可启动定时器1(定时器0)。 GATE=1:由控制位TR1(TR0)和引脚INT0(INT1)共
40、同控制启动,只有在没有外部中断请求信号的情况下即外部中断引脚 INT0(INT1)引脚=1时,把TR1(TR0)置1才能定时器启动。 u :计数/定时功能选择位。 =0,设置为定时器方式,计数器的输入是内部时钟脉冲,其周期等于机器周期。实际上是对机器周期进行计数。从计数值可以求得计数的时间,所以称为定时器模式 =1,设置为计数器方式,计数器的输入来自T0(P3.4)或T1(P3.5)端的外部脉冲,对外部输入引脚T0(P3.4)或T1(P3.5)的外部脉冲(负跳变)计数,允许的最高计数频率为晶振频率的1/24。u M1、M0位:工作方式选择位M1 M0 方式说 明0 0013 位定时器(TH的
41、8 位和TL的低 5 位) 0 1116 位定时器/计数器 1 02自动重装入初值的 8 位计数器 1 13 T0 分成两个独立的 8 位计数器, T1 在方式 3 时停止工作 u 定时器/计数器控制寄存器TCONTF1TR1TF0TR0IE1IT1IE0IT0u TF0、TF1分别是定时器/计数器T0、T1 的溢出标志位, 加法计数器计满溢出时硬件自动置1, 申请中断。u 对该标志位有两种处理方法:一种是以中断方式工作,即TF1置1并申请中断,响应中断后,执行中断服务程序,并由硬件自动使TF1清0;另一种以查询方式工作,即通过查询该位是否为1来判断是否溢出,TF1置1后必须用软件使TF1清0
42、。 u TR1、TR0 分别是定时器 /计数器T1、 T0 的定时器1启停控制位。 GATE=0时,用软件使TR1置1即启动定时器1,若用软件使TR1清0则停止定时器1。 GATE=1时,用软件使TR1置1的同时外部中断INT1的引脚输入高电平才能启动定时器1。三定时/计数器的工作方式MCS-51单片机的T/C有4种工作方式,分别由TMOD寄存器中的M1、M0两位的二进制编码所决定。u 1.方式0 13位计数器 在方式0下,T0和T1工作在13位的定时/计数器方式,由TH的高 8 位和TL的低 5 位组成。u 当T1的低五位TL1计满时向它的高八位TH1进位,当T1的13位计数器加到全部为 1
43、 以后,再加1就产生溢出,这时置TCON的TF1为 1 ,同时把计数器全部变 0 。然后从 0 开始继续计数。u 最大计数次数213=8192u 2.方式1 16位计数器 在方式1下,T0和T1工作在16位的定时/计数器方式,由TH的高 8 位和TL的低 8 位组成。u 当T1的低8位TL1计满时向它的高八位TH1进位,当T1的16位计数器加到全部为 1 以后,再加1就产生溢出,这时置TCON的TF1为 1 ,同时把计数器全部变 0 。然后从 0 开始继续计数。u 最大计数次数216=65536u 3方式2 8位自动重装初值计数器 在方式2下,TL0用作8位计数器, TH0用作初值寄存器。u 当T1的8位计数器加到全部为 1 以后,再加1就产生溢出,这时置TCON的TF1为 1 ;同时,TH1中的初值装入TL1TL1又从初值开始计数。u 最大计数次数28=256u 4方式