用P3.2做I/O的第三个中断按钮程序烧录后没有效果
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能? 什么型号?多少脚的芯片?
超31号中断要打补丁或重定向,做了吗? 王昱顺 发表于 2025-1-25 14:16
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能?
void P3_IO_Init(void)
{
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM1 = 0Xff;
P3INTE= 0X08; //打开中断
}
void P3_IO_ISR(void) interrupt 40
{
u8 intf;
intf = P3INTF;
if( intf ) //判断也没有IO触发了中断
{
P3INTF = 0;
if( intf & 0x08 )//判断是否是P33按钮按下
{
passward = 1;
//P01 = !P01;
}
if( intf & 0x04 )//判断是否是P32按钮按下
{
passward = 2;
//P01 = !P01;
}
}
}
***
//main中:
P3_IO_Init(); //IO中断初始化
P4_IO_Init();
其他地方没变,就是I/O原例程,要做的是作业:抢答器,需要三个按键中断。 王昱顺 发表于 2025-1-25 14:16
可否给出完整的初始化程序?
有可能是没有打开对应引脚的IO中断使能?
感谢回复与关注。 Lkck8210 发表于 2025-1-25 23:54
什么型号?多少脚的芯片?
超31号中断要打补丁或重定向,做了吗?
感谢关注,是AI8051U V1.2 实验箱,第14集I/O中断例程的作业:抢答器,31号中断打补丁或重定向,例程能调的通,没有报错,两个按键的烧录例程没有问题,三个按键时P32/P34/P35都试过,用一个Init P3,两个P3.3/P3.2,是不是一个中断定义,控制不了多个端口呢? 香河英茂工作室 发表于 2025-1-26 09:13
void P3_IO_Init(void)
{
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM1 = 0Xff;
这一句错误了
你现在设置的是低电平中断,也就是端口电平为低的时候会反复重复进入中断,可能导致一些奇怪的问题。
改为
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM1 = 0X00;
再试一下
王昱顺 发表于 2025-1-26 09:39
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM1 = 0Xff;
感谢分享,我这就试试。 王昱顺 发表于 2025-1-26 09:39
P3IM0 = 0X00; //IO中断模式设置为了下降沿
P3IM1 = 0Xff;
感谢关注,试了P3.2/P3.3/P3.4/P3.5不能同时控制数码管和LED,不知道为什么。不知道知道是不是端口冲突,还是一个声明P3端口,下面的具体端口不能使用一个定义。 香河英茂工作室 发表于 2025-1-27 13:32
感谢关注,试了P3.2/P3.3/P3.4/P3.5不能同时控制数码管和LED,不知道为什么。不知道知道是不是端口冲突, ...
只要按下按键能有效果就说明IO中断没有问题,至于不能同时控制的问题大概是程序的逻辑问题
页:
[1]
2