msp430红外线解码程序.doc

上传人:M****1 文档编号:558070244 上传时间:2023-11-25 格式:DOC 页数:4 大小:21KB
返回 下载 相关 举报
msp430红外线解码程序.doc_第1页
第1页 / 共4页
msp430红外线解码程序.doc_第2页
第2页 / 共4页
msp430红外线解码程序.doc_第3页
第3页 / 共4页
msp430红外线解码程序.doc_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《msp430红外线解码程序.doc》由会员分享,可在线阅读,更多相关《msp430红外线解码程序.doc(4页珍藏版)》请在金锄头文库上搜索。

1、/消耗资源一个外部中断和一个定时器;#include#include#includemath.h#includenokia.h#define uchar unsigned char#define uint unsigned intuchar I_count=0;uchar start=0;long KEY_value=0;uint temp_time=0;uint key_time=0;uchar USRE0=0;uchar USRE1=0;uchar key=0xff;uchar buff=00;uchar temp2=abcdefg;uchar display=00;void key_de

2、coding(uchar key_1);void inter_init();void inter_init() P1OUT|=BIT0; P1OUT&=(BIT1+BIT3); P1OUT|=BIT5; P1DIR&=BIT0; P1DIR|=BIT1+BIT5+BIT3; P1IES|=BIT0; P1IE|=BIT0; _EINT();#pragma vector=PORT1_VECTOR_interrupt void cood_interrup() if(P1IFG&BIT0=BIT0) P1IFG&=BIT0; I_count+;if(start)/第三次中断到第34次中断做装数据工作

3、; temp_time=TAR;/*temp_time=TH1;temp_time1500)/数据位为1;KEY_value|=0x01;KEY_value=1;/USRE1=KEY_value24;USRE0=KEY_value16;if(USRE1USRE0)=0XFF)key=KEY_value8;I_count=0;KEY_value=0; start=0;TACTL&=MC1;/TR1=0; TACTL|=TACLR;/TAR=0;/TH1=0;TL1=0;/每一次检测定时器必须清零;else if(I_count=1) /TACTL&=MC0; /连码也会进入此函数;/但第三次TA

4、CTL|=MC1; else if(I_count=2) temp_time=TAR; /*temp_time=TH1; temp_time12000) start=1; TAR=0;KEY_value=0;/TH1=0;TL1=0;else I_count=0;TACTL&=MC1;TACTL|=TACLR;KEY_value=0;/TH1=0;TL1=0;如果没有第二次中断说明是干扰; /定时时间到。归零;连码处理;必须处理此函数;可做连键判断;#pragma vector=TIMERA1_VECTOR_interrupt void time0() switch(TAIV) case 2:

5、break; case 4:break; case 10:I_count=0;TACTL&=MC1;TAR=0;start=0;break;/归零函数TR1=0;TH1=0;TL1=0; void key_decoding(uchar key_1)/转换为16进制数;if(key_1/16)9) buff0=key_1/16+0x37;/高八位检测;else buff0=key_1/16+0x30;if(key_1%16)9) buff1=key_1%16+0x37;/低八位检测;else buff1=key_1%16+0x30;LCD_Write_str68(0,3,buff);/*swit

6、ch(key_1) case 0x30: LED=!LED;break; case 0x18: LED=!LED;break; default: break; */void main() clk_init(); inter_init(); LCD_init(); LCD_Clear(); TACTL|=TASSEL_2+ID_3+TACLR+TAIE; display0=sqrt(4)+0x30; display1=sqrt(9)+0x30; LCD_Write_str68(0, 3,display); LCD_Write_str68(0, 1,temp2); /LCD_Write_str68(0, 0,temp2); while(1) if(key!=0xff) key_decoding(key); if(key=0x68) P1OUT|=BIT3+BIT1; P1OUT&=BIT5; key=0xff;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 大杂烩/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号