c51 如何设置多个中断
同时中断要分先后级
例如: P1。0,P1。1各为一个中断源,P1。0,P1。1再各通过一个二极管(接负极)后复联(及线与)后的公共端(正极)接INT1。
在INT1中断中:
/*------------------------------------
外部INT1中断服务程序
------------------------------------*/
void int1proc() interrupt IE1_VECTOR using 1
{
if (!P1^0 && !P1^1) {//同时中断时
//加入P1^0中断处理代码
//加入P1^1中断处理代码
}
else if (!P...全部
同时中断要分先后级
例如: P1。0,P1。1各为一个中断源,P1。0,P1。1再各通过一个二极管(接负极)后复联(及线与)后的公共端(正极)接INT1。
在INT1中断中:
/*------------------------------------
外部INT1中断服务程序
------------------------------------*/
void int1proc() interrupt IE1_VECTOR using 1
{
if (!P1^0 && !P1^1) {//同时中断时
//加入P1^0中断处理代码
//加入P1^1中断处理代码
}
else if (!P1^0) {
//加入P1^0中断处理代码
}
else if (!P1^1) {
//加入P1^1中断处理代码
}
}
或
/*------------------------------------
外部INT1中断服务程序
------------------------------------*/
void int1proc() interrupt IE1_VECTOR using 1
{
if (!P1^0) {
//加入P1^0中断处理代码
}
if (!P1^1) {
//加入P1^1中断处理代码
}
}
上例较好,但费代码。
下例虽省代码,但存在P1^0中断处理代码过长时,P1^1信号丢失的问题。收起