1、单片机技术及应用单片机技术及应用授课人:庄友谊授课人:庄友谊9.1 C8051F41X概述9.3 C8051F41X可编程IO口 9.2 C8051F41X存储器组织 9.4 C8051F41X中断系统 9.5 C8051F41X内部定时器/计数器9.7 C8051F41X的串行口 9.6 可编程定时器/计数器阵列 9.8 模数转换器ADC 9.9数模转换器DAC 9.10 复位 9.11 电源管理方式 C8051F41x单片机是单片机是C8051F单片机家族中的一款性价比较高的成员,单片机家族中的一款性价比较高的成员,是一种集成混合信号的片上系统单片机(是一种集成混合信号的片上系统单片机(S
2、oC),具有与标准),具有与标准 MCS51兼容的高速兼容的高速CIP-51内核与指令集。内核与指令集。v完全完全兼容兼容MCS-51内核的微控制器、除标准内核的微控制器、除标准8051的数字外设部件外,还集成的数字外设部件外,还集成了数据采集和控制系统中常用的模拟外设、其它数字外设及功能部件。了数据采集和控制系统中常用的模拟外设、其它数字外设及功能部件。v真正能独立工作的集成混合信号真正能独立工作的集成混合信号片上系统片上系统SOC(System on chip),),CPU有有效地管理模拟和数字外设,可以关闭单个或全部外设以节省功耗。效地管理模拟和数字外设,可以关闭单个或全部外设以节省功耗
3、。vFLASH存储器存储器具有在系统重新编程的能力,既可用作程序存储器又可用作具有在系统重新编程的能力,既可用作程序存储器又可用作于非易失性数据存储于非易失性数据存储。nC8051F系列单片机内核采用系列单片机内核采用与与MCS-51兼容兼容的的CIP-51:指令共:指令共111条,在二条,在二进制码和功能上与进制码和功能上与MCS-51 产品完全等价,包括操作码、寻址方式和对产品完全等价,包括操作码、寻址方式和对PSW标志的影响。标志的影响。n标准标准8051中,除中,除MUL和和DIV以外所有指令都需要以外所有指令都需要12或或24个系统时钟周期,最个系统时钟周期,最大系统时钟频率为大系统
4、时钟频率为12-24MHz。CIP-51内核采用内核采用流水线流水线结构,结构,70%的指令执行时间为的指令执行时间为1或或2个系统时钟周期,个系统时钟周期,没有执行时间超过没有执行时间超过8个系统时钟周期的指令。个系统时钟周期的指令。执行周期数执行周期数122/433/5454/664/78指令数指令数26505107521221芯片型号芯片型号MIPS(峰值)(峰值)Flash存储器(存储器(KB)RAM(字节)(字节)校准的内部校准的内部24.5MHz晶振晶振时钟乘法器时钟乘法器SMBus/SPIUART定时器定时器(16位位)可编程可编程定时器定时器/计数器计数器阵列阵列I/O口口12
5、位位ADCSmaTRClock(实时时钟)(实时时钟)两个两个12位电流输出位电流输出DAC内部电压基准内部电压基准温度传感器温度传感器模拟比较器模拟比较器C41050322368424C41150322368420C41250162368424C41350162368420C8051F41x的的4款芯片款芯片C8051F410芯片示意图芯片示意图 高速、流水线结构的8051兼容的微控制器核 达32KB的片内FLASH存储器 2304字节片内RAM 4个通用的16位定时器 硬件实现的SMBus(系统管理总线)/I2C、增强型UART和增强型SPI(串行外设接口)片内电压比较器 真12位200
6、ksps的24通道ADC,带模拟多路器 两个12位电流输出DAC 9.1.1 C8051F410系统系统内部内部结构结构循环冗余码校验硬件实时时钟9.1.2 C8051F410系统系统引脚引脚nC8051F41x 的的存贮器结构与存贮器结构与MCS-51基本一样(基本一样(哈佛结构哈佛结构)n物理结构上可分为物理结构上可分为:n片内、片内、片外片外程序存储器程序存储器n片内、片内、片外片外数据存储器数据存储器n逻辑上可分为逻辑上可分为:n程序存储器、程序存储器、内部数据存储器、外部数据存储器内部数据存储器、外部数据存储器程程序序存存储储器器内部数据存储器、内部数据存储器、SFR外部数据存储器外
7、部数据存储器1、程序存贮器、程序存贮器n CIP-51 有有 64KB 的程序存储器空间。的程序存储器空间。C8051F410在这个程序在这个程序存储器空间中实现了存储器空间中实现了 32KB的可在系统编程的的可在系统编程的 FLASH 存储器,存储器,组织在一个连续的存储块内(组织在一个连续的存储块内(0 x0000 0 x7DFF)。)。2、内部数据存贮器、内部数据存贮器 n CIP-51 的数据存储器空间中有的数据存储器空间中有 256字节的内部字节的内部 RAM,位于,位于0 x00 0 xFF的地址空间。的地址空间。n数据存储器中的低数据存储器中的低 128 字节用于通用寄存器和临时
8、存储器。可以字节用于通用寄存器和临时存储器。可以用直接或间接寻址方式访问数据存储器的低用直接或间接寻址方式访问数据存储器的低 128 字节。字节。n0 x00 0 x1F 为为 4 个通用寄存器区,每个区有个通用寄存器区,每个区有 8个个 8 位寄存器。接位寄存器。接下来的下来的 16 字节为位寻址区,地址字节为位寻址区,地址 0 x20 0 x2F,既可以按字节寻,既可以按字节寻址,又可以作为址,又可以作为 128 个位地址用位寻址方式访问。个位地址用位寻址方式访问。n数据存储器中的高数据存储器中的高 128字节只能用间接寻址访问。该存储区与特殊功能字节只能用间接寻址访问。该存储区与特殊功能
9、寄存器(寄存器(SFR)占据相同的地址空间,但物理上与)占据相同的地址空间,但物理上与 SFR 空间是分开的。空间是分开的。n当寻址高于当寻址高于 0 x7F的地址时,指令所用的的地址时,指令所用的寻址方式寻址方式决定了决定了CPU是访问数是访问数据存储器的高据存储器的高128字节还是访问字节还是访问 SFR。n使用使用直接寻址方式直接寻址方式的指令将访问的指令将访问SFR空间,空间,间接寻址间接寻址高于高于0 x7F地址的指地址的指令将访问数据存储器的高令将访问数据存储器的高128字节。字节。(1)通用寄存器)通用寄存器n数据存储器的低数据存储器的低 32 字节(地址字节(地址 0 x00
10、0 x1F)可以作为)可以作为 4 个通用个通用寄存器组访问。每个区有寄存器组访问。每个区有8 个个 8 位寄存器,称为位寄存器,称为 R0 R7。在某一。在某一时刻只能选择一个寄存器区。程序状态字中的时刻只能选择一个寄存器区。程序状态字中的 RS0(PSW.3)和)和 RS1(PSW.4)位用于选择当前的寄存器区。)位用于选择当前的寄存器区。RS1 RS0寄存器组寄存器组片内片内RAM地址地址0 00组组0 x00-0 x070 11组组0 x08-0 x0F1 02组组0 x10-0 x171 13组组0 x18-0 x1F(2)位寻址区)位寻址区 可以位寻址的包括两部分:可以位寻址的包括
11、两部分:n 内部内部RAM中的中的0 x20-0 x2F单元;单元;n 部分部分SFR(字节地址为字节地址为8的倍数的)的倍数的)。MCS-51汇编语言允许用汇编语言允许用XX.B的形式替代位地址,的形式替代位地址,XX为字节地址,为字节地址,B为寻址位在该字节中的位置。例如,指令:为寻址位在该字节中的位置。例如,指令:MOV C,22.3 h 将将 0 x13 中的布尔值(字节地址中的布尔值(字节地址 0 x22中的位中的位 3)传送到进位标志)传送到进位标志。n CIP-51中的中的布尔处理器布尔处理器,能对位地址直接寻址,执行,能对位地址直接寻址,执行置置“1”、清、清“0”、取反取反等
12、操作。等操作。(3)特殊功能寄存器)特殊功能寄存器SFR n地址以地址以 0 x0或或 0 x8 结尾的结尾的 SFR(例如(例如 P0、TCON、IE 等)既可以等)既可以按字节寻址也可以按位寻址,按字节寻址也可以按位寻址,n所有其它所有其它 SFR 只能按字节寻址。只能按字节寻址。SFR 空间中未使用的地址保留为空间中未使用的地址保留为将来使用,访问这些地址会产生不确定的结果,应予避免。将来使用,访问这些地址会产生不确定的结果,应予避免。1、c8051F410.h#ifndef C8051F410_H#define C8051F410_H /Byte Registers sfr P0 =0
13、 x80;/Port 0 latch sfr SP =0 x81;/Stack pointer#endif /#define C8051F410_H n从从0 x80到到0 xFF的直接寻址存储器空间为特殊功能寄存器的直接寻址存储器空间为特殊功能寄存器(SFR)。SFR提供对提供对CIP-51的资源和外设的控制及的资源和外设的控制及CIP-51与这些资源和外设之间的数据交换与这些资源和外设之间的数据交换。nCIP-51具有标准具有标准 8051中的全部中的全部SFR,还增加了一些用于,还增加了一些用于配置和访问专有子系统的配置和访问专有子系统的SFR。这就允许在保证与。这就允许在保证与MCS-
14、51TM指令集兼容的前提下增加新的功能。指令集兼容的前提下增加新的功能。n任何时刻用直接寻址方式访问任何时刻用直接寻址方式访问 0 x80 0 xFF的存储器空间的存储器空间将访问特殊功能寄存器(将访问特殊功能寄存器(SFR)。)。F8SPI0CNPCA0LPCA0HPCA0CPL0PCA0CPH0PCA0CPL4PCA0CPH4VDM0CNF0BP0MDINP1MDINP2MDINIDA1LIDA1HEIP1EIP2E8ADC0CNPCA0CPL1PCA0CPH1PCA0CPL2PCA0CPH2PCA0CPL3PCA0CPH3RSTSRCE0ACCXBR0XBR1PFE0CNIT01CFEI
15、E1EIE2D8PCA0CNPCA0MDPCA0CPM0PCA0CPM1PCA0CPM2PCA0CPM3PCA0CPM4CRC0FLIPD0PSWREF0CNPCA0CPL5PCA0CPH5P0SKIPP1SKIPP2SKIPP0MATC8TMR2CNREG0CNTMR2RLLTMR2RLHTMR2LTMR2HPCA0CPM5P1MATC0SMB0CNSMB0CFSMB0DATADC0GTLADC0GTHADC0LTLADC0LTHP0MASKB9IPIDA0CNADC0TKADC0MXADC0CFADC0LADC0HP1MASKB0P0ODENOSCXCNOSCICNOSCICLIDA1CN
16、FLSCLFLKEYA8IECLKSELEMI0CNCLKMULTRC0ADRRTC0DATRTC0KEYONESHOTA0P2SPI0CFGSPI0CKRSPI0DATP0MDOUTP1MDOUTP2MDOUT98SCON0SBUF0CPT1CNCPT0CNCPT1MDCPT0MDCPT1MXCPT0MX90P1TMR3CNTMR3RLLTMR3RLHTMR3LTMR3HIDA0LIDA0H88TCONTMODTL0TL1TH0TH1CKCONPSCTL80P0SPDPLDPHCRC0CNCRC0INCRC0DATPCON0(8)1(9)2(A)3(B)4(C)5(D)6(E)7(F)特殊功
17、能寄存器(特殊功能寄存器(SFR)3、片内、片内XRAM n MCS-51内部只有内部只有128或或256字节的数据存储器,不够时字节的数据存储器,不够时可以在芯片可以在芯片外部扩展外部扩展64KB的外部数据存储器的外部数据存储器(XRAM)。n C8051F410在芯片内部有属于外部数据存储器空间的在芯片内部有属于外部数据存储器空间的2048字节字节RAM。n 外部存储器空间用外部存储器空间用MOVX指令和指令和DPTR、R0或或R1用用间间接寻址接寻址方式访问方式访问。9.3.1 IO口输入口输入/输出输出:C8051F410单片机共有单片机共有24个个I/O端口可以端口可以使用,即使用,
18、即P0.0 P2.7,这些这些I/O端口可以:端口可以:v 用作通用用作通用I/O,v 用作模拟输入用作模拟输入/输出。输出。v 被分配给内部数字资源。被分配给内部数字资源。设计者完全控制数字功能的引脚分配,设计者完全控制数字功能的引脚分配,只受物理只受物理I/O引脚数的限制。引脚数的限制。24 个 I/O P0 P1 P2通用I/O(GPIO)模拟输入/输出内部数字资源配置定义n端口端口(P0、P1、P2)既可)既可以按位寻址也可以按字节寻以按位寻址也可以按字节寻址。址。n所有引脚都耐所有引脚都耐5V电压,都电压,都可以被配置为可以被配置为漏极开路漏极开路或或推推挽输出挽输出方式和方式和弱上
19、拉弱上拉。缺省。缺省状态为状态为漏极开路漏极开路。1、配置端口引脚的输出方式、配置端口引脚的输出方式(1)推挽方式)推挽方式:向端口数据寄存器中的相应位:向端口数据寄存器中的相应位:写逻辑写逻辑0将使端口引脚被驱动到将使端口引脚被驱动到GND,写逻辑写逻辑1将使端口引脚被驱动到将使端口引脚被驱动到VDD。(2)漏极开路方式)漏极开路方式:向端口数据寄存器中的相应位:向端口数据寄存器中的相应位:写逻辑写逻辑0将使端口引脚被驱动到将使端口引脚被驱动到GND,写逻辑写逻辑1将使端口引脚处于高阻状态。将使端口引脚处于高阻状态。(3)弱上拉)弱上拉 每个端口引脚都有一个内部弱上拉部件,在引脚与每个端口引
20、脚都有一个内部弱上拉部件,在引脚与VDD之间提之间提供阻性连接(约供阻性连接(约 100 k),在缺省情况下该上拉器件被使能。,在缺省情况下该上拉器件被使能。一、端口单元的工作原理:一、端口单元的工作原理:110010011推挽推挽(PUSH-PULL)输出方式输出方式VDDDGNDPnMDOUTPnPnMDIN=11000101高阻高阻漏极开路(漏极开路(Open-Drain)输出和弱上拉)输出和弱上拉DGND需上拉电阻需上拉电阻100012、数字输入、数字输入0通过设置输出方式为通过设置输出方式为漏极开路漏极开路并向端口并向端口数据寄存器中的相应位写数据寄存器中的相应位写1将端口将端口引脚
21、配置为引脚配置为数字输入数字输入。1013、模拟输入、模拟输入1二、端口相关寄存器:二、端口相关寄存器:1、端口:、端口:P0P22、端口输出方式寄存器:、端口输出方式寄存器:3、端口输入方式寄存器:、端口输入方式寄存器:v C8051F410单片机的单片机的I/O端口在使用前都要进行输入端口在使用前都要进行输入/输出的设输出的设置。置。v 设置输入方式:模拟输入还是数字输入。设置输入方式:模拟输入还是数字输入。v 设置输出方式:漏极开路(设置输出方式:漏极开路(open-drain)输出还是推挽输出)输出还是推挽输出(push-pull)。注意:注意:9.3.2 优先权交叉开关译码器优先权交
22、叉开关译码器24 个 I/O P0 P1 P2通用I/O(GPIO)模拟输入/输出内部数字资源配置定义vC8051F410内有大量的数字资源需要通过内有大量的数字资源需要通过3个低端个低端I/O端口端口P0P2才能使用。通过使用才能使用。通过使用优先权交叉开关优先权交叉开关译码实现的译码实现的。(XBRn、XBARE、PnSKIP)(PnMDIN、PnMDOUT)通过通过2个特殊功能寄存器个特殊功能寄存器XBR0、XBR1实现,对应使能实现,对应使能位置位置1时,交叉时,交叉开关将端口引脚分配给外设开关将端口引脚分配给外设。引脚分配原则引脚分配原则:端口引脚的分配顺序是从:端口引脚的分配顺序是
23、从P0.0开始,可以一直分配到开始,可以一直分配到P2.7。为数字外设分配端口引脚的优先权顺序如上图,。为数字外设分配端口引脚的优先权顺序如上图,UART0具有最具有最高优先权,而高优先权,而T1具有最低优先权。具有最低优先权。1、XBR0:端口:端口 I/O交叉开关寄存器交叉开关寄存器 0 2、XBR1:端口:端口 I/O交叉开关寄存器交叉开关寄存器 1 没有引脚被跳过的交叉开关优先权译码表没有引脚被跳过的交叉开关优先权译码表从优先权最高的从优先权最高的 UART0开始。开始。当一个数字资源被当一个数字资源被选择时,尚未分配选择时,尚未分配的端口引脚中的的端口引脚中的最低位被分配给该资被分配
24、给该资源源(UART0除外,除外,它总是被分配到引它总是被分配到引脚脚 P0.4和和P0.5)。)。如果一个端口引脚如果一个端口引脚已经被分配,则交已经被分配,则交叉开关在为下一个叉开关在为下一个被选择的资源分配被选择的资源分配引脚时将跳过该引引脚时将跳过该引脚。脚。引脚被跳过的交叉开关优先权译码表引脚被跳过的交叉开关优先权译码表如果一个端如果一个端口引脚被一口引脚被一个外设使用个外设使用而而不经过交叉开关,则,则该引脚在该引脚在 PnSKIP 寄存寄存器中的对应器中的对应位应被置位应被置 1。3、端口、端口 0跳过寄存器跳过寄存器例例1:按如下要求配置交叉开关:按如下要求配置交叉开关:n系统
25、使用系统使用UART0、SMBus(共(共 2 个引脚)。个引脚)。n将将P0.0、P0.1 和和P0.2 配置为模拟输入,以便用配置为模拟输入,以便用ADC1测量测量加在这些引脚上的电压。加在这些引脚上的电压。Void PortInit(void)P0MDIN =0 xF8;P0SKIP =0 x07;XBR0 =0 x05;XBR1 =0 x40;例例2:通过通过P2.1驱动一个驱动一个LED:v P2MDIN|=0 x02;/设置设置P2.1为数字输入为数字输入v P2MDOUT|=0 x02;/设置设置P2.1为推挽输出为推挽输出v P2SKIP|=0 x02;/CrossBar跳过跳
26、过P2.1例例3:P2.1接一外部的模拟信号,对其进行接一外部的模拟信号,对其进行AD转换转换:v P2MDIN&=0 x02;/设置设置P2.1为模拟输入为模拟输入v/这时这时P2MDOUT不用设置,因为用作模拟输入的端口,其对应位不用设置,因为用作模拟输入的端口,其对应位在在PnMDOUT中的设置会被忽略中的设置会被忽略v P2SKIP|=0 x02;/CrossBar跳过跳过P2.1例例4:设置设置P2.1为为PCA的的CEX0的输出的输出:v P2MDIN|=0 x02;/P2.1为数字输入为数字输入v P2MDOUT|=0 x02;/P2.1为推挽输出为推挽输出v P0SKIP=0
27、xFF;/跳过跳过P0的所以端口的所以端口v P1SKIP=0 xFF;/跳过跳过P1的所以端口的所以端口v P2SKIP|=0 x01;/跳过跳过P2.0端口端口v XBR1&=0 x07;v XBR1|=0 x01;/CEX0输出到输出到P2.1v XBR0|=0 x40;/使能使能CrossBar例例5:P0.0用作模拟信号输入,进而进行用作模拟信号输入,进而进行AD转换,转换,P0.1用来驱动一用来驱动一个个led,P0.4和和P0.5用作用作UART,PCA的的CEX0输出到输出到P0.7。v P0SKIP=0 x4F;v XBR0|=0 x01;v XBR1|=0 x41;端口端口
28、 I/O初始化:初始化:端口端口I/O初始化包括以下步骤:初始化包括以下步骤:第一步:用端口输入方式寄存器(第一步:用端口输入方式寄存器(PnMDIN)选择所有端口引脚的输)选择所有端口引脚的输入方式(模拟或非模拟)。入方式(模拟或非模拟)。第二步:用端口输出方式寄存器(第二步:用端口输出方式寄存器(PnMDOUT)选择所有端口引脚的)选择所有端口引脚的输出方式(漏极开路或推挽)。输出方式(漏极开路或推挽)。第三步:用端口跳过寄存器(第三步:用端口跳过寄存器(PnSKIP)选择应被交叉开关跳过的那)选择应被交叉开关跳过的那些引脚。些引脚。第四步:用第四步:用XBRn寄存器将引脚分配给要使用的外
29、设。寄存器将引脚分配给要使用的外设。第五步:使能交叉开关(第五步:使能交叉开关(XBARE=1)。)。未被交叉开关分配的端口引脚和未被模拟外设使用的端口引脚都可以作未被交叉开关分配的端口引脚和未被模拟外设使用的端口引脚都可以作为通用为通用I/O。通过对应的端口数据寄存器访问端口。通过对应的端口数据寄存器访问端口 P0-P2,这些寄存器既可以,这些寄存器既可以按位寻址也可以按字节寻址。按位寻址也可以按字节寻址。向端口写入时,数据被锁存到端口数据寄存器中,以保持引脚上的输出向端口写入时,数据被锁存到端口数据寄存器中,以保持引脚上的输出数据值不变。数据值不变。读端口数据寄存器(或端口位)将总是返回读
30、端口数据寄存器(或端口位)将总是返回引脚本身的逻辑状态引脚本身的逻辑状态,而与,而与XBRn的设置值无关,即使在引脚被交叉开关分配给其它信号时,端口寄存的设置值无关,即使在引脚被交叉开关分配给其它信号时,端口寄存器总是读其对应的端口器总是读其对应的端口I/O引脚。引脚。sbit SW2 =P14;sbit LED1=P21;if(SW2=0)LED1=1;9.4.1 概述概述:C8051F410 扩展了扩展了MCS-51的中断系统,包的中断系统,包含含 17中断源(标准中断源(标准8051 有有5 中断源),每个中中断源),每个中断源有两个优先级。断源有两个优先级。MCS-51中断系统结构:中
31、断系统结构:各单路开关 总开关IP寄存器实行实行两级控制两级控制SCON寄存器寄存器 EA总允许位中断源标志位查询机构高优先级低优先级中断入中断入口口中断源标志位中断中断入口入口中断源标志位IE0EX0TF0IE1TF1TIESET1EX1ET0RI+源允许位优先级外部中断外部中断 请求请求0外部中断外部中断 请求请求1定时器定时器/计数器计数器0定时器定时器/计数器计数器1串行口串行口TRINT0INT1RXDTXDT1T0中断标志位中断标志位IE寄存器TCON寄存器寄存器 C8051F41x包含一个扩展的中断系统,支持包含一个扩展的中断系统,支持17个中断源个中断源,每,每个中断源有两个优
32、先级。每个中断源可以在一个个中断源有两个优先级。每个中断源可以在一个SFR中有中有一个或一个或多个多个中断标志。当一个外设或外部源满足有效的中断条件时,相中断标志。当一个外设或外部源满足有效的中断条件时,相应的中断标志置为逻辑应的中断标志置为逻辑 1。如果一个中断源被允许,则在中断标志被如果一个中断源被允许,则在中断标志被置位置位时将产生中时将产生中断请求。一旦当前指令执行束,断请求。一旦当前指令执行束,CPU产生一个产生一个LCALL到到预定地预定地址址,开始执行中断服务程序(,开始执行中断服务程序(ISR)。)。每个每个 ISR 必须以必须以 RETI指令结束,使程序回到中断前执行的指令结
33、束,使程序回到中断前执行的那条指令的下一条指令。那条指令的下一条指令。如果中断未被允许,中断标志将被硬件忽略,程序继续正如果中断未被允许,中断标志将被硬件忽略,程序继续正常执行。中断标志置常执行。中断标志置1与否不受中断允许与否不受中断允许/禁止状态的影响。禁止状态的影响。某些中断标志在某些中断标志在CPU进入进入ISR时被自动清除,但大多数中时被自动清除,但大多数中断标志不是由断标志不是由硬件清除硬件清除的,须在的,须在ISR返回前用返回前用软件清除软件清除。如果一个中断标志在如果一个中断标志在CPU执行完中断返回指令后仍保持置执行完中断返回指令后仍保持置位状态,则会立即产生一个新的中断请求
34、,位状态,则会立即产生一个新的中断请求,CPU将在执行完下将在执行完下一条指令后再次进入一条指令后再次进入ISR。MCU中断源和中断向量中断源和中断向量 MCU支持支持17个中断源。软件可以通过将任何一个中断标志个中断源。软件可以通过将任何一个中断标志设置为逻辑设置为逻辑1来来模拟模拟一个中断。如果中断使能被允许,系统将产一个中断。如果中断使能被允许,系统将产生一个中断请求,生一个中断请求,CPU将转向与该中断标志对应的将转向与该中断标志对应的ISR地址。地址。C8051F中断系统中断系统 中断源中断源中断允许寄存器中断允许寄存器 中断优先级寄存器中断优先级寄存器高优先级EX0ET0低优先级
35、高 低IE0IE1TF0INT0INT1TF1TIRITF2EXF2EX1ET1ESET2EAPX0PT0PX1PT1PSPX2IE寄存器寄存器IP寄存器EIE1寄存器寄存器EIE2寄存器寄存器EIP1EIP2EXVLD0000同同级级查查询询顺顺序序中断控制中断控制(1)中断使能控制)中断使能控制 n 采用两级中断使能控制采用两级中断使能控制nC8051F对所有的中断源的开放和屏蔽(对所有的中断源的开放和屏蔽(总控制位总控制位EA)n 每个中断源都有单独的每个中断源都有单独的二级中断允许控制位二级中断允许控制位n 受中断允许寄存器受中断允许寄存器IE、EIE1、EIE2控制。控制。(2)中断
36、优先级别的设定)中断优先级别的设定n 每个中断源都可以设置为每个中断源都可以设置为高优先级高优先级和和低优先级低优先级,由中断优,由中断优先级寄存器先级寄存器IP、EIP1、EIP2统一管理统一管理。相同优先级的硬件查询顺序相同优先级的硬件查询顺序 中断源中断源 同级时的优先顺序同级时的优先顺序 外部中断外部中断0 定时器定时器0中断中断 外部中断外部中断1 定时器定时器1中断中断 串行口串行口0中断中断 定时器定时器2中断中断 .稳压器电压降落稳压器电压降落 端口匹配端口匹配高高低低9.4.2 中断寄存器说明中断寄存器说明v IE:中断允许寄存器:中断允许寄存器 v EIE1:扩展中断允许:
37、扩展中断允许1 v EIE2:扩展中断允许:扩展中断允许2 v IP:中断优先级寄存器:中断优先级寄存器 v EIP1:扩展中断优先级:扩展中断优先级1 v EIP2:扩展中断优先级:扩展中断优先级2 1、IE(中断允许)中断允许)SPI T22、IP(中断优先级)(中断优先级)SPI T23、EIE1(中断扩展允许)(中断扩展允许)T3 比较比较1 比较比较0 可编程计数器可编程计数器 AD0 窗口窗口 实时时钟实时时钟 系统总线系统总线4、EIP1(扩展中断优先级扩展中断优先级1)T3 比较比较1 比较比较0 可编程计数器可编程计数器 AD0 窗口窗口 实时时钟实时时钟 系统总线系统总线5
38、、EIE2(中断扩展允许)(中断扩展允许)端口匹配端口匹配 稳压器电压降落稳压器电压降落6、EIP2(扩展中断优先级扩展中断优先级1)端口匹配端口匹配 稳压器电压降落稳压器电压降落中断响应过程:中断响应过程:硬件动作硬件动作1为实现嵌套,先置位相应为实现嵌套,先置位相应优先级状态触发器优先级状态触发器(不可寻(不可寻址,该触发器指出址,该触发器指出CPU开始处理的中断优先级别)开始处理的中断优先级别)2执行一条硬件子程序调用指令(执行一条硬件子程序调用指令(LCALL),),转到相转到相应应ISR入口。入口。3清除中断请求标志(有些中断源如清除中断请求标志(有些中断源如RI、TI不能被自动不能
39、被自动清除,需要在中断服务程序中用软件清除)。清除,需要在中断服务程序中用软件清除)。4PC入栈入栈,将,将ISR的入口地址送程序计数器的入口地址送程序计数器PC。9.4.3 外部中断外部中断 两个外部中断源两个外部中断源/INT0和和/INT1可被配置为低电平有可被配置为低电平有效或高电平有效,边沿触发或电平触发。效或高电平有效,边沿触发或电平触发。IT01CF:INT0/INT1配置寄存器配置寄存器注意:注意:该引脚分配与交叉开关无关;该引脚分配与交叉开关无关;/INT0 将监视分配给它的端口引脚,但将监视分配给它的端口引脚,但不影响被交叉开关分配了相同引脚的外设。不影响被交叉开关分配了相
40、同引脚的外设。()边沿触发方式()边沿触发方式 外部中断标志触发器外部中断标志触发器锁存锁存外部中断输入线上的外部中断输入线上的负跳变负跳变,即使暂时得不,即使暂时得不到到CPU响应,中断请求标志也不会丢失。响应,中断请求标志也不会丢失。CPU在转向在转向 ISR 时用硬件自动清除相应的中断标志。时用硬件自动清除相应的中断标志。()电平触发方式()电平触发方式 外部中断输入信号必须有效至外部中断输入信号必须有效至CPU响应该中断为止,同时在中断服务响应该中断为止,同时在中断服务程序返回之前必须清除中断请求信号,否则程序返回之前必须清除中断请求信号,否则CPU在中断返回后又会再次响在中断返回后又
41、会再次响应中断。应中断。在输入有效期间中断标志将保持在逻辑在输入有效期间中断标志将保持在逻辑1状态;在输入无效期间该标状态;在输入无效期间该标志保持逻辑志保持逻辑 0 状态。状态。外部中断外部中断/INT0或或/INT1触发方式触发方式外部中断触发方式的选择外部中断触发方式的选择 可被配置为可被配置为低电平有效或高电平有效低电平有效或高电平有效,边沿触发或电平触发边沿触发或电平触发。IT01CF寄存器中的寄存器中的IN0PL(/INT0极性)和极性)和IN1PL(/INT1极性)位用于选择极性)位用于选择高电平有效还是低电平有效;高电平有效还是低电平有效;TCON中的中的IT0和和IT1用于选
42、择电平或边沿触发。用于选择电平或边沿触发。下面的表列出了可能的配置组合。下面的表列出了可能的配置组合。#include#define SYSCLK 24500000 /Clock speed in Hzsbit SW1=P00;/Push-button switch on boardsbit SW2=P01;/Push-button switch on boardsbit LED1=P21;/Green LEDsbit LED2=P23;/Green LEDvoid main(void)PCA0MD&=0 x40;/Disable Watchdog timerOscillator_Init()
43、;/Initialize the system clockPort_Init();/Initialize crossbar and GPIOExt_Interrupt_Init();/Initialize External InterruptsEA=1;while(1);/Infinite while loop waiting for an interrupt from/INT0 or/INT1void Oscillator_Init(void)OSCICN=0 x87;/Set internal oscillator to run at its maximum frequency/P0.0-
44、digital open-drain /INT0 /P0.1-digital open-drain /INT1/P2.1-digital push-pull LED1 /P2.3-digital push-pull LED2void Port_Init(void)XBR1 =0 x40;/Enable crossbar and weak pullupsP2MDOUT =0 x0A;/LED1 and LED2 are push-pull outputsvoid Ext_Interrupt_Init(void)TCON=0 x05;/INT 0 and/INT 1 are edge trigge
45、redIT01CF=0 x10;/INT0 active low;on P0.0;/INT1 active low;P0.1EX0=1;/Enable/INT0 interruptsEX1=1;/Enable/INT1 interruptsvoid INT0_ISR(void)interrupt 0LED1=!LED1;void INT1_ISR(void)interrupt 2LED2=!LED2;复位后单片机引脚复位后单片机引脚处于数字输入模式处于数字输入模式9.5.1 概述概述 C8051F41x内部有内部有4个个16位定时器位定时器/计数器计数器:T0和和T1工作方式工作方式T2工作方
46、式工作方式T3工作方式工作方式13位定时器位定时器/计数器计数器16位自动重装载定时器位自动重装载定时器/计数器计数器16位自动重装载定时器位自动重装载定时器/计数器计数器16位定时器位定时器/计数器计数器8位自动重装载的定时器位自动重装载的定时器/计数器计数器两个两个8位自动重装载定位自动重装载定时器时器/计数器计数器两个两个8位自动重装载定位自动重装载定时器时器/计数器计数器两个两个8位定时器位定时器/计数器计数器(仅限于定时器(仅限于定时器/计数器计数器0)T0和和T1与标准与标准8051几乎完全相同,除了其几乎完全相同,除了其时钟源可选择配置外时钟源可选择配置外,使用上其它均相同。,使
47、用上其它均相同。T2和和T3均可作为一个均可作为一个16位或两个位或两个8位自动重装位自动重装载定时器载定时器/计数器。可用于计数器。可用于ADC、SMBus、通用定时器使用。、通用定时器使用。T2和和T3还具有还具有smaRTClock捕捉方式,可用于测量捕捉方式,可用于测量smaRTClock时钟(相对于时钟(相对于另一个振荡器)。另一个振荡器)。定时器的一般结构和工作原理定时器的一般结构和工作原理 方式选择方式选择计数器计数器定时器定时器启启/停停控制控制执行机构执行机构减减1计数:如计数:如Intel 8253加加1计数:计数:如如C8051F410 的的T0T2溢出溢出标志标志查询查
48、询中断中断v内部振荡频率内部振荡频率=24.5MHz,v系统时钟系统时钟=24.5MHz/振荡器分频振荡器分频vT0时钟时钟=系统时钟系统时钟/定时器分频定时器分频内部振荡内部振荡24.5MHzOSCICN:IFCN振荡器分频定时器分频CKCON:T0M、SCAT0时钟系统时钟9.5.2 定时器定时器/计数器计数器T0、T1控制启停引脚控制启停引脚TR0=1GATE0=0时时:GATE0=1时:时:启动计数启动计数 TR0=1且且INT0=1启动计数启动计数v TH0寄存器保持寄存器保持13位计数器位计数器/定时器的定时器的8个个MSB,TL0在在TL0.4-TL0.0位置保位置保持持5个个L
49、SB。TL0的高的高3位(位(TL0.7-TL0.5)是不确定的,在读计数值时应屏)是不确定的,在读计数值时应屏蔽掉或忽略这蔽掉或忽略这3位。位。v 作为作为13位定时器寄存器,计到位定时器寄存器,计到0 x1FFF(全(全 1)后再计一次将发生溢出,使)后再计一次将发生溢出,使计数值回到计数值回到0 x0000,此时定时器溢出标志,此时定时器溢出标志TF0被置位并产生一个中断(如被置位并产生一个中断(如果该中断被允许)。果该中断被允许)。v C/T0位选择计数器位选择计数器/定时器的时钟源。当定时器的时钟源。当C/T0被设置为逻辑被设置为逻辑1时,出现在时,出现在T0输入引脚上的负跳变使定时
50、器寄存器加输入引脚上的负跳变使定时器寄存器加1。v 清除清除C/T0位将选择由位将选择由T0M位定义的时钟作为定时器的输入。当位定义的时钟作为定时器的输入。当T0M=1时,时,定时器定时器0的时钟为系统时钟;当的时钟为系统时钟;当T0M=0时,定时器时,定时器0的时钟源由的时钟源由CKCON中中的的时钟分频位时钟分频位定义。定义。TCON中的中的IT0和和IT1用用于选择电平或边沿触发于选择电平或边沿触发 具有具有自动重装自动重装计数初值能力的计数初值能力的8位计数器位计数器/定时器。定时器。TL0保持计数值,保持计数值,TH0保持重载值。当保持重载值。当TL0中的计数值发生溢出(从全中的计数