完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
本帖最后由 ssyewansui 于 2015-10-21 21:54 编辑
写了一个单片机红外线的程序,用中断的方式,接P3.2,读取遥控器发射的数值在数码管上显示出来,为什么只有按下9以后数码管才会稳定的显示数字,如果不按9,按别的键数码管显示的数字一闪就没了 #include #include #define uchar unsigned char #define uint unsigned int #define NOP();{_nop()_;_nop()_;_nop()_;_nop()_;} uint num; void delay(uchar x) { unsigned char i; while(x--) { for (i = 0; i<13; i++) {} } } ***it irin=P3^2; uchar ircom[7]; void main() { P2=0xff; irin=1; IE=0x81; TCON=0x01; } void ir() interrupt 0 { unsigned char j,k,n=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;} switch(ircom[2])//根据按下的键显示数值 { case ~0xe9: P2=~0x3f;num=0;break; case ~0xf3: P2=~0x06;num=1;break; case ~0xe7: P2=~0x5b;num=2;break; case ~0xa1: P2=~0x4f;num=3;break; case ~0xf7: P2=~0x66;num=4;break; case ~0xe3: P2=~0x6d;num=5;break; case ~0xa5: P2=~0x7d;num=6;break; case ~0xbd: P2=~0x07;num=7;break; case ~0xad: P2=~0x7f;num=8;break; case ~0xb5: P2=~0x6f;num=9;break; default: P2=0xff;//按下的不是数字键则数码管什么也不显示 } }
|
|
相关推荐
4个回答
|
|
建议发c文件,这样看比较好
|
|
|
|
|
|
|
|
下载还要积分,晕
|
|
|
|
谢谢分享的好资料
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
751 浏览 0 评论
使用Keil建立完整的工程,并使用外部中断0触发数码管显示903
1330 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-使用AHT20进行环境监测之AHT20传感器介绍
1184 浏览 0 评论
899 浏览 0 评论
947 浏览 1 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
11865 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-3 20:24 , Processed in 0.831551 second(s), Total 84, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号