IAP15W4K58S4单片机 学习笔记(一)


文章目录


一,微型计算机的结构

微型计算机的模型:
在这里插入图片描述

1. 中央处理器(CPU)的组成

运算器 + 控制器

1.1 运算器
  • 算术逻辑单元(ALU)
  • 累加寄存器(A)
  • 寄存器组
  • 标志寄存器(F)
1.2 控制器
  • 程序控制器(PC)
  • 指令寄存器(IR)
  • 指令译码器(ID)
  • 微操作信号发生器(MOSG)
  • 地址寄存器(AR)
  • 数据寄存器(DR)

2. 存储器

3.工作过程

二,单片机的基本结构

2.1 IAP15W4K58S4 的基本组成:

在这里插入图片描述

2.2 IAP15W4K58S4 的主要性能:

  • 增强型 8051 内核
  • 58KB Flash 程序存储器
  • 4096B 的 SRAM,相当于计算机的内存,可用于保存程序中所用的变量
  • 5 个 16位 可自动重装载的定时/计数器(T0,T1,T2,T3,T4)
  • 62 根 I/O 口线
  • 4 个 全双工异步串行口(UART)
  • 1 个 高速同步通信端口(SPI)
  • 中断控制系统。5路外部中断,掉电模式可由外部中断低电平触发中断方式
  • 8 通道10位高速 ADC
  • 6 通道 PWM 和 2通道可编程计数器阵列 (CCP)
  • 内部可靠上电复位和硬件看门狗
  • 内部集成高精度R/C时钟,常温下可省去外部晶振电路
  • 具有在 系统可编程/在应用可编程功能(ISP/IAP),无需专用编程器
  • 多种封装行形式

2.3 IAP15W4K58S4 的引脚:

DIP40 封装形式
在这里插入图片描述

(1)电源和复位引脚
  • VCC:接电源 +5V ,IAP15W4K58S4 的工作电压2.5V~5V
  • GND:接地
  • RST:复位
(2)外接晶体引脚

在这里插入图片描述
晶体振荡器M的频率可在 4~48 MHZ 之间选择,典型值 11.0592 MHZ(设计单片机通信系统时,使用这个频率的晶振可以准确的得到9600bit/s,和 1920 bit/s),电容C1,C2 对时钟频率有微调作用,可在5~100PF 之间选择,典型值47pF。
在这里插入图片描述

(3)控制和复位引脚
  • ALE (与P4.5复用)
    当访问外部存储器或者外部扩展的并行I/O口时,ALE(允许地址锁存)的输出用于锁存地址的低位字节。
  • RST(与P5.4复用)
    当振荡器运行时,在此引脚上出现两个 机器周期的高电平将使单片机复位(单片机内部集成复位电路),该端口默认设为I/O口。
    如果需要单片机接上电源就可以复位,则需要使用上电复位电路:
    在这里插入图片描述
(4)输入/输出(I/O)引脚

IAP15W4K58S4单片机最多有62 根 I/O 口线
P0口(8根):P0.0,P0.1,P0.2,P0.3,P0.4,P0.5,P0.6,P0.7
P1口(8根):P1.0,P1.1,P1.2,P1.3,P1.4,P1.5,P1.6,P1.7
P2口(8根):P2.0,P2.1,P2.2,P2.3,P2.4,P2.5,P2.6,P2.7
P3口(8根):P3.0,P3.1,P3.2,P3.3,P3.4,P3.5,P3.6,P3.7
P4口(8根):P4.0,P4.1,P4.2,P4.3,P4.4,P4.5,P4.6,P4.7
P5口(6根):P5.0,P5.1,P5.2,P5.3,P5.4,P5.5
P6口(8根):P6.0,P6.1,P6.2,P6.3,P6.4,P6.5,P6.6,P6.7
P7口(8根):P7.0,P7.1,P7.2,P7.3,P7.4,P7.5,P7.6,P7.7
(黄色部分只有 LQFP64 封装的IAP15W4K58S4单片机有)

  • 这些I/O 口线可设置成 四种模式:

    • 准双向口/弱上拉
    • 推挽/强上拉
    • 输入/高阻
    • 开漏模式
  • 复位后:准双向口/弱上拉模式

  • 每根I/O口线驱动能力均可达到 20mA,但整个芯片最大不得超过 100mA。

  • 许多 I/O 口线复用

2.4 存储空间

IAP15W4K58S4 存储空间主要特点:程序存储器和数据存储器的寻址空间是分开的。

片内集成3个物理上相互独立的存储器空间:

  • 程序 Flash 存储器(没用作程序存储器的 Flash 存储器可以用做 EEPROM 使用)
  • 内部数据存储器
  • 拓展数据存储器
    在这里插入图片描述
2.4.1 程序Flash存储器
  • 用于存放 用户程序,数据和表格等信息。
  • 58KB —— 0000H~E7FFH
  • 复位后,PC 内容为 0000H
  • 在程序Flash存储器中有中断地址区,这些特殊的内存单元是中断服务程序的入口地址(中断向量)。
2.4.2 内部数据存储器

即 内部RAM ,共256个单元,通常分为两部分:低128单元(00H~7FH),高128单元(80H~FFH)

(1)内部数据存储器低128单元
地址范围说明
30H~7FH数据缓冲区(供用户使用的一般RAM区)
20H~2FH位寻址区(00H~7FH)(也可字节寻址)
18H~1FH工作寄存器3区(R7~R0)
10H~17H工作寄存器2区(R7~R0)
08H~0FH工作寄存器1区(R7~R0)
00H~07H工作寄存器0区(R7~R0)
  • 工作寄存器,也叫通用寄存器。
    任意时刻,CPU只能使用其中一组寄存器,正在使用的寄存器组称为“当前寄存器组”,由程序状态字寄存器PSW中的RS1,RS0位的状态组合决定。
  • 位寻址区,可位寻址?…
  • 用户RAM区,可自由使用
(1)内部数据存储器高128单元和特殊功能寄存器(专用寄存器)

对IAP15W4K58S4来说,80H~FFH既是高128单元,又是特殊功能寄存器的地址,地址空间重叠,但物理上是独立的,用不同的寻址方式加以区分:

  • 高128字节的RAM区使用间接寻址访问(一般用于开辟堆栈)
  • 特殊功能寄存器使用直接寻址访问

特殊功能寄存器(专用寄存器SFR)

  • ① 程序计数器(PC),没有地址,一般不计作专用寄存器
  • ② 累加器(ACC)
  • ③ B寄存器
  • ④ 程序状态字(PSW)
    SW位地址D7HD6HD5HD4HD3HD2HD1HD0H
    节地址 D0HCYACF0RS1RS0OVF1P
    • CY(PSW.7)——进位标志位
    • AC(PSW.6)——辅助进位标志位
    • F0(PSW.5)——用户标志位
    • RS1和RS0(PSW.3,PSW.4)——当前寄存器组选择位
    • OV(PSW.2)——溢出标志位
    • F1(PSW.1)——用户标志位
    • P(PSW.0)——奇偶标志位
  • ⑤ 数据指针(DPTR)
  • ⑥ 堆栈指针(SP)
    专用寄存器的字节地址和位地址
    特殊功能寄存器中,直接地址可被8整除的寄存器也可以进行位寻址(也可字节寻址)

2.5 并行输入/输出口

2.5.1 IAP15W4K58S4单片机的I/O口

2.5.2 IAP15W4K58S4单片机的I/O口的工作模式

每个口的工作模式由 PnM0 和 PnM1 (n=1,2,3,4,5)的相应位控制

PnM1[7:0]PnM0[7:0]I/O口模式
00准双向口(传统8051单片机I/O口模式),灌电流可达20mA,拉电流为270μA,由于制造误差,实际为270uA~150uA
01推挽输入输出(强上拉输出,可达20mA,要加限流电阻,尽量少用)
10仅为输入(高阻)
11开漏(Open Drain),内部上拉电阻断开,要外加上拉电阻

例:P1.7为开漏模式,P1.6为强推挽输入输出模式,P1.4,P1.3,P1.2,P1.1和P1.0为弱上拉模式:

P1M1 = 0xa0; //0xa0=10100000B
P1M0 = 0xc0; //0xc0=11000000B

IAP15W4K58S4单片机的每个I/O口:

  • 在弱上拉时都能承受20mA的灌电流(最好还是使用限流电阻,如1KΩ)
  • 在强推挽输出时都能输出20mA的拉电流(也要加限流电阻)。
  • 整个芯片的工作电流推荐不要超过90mA。即从MCU-Vcc流入的电流不超过90mA,从MCU-GND流出的电流不超过90mA,整体流入/流出电流都不能超过90mA。
2.5.2 IAP15W4K58S4单片机的I/O口的结构:
(1)准双向口工作模式的结构

在这里插入图片描述

(2)推挽输出工作模式的结构

在这里插入图片描述

(3)仅为输入(高阻)工作模式的结构

在这里插入图片描述

(4)开漏输出工作模式的结构

在这里插入图片描述

2.6 时钟电路与复位电路

2.6.1 时钟电路与时序…

2.6.2 单片机的复位…

2.7 IAP15W4K58S4 的时钟(系统时钟)

主时钟可以是内部 R/C 时钟,也可以是外部输入的时钟或外部晶振振荡产生的时钟。

系统时钟是指对主时钟进行分频后CPU,串口,SPI,定时器,CCP/PWM/PCA,ADC的实际工作时钟,用 SYSCLK 表示。
分频相关寄存器:

寄存器地址D7D6D5D4D3D2D1D0
CLK_DIV97HSYSCKO_S1SYSCKO_S0ADRJTX_RXSYSCLKO_2CLKS2CLKS1CLKS0
INT_CLKO8FH-EX4EX3EX2SYSCKO_S2T2CLKOT1CLKOT0CLKO

分频关系:

CLKS2CLKS1CLKS0系统时钟和主时钟的分频关系
000系统时钟频率 = 主时钟频率,不分频
001系统时钟频率 = 主时钟频率/2
010系统时钟频率 = 主时钟频率/4
011系统时钟频率 = 主时钟频率/8
100系统时钟频率 = 主时钟频率/16
101系统时钟频率 = 主时钟频率/32
110系统时钟频率 = 主时钟频率/64
111系统时钟频率 = 主时钟频率/128

系统时钟对外输出:

SYSCKO_S2SYSCKO_S1SYSCKO_S0主时钟的输出频率
000系统时钟不对外输出
001输出时钟频率=系统时钟频率
010输出时钟频率=系统时钟频率/2
011输出时钟频率=系统时钟频率/4
100输出时钟频率=系统时钟频率/16

注意:??? 串口部分 CLK_DIV 和 定时器章节的 主时钟输出 CLK_DIV, INT_CLKO不一致。

三,Keil C51

1. Keil C51 拓展关键字

bit:位变量声明,声明一个位变量或位类型的函数
所有bit类型的变量都被定位在8050片内RAM 的可位寻址区(20H~2FH),共128位。
所以,某范围内最多声明128个 bit 变量

sbit:位变量声明,声明一个可位寻址变量
RAM 中的可位寻址位,或,特殊寄存器中的可寻址位

sbit flag0=flag^0;//flag的第0位

sfr:特殊功能寄存器声明,声明一个特殊功能寄存器(8位)

sfr16:特殊功能寄存器声明,声明一个16位的特殊功能寄存器

包含标准8051单片机所有特殊功能寄存器和他们位定义的头文件 reg51.h 。

stc15.h 包含了标准8051单片机寄存器的定义,编程时只需包含这个。

data:存储器类型说明,直接寻址的8051内部数据存储器
bdata:存储器类型说明,可位寻址的8051内部数据存储器
idata:存储器类型说明,间接寻址的8051内部数据存储器
pdata:存储器类型说明,“分页”寻址的8051外部数据存储器
xdata:存储器类型说明,8051外部数据存储器
code:存储器类型说明,8051程序存储器
interrupt:中断函数声明,定义一个中断函数
reentrant:可重入函数声明,定义一个可重入函数
using:寄存器组定义,指定使用8050的工作寄存器的某一组

2.函数

2.1 中断函数
void 函数名(void) interrupt 中断号 [using n]
//n为工作寄存器组(共4个),[]表示可省略
{
		
}
//---------各个子函数的声明-----------
void delay(long delaytime)
{
		while(delaytime>0) delaytime--;  //子函数的实现代码
}
//---------各个中断函数的实现----------
void INT0_ISR(void) interrupt 0    //外部中断0服务子函数
{ 
             //根据需要填入程序代码
}
void INT1_ISR(void) interrupt 2	 //外部中断1服务子函数
{
            //根据需要填入程序代码
}
void INT2_ISR(void) interrupt 10	 	//外部中断2服务子函数
{
	//根据需要填入程序代码
}
void INT3_ISR(void) interrupt 11	 	//外部中断3服务子函数
{
	//根据需要填入程序代码
}
void INT4_ISR(void) interrupt 16	 	//外部中断4服务子函数
{
	//根据需要填入程序代码
}
void T0_ISR(void) interrupt 1	    //定时器0中断服务子函数
{ 
             //根据需要填入程序代码
}
void T1_ISR(void) interrupt 3	   //定时器1中断服务子函数
{
           //根据需要填入程序代码
}
void T2_ISR(void) interrupt 12	    	//定时器2中断服务子函数
{
	//根据需要填入程序代码
}
void T3_ISR(void) interrupt 19	    //定时器3中断服务子函数
{
    //根据需要填入程序代码
}
void T4_ISR(void) interrupt 20	    //定时器4中断服务子函数
{
    //根据需要填入程序代码
}
void UART1_ISR(void) interrupt 4   //串口1中断服务子函数
{
            //根据需要填入程序代码,注意中断请求标志的清零
}
void UART2_ISR (void) interrupt 8   	//串口2中断子函数
{
	//根据需要填入程序代码,注意中断请求标志的清0
}
void UART3_ISR (void) interrupt 17    //串口3中断子函数
{
    //根据需要填入程序代码,注意中断请求标志的清0
}
void UART4_ISR (void) interrupt 18    //串口4中断子函数
{
    //根据需要填入程序代码,注意中断请求标志的清0
}
void SPI_ISR (void) interrupt 9      //SPI中断子函数
{
             //根据需要填入程序代码,注意中断请求标志的清零
}

void ADC_ISR (void) interrupt 5      //ADC中断服务子函数
{
            //根据需要填入程序代码,注意中断请求标志的清零
}
void LVD_ISR (void) interrupt 6      //低电压检测中断子函数
{
            //根据需要填入程序代码,注意中断请求标志的清零
}
void COMP_ISR (void) interrupt 21    //比较器模块中断服务子函数
{
    //根据需要填入程序代码,注意中断请求标志的清0
}
void PCA_ISR (void) interrupt 7      //PCA中断子函数
{
            //根据需要填入程序代码,注意中断请求标志的清零
}
void PWM_ISR (void) interrupt 22    //PWM模块中断服务子函数
{
    //根据需要填入程序代码,注意中断请求标志的清0
}
void PWMFLT_ISR (void) interrupt 23    //PWM异常检测模块中断服务子函数
{
    //根据需要填入程序代码,注意中断请求标志的清0
}
2.2 指定存储模式

small ,compact,large

void fun1(void) small
{
}
2.3 函数的重入

不可重入的函数,在运行过程中不可被中断

解决函数重入问题:

① 只允许主程序或中断之一调用该函数

#pragma disable

② 说明该函数可重入
(模拟堆栈)

void func (...) reentrant;

注意:

  • 通常中断程序使用与主程序不同的工作寄存器组。
  • 对可重入函数,在其前面加上开关:#pragma noaregs,以禁止编译器使用绝对寄存器寻址,可生成不依赖于寄存器组的代码。
2.4 库函数

三,中断

3.1 中断源

中断源是指能发出中断请求,引起中断的装置或事件。

IAP15W4K58S4单片机提供21个中断请求源:

  • 5个外部中断请求(INT0,INT1…)
  • 5个片内定时/计数器溢出中断请求
  • 4个片内异步串行口(UART)中断请求
  • 1个ADC中断
  • 1个低电压检测中断
  • 1个PCA中断
  • 1个SPI中断
  • 1个比较器中断
  • 1个PWM中断以及1个PWM异常检测中断。

复位后禁止一切中断。禁止由两级控制组成

3.2 中断结构:

在这里插入图片描述

中断总控制

复位后禁止一切中断。禁止由两级控制组成。总控制由IE寄存器最高位EA控制

寄存器地址D7D6D5D4D3D2D1D0复位值
IEA8HEAELVDEADCESET1EX1ET0EX000000000B

EA = 1 则总中断允许,还需要看个别中断源的分控制。

3.3 外部中断和定时器中断

3.3.1 中断请求标志

外部中断和定时器中断的请求标志在 定时/计数器 T0,T1 的控制寄存器 TCON 中:

寄存器地址D7D6D5D4D3D2D1D0复位值
TCON88HTF1TR1TF0TR0IE1IT1IE0IT000000000B

------外部中断0/1-------
① IT0/1:外部中断 INT0/1 触发方式控制位,可由软件置0/1。

  • 0:上升沿和下降沿均可触发外部中断,触发时置位 IE0/1。
  • 1:下降沿触发方式,触发时置位 IE0/1。

② IE0/1:外部中断 INT0/1 请求标志。触发外部中断0后使该位位1,以此向 CPU 请求中断。进入中断后硬件自动置0。

------定时/计数器0/1-------
① TR0/1:定时/计数器 T0/1 启动/停止 控制位。
② TF0/1:定时/计数器 T0/1 的溢出中断标志。进入中断后硬件自动置0,也可软件清0。

注意:

  • 外部中断0和外部中断1还可以用于将单片机从掉电模式唤醒。
  • 外部中断2/3/4 只能下降沿触发,其中断请求标志位对用户不可见。当相应的中断服务程序执行后或EXn=0(n=2,3,4),这些中断请求标志位会自动地被清0。外部中断2/3/4也可以用于将单片机从掉电模式唤醒。
  • 定时器2/3/4 的中断请求标志位对用户不可见。当相应的中断服务程序执行后或ET2=0/ET3=0/ET4=0,中断请求标志位会自动地被清0。
3.3.2 中断允许位

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B
INT_CLKO8FH-EX4EX3EX2-T2CLKOT1CLKOT0CLKOX000X000B

ET1:定时器1中断允许控制位
EX1:外部中断 INT1中断允许控制位
ET0:定时器0中断允许控制位
EX0:外部中断 INT0中断允许控制位
ET4:定时器4中断允许控制位
ET3:定时器3中断允许控制位
ET2:定时器2中断允许控制位
EX4:外部中断 INT4中断允许控制位
EX3:外部中断 INT3中断允许控制位


3.4 串口的中断

3.4.1 中断请求标志
寄存器地址D7D6D5D4D3D2D1D0复位值
SCON98HSM0/FESM1SM2RENTB8RB8TIRI00000000B
S2CON9AHS2SM0-S2SM2S2RENS2TB8S2RB8S2TIS2RI0X000000B
S3CONACHS3SM0S3ST3S3SM2S3RENS3TB8S3RB8S3TIS3RI0X000000B
S4CON84HS4SM0S4ST4S4SM2S4RENS4TB8S4RB8S4TIS4RI0X000000B

------串口1/2/3/4控制寄存器 (S2/3/4)SCON 中的标志位-------
① (S2/3/4)RI:串口1/2/3/4接收中断标志。(接收完毕后置1申请中断),也可用于查询。
② (S2/3/4)TI:串口1/2/3/4发送中断标志。(发送完毕后置1申请中断),也可用于查询。

注意:

  • 这些中断请求标志都不能自动清0,需中断程序中软件清0。
  • 接收和发送中断共用一个中断入口地址,故需软件查询是哪种中断。
  • 其余控制位详见 “串口通信”。
3.4.2 中断允许位

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
IEA8HEAELVDEADCESET1EX1ET0EX000000000B
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B

ES:串口1中断允许控制位
ES4:串口4中断允许控制位
ES3:串口3中断允许控制位
ES2:串口2中断允许控制位


3.5 低电压检测中断

3.5.1 中断请求标志

电源控制寄存器 PCON:

寄存器地址D7D6D5D4D3D2D1D0复位值
PCON87HSMODSMOD0LVDFPOFGF1GF0FDIDL00110000B

LVDF:是低电压检测标志位,同事也是低电压检测中断请求标志位。
在正常工作和空闲工作状态时,内部工作电压 Vcc 低于低电压检测门槛电压时 LVDF 自动置1,不管低电压检测中断是否被允许。该位只能软件清0,若清0后还是低于门槛电压,该位又被置1。

3.5.2 中断允许位

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
IEA8HEAELVDEADCESET1EX1ET0EX000000000B

ELVD:低电压检测允许位。
进入掉电工作状态前,若该位=0,则低电压检测电路不工作。若该位=1,则低于门槛电压后产生低电压检测中断并将MCU 从掉电状态唤醒。

3.6 PCA 的中断

3.6.1 中断请求标志

PCA控制寄存器 CCON :

寄存器地址D7D6D5D4D3D2D1D0复位值
CCOND8HCFCR----CCF1CCF000XXXX00B

① CF:PCA 计数器溢出标志位。

  • 当 ECF 置1时,CF标志可用来产生中断。
  • 可通过软件/硬件置1,但只能软件清0。

② CCF1/CCF0:PCA 个个模块的中断标志。

  • 硬件置1,只能软件清0。
  • 中断服务程序中,判断哪个模块产生中断。
3.6.2 中断允许

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
CCAPM0DAH-ECOM0CAPP0CAPN0MAT0TOG0PWM0ECCF0X0000000B
CCAPM1DBH-ECOM1CAPP1CAPN1MAT1TOG1PWM1ECCF1X0000000B
CMODD9HCIDL---CPS2CPS1CPS0ECF0XXX0000B

ECCFn(n=0,1):使能 CCFn 中断。
ECF:PCA 计数器溢出中断允许控制位。

3.7 SPI 的中断

3.7.1 中断请求标志

SPI 状态寄存器SPSTAT:

寄存器地址D7D6D5D4D3D2D1D0复位值
SPSTATCDHSPIFWCOL------00XXXXXXB

SPIF:SPI 传输完成标志。

  • 一次传输完成时,SPIF 被置位。
  • ESPI=1,EA=1 时,SPIF 置位将产生中断。
  • SPI 处于主模式且 SSIG=0 时,若SS 为输入并被驱动为低电平,SPIF 也将置位,表示“模式改变”。
  • 需要软件清 0 。

其余位详见“数据通信”。

3.7.2 中断允许

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
IE2AFH-ET4ET3ES4ES3ET2ESPIES2X0000000B

ESPI:SPI 中断允许控制位

3.8 ADC 的中断

3.8.1 中断请求标志
寄存器地址D7D6D5D4D3D2D1D0复位值
ADC_CONTRBCHADC_POWERSPEED1SPEED0ASC_FLAGADC_STARTCHS2CHS1CHS000000000B

ADC_FLAG:A/D 转换结束标志位。

  • A/D 转换完成后,ADC_FLAG=1.
  • 若允许A/D 转换中断(EADC=1,EA=1),将产生中断。
  • 也可软件查询是否转换完成。
  • 无论是否中断一定要记得 软件清 0。
3.8.2 中断允许

EA = 1 且:

寄存器地址D7D6D5D4D3D2D1D0复位值
IEA8HEAELVDEADCESET1EX1ET0EX000000000B

EADC:ADC中断允许控制位。

3.9 PWM 的中断

3.9.1 中断请求标志

PWM 中断标志寄存器 PWMIF 和 PWM 外部异常控制寄存器 PWMFDCR:

寄存器地址D7D6D5D4D3D2D1D0复位值
PWMIFF6H-CBIFC7IFC6IFC5IFC4IFC3IFC2IFX0000000B
PWMFDCRF7H--ENFDFLTFLIOEFDIFDCMPFDIOFDIFXX000000B

① CBIF:PWM 计数器回0 中断标志位。PWM 计数器回0时硬件置1,申请中断。
② CnIF(n=2~7):第 n 通道的PWM 中断标志位。PWM 发生翻转时硬件置1,申请中断。
③ FDIF:PWM异常检测中断标志。
注意:

  • 这些中断标志要由 软件清 0 。
3.9.2 中断允许
寄存器地址D7D6D5D4D3D2D1D0复位值
PWMCRF5HENPWMECBIENC7OENC6OENC6OENC6OENC6OENC6O00000000B
PWMFDCRF7H--ENFDFLTFLIOEFDIFDCMPFDIOFDIFXX000000B

ECBI:PWM 计数器回 0 中断允许控制位。
EFDI:PWM 异常检测中断允许控制位。

3.10 比较器的中断

3.10.1 中断请求标志

比较控制寄存器 CMPCR1:

寄存器地址D7D6D5D4D3D2D1D0复位值
CMPCR1E6HCMPENCMPIFPIENIEPISNISCMPOECMPRES00000000B

CMPIF:比较器中断标志。

  • CMPIF=(CMPIF_p||CMPIF_n)
  • CMPIF_p:比较器上升沿中断标志,若允许上升沿中断允许位 PIE=1,则申请中断。
  • CMPIF_n:比较器下降沿中断标志,若允许下降沿中断允许位 NIE=1,则申请中断。
  • 对 CMPIF 写0 后,CMPIF_p 和 CMPIF_n 自动置0
  • 需软件清 0。
3.10.2 中断允许

PIE:比较器上升沿中断允许位。
NIE:比较器下降沿中断允许位。

3.11 优先级

中断优先级寄存器:

寄存器地址D7D6D5D4D3D2D1D0复位值
IPB8HPPCAPLVDPADCPSPT1PX1PT0PX000000000B
IP2B5HHH----PPWMFDPPWMPSPIPS2XXXX0000B

置1 为高优先级,0为低。

PPCA:PCA
PPLVD:低电压检测
PADC:ADC
PS:串口1
PT1/0:定时器1/0
PX1/0:外部中断 INT1/0
PPWMFD:PWM 异常检测
PPWM:PWM
PSPI:SPI
PS2:串口2

还存在着默认优先级(辅助优先级),即,同时申请中断时,中断号小的优先:

中断号查询

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值