if(P32 == 0){
Delay20ms();
if(P32 == 0){
i++;
if((i % 8) == 1){
P00 = 0;
P01 = 1;
P02 = 1;
P03 = 1;
P04 = 1;
P05 = 1;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if((i % 8) == 2){
P00 = 0;
P01 = 0;
P02 = 1;
P03 = 1;
P04 = 1;
P05 = 1;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if((i % 8) == 3){
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 1;
P04 = 1;
P05 = 1;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if(i % 8 == 4){
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 0;
P04 = 1;
P05 = 1;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if((i % 8) == 5){
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 0;
P04 = 0;
P05 = 1;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if(i % 8 == 6){
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 0;
P04 = 0;
P05 = 0;
P06 = 1;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if((i % 8) == 7){
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 0;
P04 = 0;
P05 = 0;
P06 = 0;
P07 = 1;
printf_usb("i = %d\r\n", i);
}
else if((i % 8) == 0) {
P00 = 0;
P01 = 0;
P02 = 0;
P03 = 0;
P04 = 0;
P05 = 0;
P06 = 0;
P07 = 0;
printf_usb("i = %d\r\n", i);
}
while(P32 == 0);
}
}
IO那一节视频课后任务2是否正确? cbai 发表于 2025-4-8 14:22
// 课后任务2:按一下亮一颗灯,再按一下亮两颗灯,直到全亮(变量+加法和乘法)
if(P32 == 0){
请问一下大佬能解答一下我的疑问吗:
按照老师在第十四课中的例子
void P3_IO_Init(void){ //P3口中断初始化
P3IM0 = 0x00;
P3IM1 = 0xff; //IO口中断模式设置为下降沿
P3INTE = 0x08;//P33口中断使能
}
这段程序解释有问题吧?应该是配置P3口是低电平触发中断吧。 cbai 发表于 2025-4-18 15:30
请问一下大佬能解答一下我的疑问吗:
按照老师在第十四课中的例子
void P3_IO_Init(void){ //P3口中断 ...
嗯,低电平中断,以手册为准
ercircle 发表于 2025-4-18 15:40
嗯,低电平中断,以手册为准
我想问一下老师,P33和P47配置为下降沿触发中断,为什么没有效果?
void P3_IO_Init(void){ //P3口中断初始化
P3IM0 = 0x00;
P3IM1 = 0x00; //IO口中断模式设置为下降沿
P3INTE = 0x08;//P33口中断使能
}
是因为P33和P47的初始状态不确定吗? cbai 发表于 2025-4-18 16:08
我想问一下老师,P33和P47配置为下降沿触发中断,为什么没有效果?
void P3_IO_Init(void){ //P3口中断 ...
仅靠这三行代码可不够,还要配置P3P4 IO寄存器,P4中断寄存器。以及中断响应函数。多翻翻手册,这些手册里都有例程。
ercircle 发表于 2025-4-18 16:14
仅靠这三行代码可不够,还要配置P3P4 IO寄存器,P4中断寄存器。以及中断响应函数。多翻翻手册,这些手册 ...
都配置了的,只是没有贴出完整的代码,想问的是
void P3_IO_Init(void){ //P3口中断初始化
P3IM0 = 0x00;
P3IM1 = 0x00; //IO口中断模式设置为下降沿
P3INTE = 0x08;//P33口中断使能
}
配置下降沿数码管没反应,但是配置下面
void P3_IO_Init(void){ //P3口中断初始化
P3IM0 = 0x00;
P3IM1 = 0xff; //IO口中断模式设置为低电平
P3INTE = 0x08;//P33口中断使能
}
就有效果,想问一下前面那种下降沿中断为什么没有效果?
cbai 发表于 2025-4-18 17:02
都配置了的,只是没有贴出完整的代码,想问的是
void P3_IO_Init(void){ //P3口中断初始化
P3I ...
这种问题直接上传工程 cbai 发表于 2025-4-18 17:02
都配置了的,只是没有贴出完整的代码,想问的是
void P3_IO_Init(void){ //P3口中断初始化
P3I ...
我拿这个例程在擎天柱上测试是有效的噢
#include "Ai8051U.H"
#include "def.H"
void main(void) {
WTST = 0;
EAXSFR();
CKCON = 0;
P2M0 = 0;
P2M1 = 0;
P3M0 = 0;
P3M1 = 0;
P3IM0 = 0;
P3IM1 = 0;
P3INTE = 0x08;
P2 = 0x0F;
EA = 1;
while (1) {
}
}
void P3_ISR() interrupt P3INT_VECTOR{
u8 intf ;
intf = P3INTF;
if(intf ){
P3INTF = 0;
if(intf & 0x08){
P2 = ~P2;
}
}
}
页:
1
[2]