- 打卡等级:偶尔看看III
- 打卡总天数:55
- 最近打卡:2026-03-03 08:35:54
已绑定手机
金牌会员
- 积分
- 1374
|
发表于 2026-1-5 20:54:08
|
显示全部楼层
先把P4 调为最高中断优先级
void P4_IO_Init(void) //P47端口用作中断初始化
{
P4IM0 = 0X00; //P4口中断模式为低电平中断
P4IM1 = 0xFF;
P4INTE= 0X80; //使能 P4.7 口中断,7是最高位对应0X80
PINIPH |= (1<<4); //设置P47口中断优先级为3级(最高)1<<4就是0x10
PINIPL |= (1<<4); //写入最高优先级,|是不影响其他位
//这样你会发现出问题了,定时器0的优先级都给搞低
//了,所以无法正常显示2,所以要去把定时器0 的优先级也调整到最高
}
接着要把定时器0 的优先级也调整到最高:
void Timer0_Init(void) //1毫秒@24.000MHz
{
TM0PS = 0x00; //设置定时器时钟预分频 ( 注意:并非所有系列都有此寄存器,详情请查看数据手册 )
AUXR &= 0x7F; //定时器时钟12T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x30; //设置定时初始值
TH0 = 0xF8; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
ET0 = 1; //使能定时器0中断
IPH |= (1<<1); //把定时器0优先级设置为最高
IP |= (1<<1);
}
这样就正常了
|
|