文档详情

红外遥控子程序.doc

发布:2017-04-03约7.27千字共6页下载文档
文本预览下载声明
/********************************************************** 功能: msp430g2553利用普通的红外接收一体装置 硬件连接图: 红外接收连接图 1838T ..............P1.7//输入并且利用P1.7外部中断一定带上拉电阻 用法: 1.先配置P1.7外部中断!!!!!!!!!!!!!!!!!!!!!!!!! P1OUT |= Hongwai_1838T; //Hongwai_1838T上拉电阻 P1REN |= Hongwai_1838T; //使能Hongwai_1838T的上拉电阻 P1IE |= Hongwai_1838T; //Hongwai_1838T中断使能 P1IES |= Hongwai_1838T; //Hongwai_1838T边沿触发中断方式设置 P1IFG = ~Hongwai_1838T; //Hongwai_1838T断标志位清除 2.在while(1)里调用Hongwai_1838T_choose();即:用红外键盘上的按键执行任务 Hongwai_1838T_choose(); 3.开总中断 _EINT(); //开总中断 4.在P1中断服务程序里调用Hongwai_1838T_dsp(); #pragma vector=PORT1_VECTOR __interrupt void Port_1(void) { Hongwai_1838T_dsp(); P1IFG =0; } **********************************************************/ #define Hongwai_1838T BIT3 //红外输入 volatile uchar addr[4]={0}; //编码放在addr[2]数组里 void Hongwai_1838T_dsp(void) { uchar i,j,k=0; if((P1IN Hongwai_1838T)==0) { for(i = 0;i 14;i++) { Delay_us(400); if(P1IN Hongwai_1838T) //9MS内有高电平,则判断为干扰,退出处理程序 { return; } } while(!(P1IN Hongwai_1838T)); //等待9ms低电平过去 for(i = 0;i 4;i++) { for(j = 0;j 8;j++) { while(P1IN Hongwai_1838T); //等待4.5ms 高电平过去 while(!(P1IN Hongwai_1838T));//等待变高电平 while(P1IN Hongwai_1838T) //计算高电平时间 { Delay_us(100); k++; if(k = 30) //高电平时间过长,则退出处理程序 { return; } } addr[i]=addr[i] 1; //接受一位数据 if(k=8) { addr[i]=add
显示全部
相似文档