完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
求指导,想要实现按键4按下LED4延时0.5秒闪烁,按其他键或者再按一下熄灭;按键2按下LED2稍暗,按其他键或者再按一下熄灭,按键3按下LED2稍亮,按其他键或者再按一下熄灭,程序应该怎么修改呢?程序及按键编码值如下:
按键编码值: 按键1:00-FF-0C-F3 按键2:00-FF-18-E7 按键3:00-FF-5E-A1 按键4:00-FF-08-7F 按键5:00-FF-1C-E3 按键6:00-FF-5A-A5 按键7:00-FF-42-BD 按键8:00-FF-52-AD 程序: #include #include #define NOP() _nop_() #define uchar unsigned char #define uint unsigned int #define delayNOP(); {_nop_();_nop_();_nop_();_nop_()}; void delay(uchar x); void delay1(int ms); void delayms(uint); void beep(void); ***it IRIN = P3^2; ***it LED1 = P1^0; ***it LED2 = P1^1; ***it LED3 = P1^2; ***it LED4 = P1^3; ***it LED5 = P1^4; ***it LED6 = P1^5; ***it LED7 = P1^6; ***it LED8 = P1^7; ***it BEEP = P2^3; uchar IRCOM[7]; unsigned char Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9,i,j; main() { IE = 0x81; TCON = 0x01; IRIN=1; BEEP=1; LED1=1; LED2=1; LED3=1; LED4=1; LED5=1; LED6=1; LED7=1; LED8=1; delay1(10); while(1); } void IR_IN(void) interrupt 0 { unsigned char j,k,N=0; EX0 = 0; delay(15); if (IRIN==1) { EX0 =1; return; } while (!IRIN) {delay(1);} for (j=0;j<4;j++) { for (k=0;k<8;k++) { while (IRIN) {delay(1);} while (!IRIN) {delay(1);} while (IRIN) { delay(1); N++; if (N>=30) { EX0=1; return; } } IRCOM[j]=IRCOM[j] >> 1; if (N>=8) {IRCOM[j] = IRCOM[j] | 0x80;} N=0; } } if (IRCOM[2]!=~IRCOM[3]) { EX0=1; return; } IRCOM[5]=IRCOM[2] & 0x0F; IRCOM[6]=IRCOM[2] >> 4; if(IRCOM[5]>9) { IRCOM[5]=IRCOM[5]+0x37;} else IRCOM[5]=IRCOM[5]+0x30; if(IRCOM[6]>9) { IRCOM[6]=IRCOM[6]+0x37;} else IRCOM[6]=IRCOM[6]+0x30; Y1=Y2=Y3=Y4=Y5=Y6=Y7=Y8=Y9=0; switch(IRCOM[2]) { case 0x0C: Y1=0x01; break; case 0x18: Y2=0x01; break; case 0x5E: Y3=0x01; break; case 0x08: Y4=0x01; break; case 0x1C: Y5=0x01; break; case 0x5A: Y6=0x01; break; case 0x42: Y7=0x01; break; case 0x52: Y8=0x01; break; } if(Y1&0xFF)LED1=0; else LED1=1; if(Y2&0xFF)LED2=0; else LED2=1; if(Y3&0xFF)LED3=0; else LED3=1; if(Y4&0xFF)LED4=0; else LED4=1; if(Y5&0xFF)LED5=0; else LED5=1; if(Y6&0xFF)LED6=0; else LED6=1; if(Y7&0xFF)LED7=0; else LED7=1; if(Y8&0xFF)LED8=0; else LED8=1; beep(); EX0 = 1; } void beep(void) { unsigned char i; for (i=0;i<100;i++) { delay(4); BEEP=!BEEP; } BEEP=1; } void delay(unsigned char x) { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } void delay1(int ms) { unsigned char y; while(ms--) { for(y = 0; y<250; y++) { _nop_(); _nop_(); _nop_(); _nop_(); } } } |
|
相关推荐
1个回答
|
|
你这代码,看着头疼。。。。你现在能实现遥控控制了吗?如果可以,先一个一个按键来调试通了再联合调试
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
551 浏览 0 评论
【每周推荐】采用11代Intel CPU,基于youyeetoo X1开发板搭建少儿AI智能STEAM积木平台
853 浏览 0 评论
2529 浏览 2 评论
【youyeetoo X1 windows 开发板体验】+ 影音处理和AI模型移植
2268 浏览 5 评论
I.MX6ULL-飞凌 ElfBoard ELF1板卡- 移植zbar的方法
1708 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
5788 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-4-25 00:58 , Processed in 0.564192 second(s), Total 71, Slave 54 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号