- 打卡等级:以坛为家I
- 打卡总天数:225
- 最近打卡:2025-05-08 04:33:05
金牌会员
- 积分
- 1152
|
注意事项:
1.对于基本的IO相关概念可以看 前5集。
--------------------------------------------------------------------------------------
概念介绍:
IE中断使能寄存器
EA:总中断允许控制位。EA 的作用是使中断允许形成多级控制。即各中断源首先受 EA 控制;其次还受各中断源自己的中断允许控制位控制。
0:CPU 屏蔽所有的中断申请
1:CPU 开放中断
ELVD:低压检测中断允许位。
0:禁止低压检测中断
1:允许低压检测中断
EADC:A/D 转换中断允许位。
0:禁止 A/D 转换中断
1:允许 A/D 转换中断
ESn:串行口 n 中断允许位。
0:禁止串行口 1 中断
1:允许串行口 1 中断
ETn:定时/计数器 Tn 的溢出中断允许位。
0:禁止 T1 中断
1:允许 T1 中断
EXn:外部中断 n 中断允许位。
0:禁止 INT1 中断
1:允许 INT1 中断
IE2中断使能寄存器
EUSB:USB 中断允许位。
0:禁止 USB 中断
1:允许 USB 中断
ESPI:SPI 中断允许位。
0:禁止 SPI 中断
1:允许 SPI 中断
ESn:串行口 n 中断允许位。
0:禁止串行口 1 中断
1:允许串行口 1 中断
ETn:定时/计数器 Tn 的溢出中断允许位。
0:禁止 T1 中断
1:允许 T1 中断
TCON定时器控制寄存器
TFn:定时器n溢出中断标志。中断服务程序中,硬件自动清零。
IEn:外部中断n中断请求标志。中断服务程序中,硬件自动清零。
TRn:
ITn:
IP中断优先级控制寄存器
PLVD:低压检测中断优先级控制位
00:LVD 中断优先级为 0 级(最低级) 01:LVD 中断优先级为 1 级(较低级)
10:LVD 中断优先级为 2 级(较高级) 11:LVD 中断优先级为 3 级(最高级)
PADC: 中断优先级控制位
00:ADC 中断优先级为 0 级(最低级) 01:ADC 中断优先级为 1 级(较低级)
10:ADC 中断优先级为 2 级(较高级) 11:ADC 中断优先级为 3 级(最高级)
PSn:串口n中断优先级控制位
00:串口n 中断优先级为 0 级(最低级) 01:串口n 中断优先级为 1 级(较低级)
10:串口n 中断优先级为 2 级(较高级) 11:串口n 中断优先级为 3 级(最高级)
PTn:定时器1中断优先级控制位
00:定时器n 中断优先级为 0 级(最低级) 01:定时器n 中断优先级为 1 级(较低级)
10:定时器n 中断优先级为 2 级(较高级) 11:定时器n 中断优先级为 3 级(最高级)
PXn:外部中断1中断优先级控制位
00:INTn 中断优先级为 0 级(最低级) 01:INTn 中断优先级为 1 级(较低级)
10:INTn 中断优先级为 2 级(较高级) 11:INTn 中断优先级为 3 级(最高级)
IP2中断优先级控制寄存器
PSPI:SPI中断优先级控制位
00:SPI 中断优先级为 0 级(最低级) 01:SPI 中断优先级为 1 级(较低级)
10:SPI 中断优先级为 2 级(较高级) 11:SPI 中断优先级为 3 级(最高级)
PPWMn:高级PWMn中断优先级控制位
00:高级 PWMn 中断优先级为 0 级(最低级) 01:高级 PWMn 中断优先级为 1 级(较低级)
10:高级 PWMn 中断优先级为 2 级(较高级) 11:高级 PWMn 中断优先级为 3 级(最高级)
PCMP:比较器中断优先级控制位
00:CMP 中断优先级为 0 级(最低级) 01:CMP 中断优先级为 1 级(较低级)
10:CMP 中断优先级为 2 级(较高级) 11:CMP 中断优先级为 3 级(最高级)
PI2C:I2C中断优先级控制位
00:I2C 中断优先级为 0 级(最低级) 01:I2C 中断优先级为 1 级(较低级)
10:I2C 中断优先级为 2 级(较高级) 11:I2C 中断优先级为 3 级(最高级)
PUSB:USB中断优先级控制位
00:USB 中断优先级为 0 级(最低级) 01:USB 中断优先级为 1 级(较低级)
10:USB 中断优先级为 2 级(较高级) 11:USB 中断优先级为 3 级(最高级)
IP3中断优先级控制寄存器
PRTC:RTC中断优先级控制位
00:RTC 中断优先级为 0 级(最低级) 01:RTC 中断优先级为 1 级(较低级)
10:RTC 中断优先级为 2 级(较高级) 11:RTC 中断优先级为 3 级(最高级)
PI2S:I2S中断优先级控制位
00:I2S 中断优先级为 0 级(最低级) 01:I2S 中断优先级为 1 级(较低级)
10:I2S 中断优先级为 2 级(较高级) 11:I2S 中断优先级为 3 级(最高级)
ET0 : 中断相关寄存器 --> IE(中断允许寄存器) --> ET0
PT0 : 中断相关寄存器 --> IP(中断优先级控制寄存器) --> PT0
TMOD: 特殊功能寄存器列表 --> TMOD(定时器模式寄存器) --> GATE | C/T | M1 | M0 | GATE | C/T | M1 | M0
T0_CT: 定时器 0/1 模式寄存器(TMOD)--> T0_CT
T0CLKO: 特殊功能寄存器列表 --> INTCLKO(中断与时钟输出控制寄存器) --> T0CLKO (定时器 0时钟分频输出)
T0x12: 定时器的相关寄存器 --> AUXR(辅助寄存器1) --> T0x12
T0x12:定时器0速度控制位
0:12T 模式,即 CPU 时钟 12 分频( FOSC/12 FOSC/12 FOSC/12)
1:1T 模式,即 CPU 时钟不分频( FOSC/1 FOSC/1 )
TH0: 定时器的相关寄存器 --> TH0(定时器 0高 8位寄存器)
TL0: 定时器的相关寄存器 --> TL0(定时器 0低 8位寄存器)
---------------------------------------------------------------------------------------
例子分析:
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P0M1 = 0x30; P0M0 = 0x30; //设置P0.4、P0.5为漏极开路(实验箱加了上拉电阻到3.3V)
P1M1 = 0x30; P1M0 = 0x30; //设置P1.4、P1.5为漏极开路(实验箱加了上拉电阻到3.3V)
P2M1 = 0x3c; P2M0 = 0x3c; //设置P2.2~P2.5为漏极开路(实验箱加了上拉电阻到3.3V)
P3M1 = 0x50; P3M0 = 0x50; //设置P3.4、P3.6为漏极开路(实验箱加了上拉电阻到3.3V)
P4M1 = 0x3c; P4M0 = 0x3c; //设置P4.2~P4.5为漏极开路(实验箱加了上拉电阻到3.3V)
P5M1 = 0x0c; P5M0 = 0x0c; //设置P5.2、P5.3为漏极开路(实验箱加了上拉电阻到3.3V)
P6M1 = 0xff; P6M0 = 0xff; //设置为漏极开路(实验箱加了上拉电阻到3.3V)
P7M1 = 0x00; P7M0 = 0x00; //设置为准双向口
display_index = 0;
for(i=0; i<8; i++) LED8[i] = DIS_BLACK; //全部消隐
INT0_cnt = 0;
INT1_cnt = 0;
/*
TCON定时器控制寄存器
TFn:定时器n溢出中断标志。中断服务程序中,硬件自动清零。
IEn:外部中断n中断请求标志。中断服务程序中,硬件自动清零。
TRn:
ITn:
*/
IE1 = 0; //外中断1标志位 见TCON定时器控制寄存器
IE0 = 0; //外中断0标志位
EX1 = 1; //INT1 Enable
EX0 = 1; //INT0 Enable
IT0 = 1; //INT0 下降沿中断 见TCON定时器控制寄存器
// IT0 = 0; //INT0 上升,下降沿中断
IT1 = 1; //INT1 下降沿中断
// IT1 = 0; //INT1 上升,下降沿中断
//INT2, INT3, INT4 实验板上没有引出测试按键,供需要时参考使用
/*IE中断使能寄存器
ESn:串行口 n 中断允许位。
0:禁止串行口 1 中断
1:允许串行口 1 中断
ETn:定时/计数器 Tn 的溢出中断允许位。
0:禁止 T1 中断
1:允许 T1 中断
EXn:外部中断 n 中断允许位。
0:禁止 INT1 中断
1:允许 INT1 中断 */
EX2 = 1; //使能 INT2 下降沿中断 见IE中断使能寄存器
EX3 = 1; //使能 INT3 下降沿中断
EX4 = 1; //使能 INT4 下降沿中断
EA = 1; //允许总中断
while(1)
{
delay_ms(1); //延时1ms
DisplayScan();
}
|
|