单片机芯 片: STC12C5A60S2
晶振是11.0592MHZ
中断优先级的基本规则
1.低优先级中断可被高优先级中断所中断
2.任何中断都不被同级中断所中断
然而datashhet里STC12C5A60S2单片机复位后IP、IP2、IPH、IP2H均为00H,各个中断源都是低优先级=》不能被同级中断所中断
中断优先控制寄存器IP、IP2、IPH、IP2H
例如:想要实现外部中断1被中断0中断,设置外部中断0为最高优先级(优先级3)
也就是另
PX0H = 1;
PX0 = 0;
结果是错误的
因为IP、IP2、IPH、IP2H各位都可以程序置1,清0,但是只有IP可以位操作,而IP2、IPH、IP2H寄存器只能使用字节指令来更新
程序最终为
PX0 = 0;
IPH |= 0X01;
测试结果:程序正常工作
例:设置串口1中断优先级为优先级2
程序最终为
PS = 0;
IPH |= 0X10;
测试:STC12C5A60S2单片机优先级2的串口中断无法被优先级3的外部中断0所中断,将串口设置成优先级1就可以被优先级3 的中断了!!不知是不是哪里有问题了