欢迎来到天天文库
浏览记录
ID:39351628
大小:16.00 KB
页数:3页
时间:2019-07-01
《一体化红外接收头控制》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#defineBHSELP2SEL//定义捕获端口#defineBH_IOBIT2unsignedintCyc=0,LastCCR0=0,flag=0,key=0;voidInitBhTimerA();voidInitSys();unsignedinttranslate(unsignedintnumber);unsignedintgetkey()//得到按键的值{returnkey;}unsignedinttranslate(unsignedintnumber)//将传入函数的数转化成七段数码管显示{
2、unsignedinti;switch(number){case0:i=0xFC;break;case1:i=0x60;break;case2:i=0xDA;break;case3:i=0xF2;break;case4:i=0x66;break;case5:i=0xB6;break;case6:i=0xBE;break;case7:i=0xE0;break;case8:i=0xFE;break;case9:i=0xF6;break;}returni;}voidInitBhTimerA()//初始化{P6DIR=0XFF;P6OUT=0X00;P
3、5DIR=0XFF;P5OUT=0X00;TACTL=TASSEL_2+ID_3+TACLR;//定时器A,时钟源:ACLK,连续计数模式CCTL0=CCIS_1+CM_2+CAP;//选择上降沿捕获,CCIB(P2.2)为信号源,BHSEL
4、=BH_IO;//选择P2.2使用第二功能TACTL
5、=MC_2+TACLR;//打开计数器CCTL0
6、=CCIE;//捕获中断允许InitSys();}voidInitSys(){unsignedintiq0;//使用XT2振荡器BCSCTL1&=~XT2OFF;//打开XT2振荡器do{IFG1&=~
7、OFIFG;//清除振荡器失效标志for(iq0=0xFF;iq0>0;iq0--);//延时,等待XT2起振}while((IFG1&OFIFG)!=0);//判断XT2是否起振BCSCTL2=SELM_2+SELS;//选择MCLK、SMCLK为XT2_EINT();//打开全局中断控制,若不需要打开,可以屏蔽本句}voidmain(){WDTCTL=WDTPW+WDTHOLD;InitBhTimerA();while(1){P6OUT=BIT1+BIT2;P5OUT=translate((getkey()%10));P6OUT=BIT0+
8、BIT2;P5OUT=translate((getkey()/10)%10);P6OUT=BIT0+BIT1;P5OUT=translate((getkey()/100));}}#pragmavector=TIMERA0_VECTOR//捕捉中断,根据两次中断的时间判断传入的值,最后转化成需要的整数__interruptvoidTimerA0(){Cyc=CCR0-LastCCR0;LastCCR0=CCR0;if((Cyc>12000)&&(Cyc<14000)){flag=0;key=0;}flag++;//2233112613401if(
9、(flag>18)&&(flag<=26)){if((Cyc>1000)&&(Cyc<2000))key=key*2;if((Cyc>2000)&&(Cyc<3000))key=key*2+1;}//flag++;//Cyb[(flag-2)]=Cyc;}
此文档下载收益归作者所有