完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
#include
***it xin_hao=P3^2; ***it feng=P2^2; void delay_2ms(unsigned char); void INT0_init(); unsigned char table1[]={ //共阳极数码管,个位字符0-9显示 0x41,0x6f,0x84,0x06, 0x2b,0x13,0x11,0x67, 0x00,0x02,0x77,0x7c }; unsigned int date; unsigned char key,wen_du; void main() { unsigned char i; INT0_init(); feng=1; while(1) { switch(key) { case 0x7f: //key1 开关 P1=table1[1]; EA=1; break; case 0x6e: //key1 开关 P1=table1[2]; EA=1; break; case 0x76: //key3 减小 P1=table1[3]; EA=1; break; case 0x7a: //key4 定温 P1=table1[4]; EA=1; break; case 0x7C: //key5 定时 P1=table1[5]; EA=1; break; case 0x3d: //key6 保存 for(i=0;i<3;i++) { delay_2ms(1); } P1=table1[wen_du]; wen_du++; if(wen_du==10) { wen_du=0; } EA=1; break; default: EA=1; ; } } } void INT0_init() { IT0=0; //低电平触发方式 EX0=1; EA=1; } /************************中断0解码服务子程序**********************/ void int0(void) interrupt 0 using 2 { unsigned char i,k,m; k=0; m=0; EA=0; key=0; date=0; for(i=0;i<12;i++) { while(xin_hao==0); while(xin_hao==1) { delay_2ms(1); m++; } if(m<17) //24 低电平 { date&=0xfffe; date=date<<1; // P2=0x45; } else { date|=0x0001; date=date<<1; //P2=0x00; } m=0; } date=date>>1; key=date; } 重点看下我这个中断解码函数,可以读到数据,但和手册的数据不同,出了误码自己不容易更正,我估计读的数据应该不对吧,还有怎么只让他接受第一帧数据,这个程序运行起来,按key6一次,要求是wen_du只增加一个值,可是实际按一下加好几次,求高手指教? |
|
相关推荐 |
|
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-12 08:16 , Processed in 0.676289 second(s), Total 51, Slave 36 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
2453