<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 利用MSP430 TimerA的CCR1捕獲模式進(jìn)行紅外解碼的實(shí)例

利用MSP430 TimerA的CCR1捕獲模式進(jìn)行紅外解碼的實(shí)例

作者: 時(shí)間:2016-11-13 來(lái)源:網(wǎng)絡(luò ) 收藏
利用MSP430 TimerACCR1捕獲模式對紅外遙控芯片M50560-008P進(jìn)行紅外解碼的實(shí)例。注:定義的測量時(shí)間都是經(jīng)過(guò)實(shí)際調試后調整得到,可能與芯片手冊會(huì )有出入。

//紅外遙控芯片M50560-008P,其編碼格式和M50560-001P一致,可參閱數據手冊。

本文引用地址:http://dyxdggzs.com/article/201611/316541.htm
#define UserCode 0xC2
#define LeadCodeOrSeprateTime 4000 //4ms,對應1MHz的計數時(shí)鐘
#define Bit0Time1 600 //0.600ms,對應1MHz的計數時(shí)鐘
#define Bit0Time2 520 //0.520ms,對應1MHz的計數時(shí)鐘
#define Bit1Time1 600 //0.600ms,對應1MHz的計數時(shí)鐘
#define Bit1Time2 1600 //1.600ms,對應1MHz的計數時(shí)鐘
#define DataCount 8 //8位的用戶(hù)碼或數據碼
void ParaSet(uchar DataCode)//紅外遙控輸入處理
{
//處理代碼
}
void SysInit(void)
{
//系統參數初始化代碼
}
void main(void)//主函數
{
SysInit();//系統參數初始化
P1DIR=0xFB;//初始化P1.2(紅外接收頭)為輸入
P1IE=0x04;//使能P1.2的中斷
P1IES=0x04;//下降沿觸發(fā)P1.2中斷(紅外接收頭反相輸出)
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1()//紅外遙控輸入中斷處理
{
uint LeadBitTime[2],BitTime[3],LastBitTime;
uchar i,j,k,Data[2];
P1IE=0x00;//關(guān)閉P1.2中斷
_EINT();//進(jìn)入中斷后,系統自動(dòng)關(guān)總中斷允許,因此需再開(kāi)總中斷允許
if((P1IFG&0x04)==BIT2)//紅外遙控輸入
{
P1IFG&=0xFB;//中斷標志位復位
P1SEL|=0x04;//P1.2第二功能選擇,進(jìn)入TimerA的CCR1捕獲模式
TACTL|=MC_2+TACLR;//啟動(dòng)TA計數器的連續計數模
TACCTL1&=~CCIFG;//復位捕獲標志
for(k=0;k<2;k++)
{
while((TACCTL1&BIT0)!=CCIFG);//等待上升沿
LeadBitTime[0]=CCR1;
TACCTL1&=~CCIFG;
while((TACCTL1&BIT0)!=CCIFG);//等待下降沿
LeadBitTime[1]=CCR1;
TACCTL1&=~CCIFG;
if(LeadBitTime[1]-LeadBitTime[0]>LeadCodeOrSeprateTime+500||LeadBitTime[1]-LeadBitTime[0] {
TACTL|=MC_0+TACLR; //停止TA計數
P1SEL&=0xFB;//P1.2恢復選擇第一功能即為I/O口
return;
}//如果引導碼不符則退出
LastBitTime=LeadBitTime[1];
for(i=0;i {
BitTime[0]=LastBitTime;//位碼開(kāi)始時(shí)刻賦初值
for(j=1;j<3;j++)
{
while((TACCTL1&BIT0)!=CCIFG);//等待上升沿或下降沿跳變
BitTime[j]=CCR1;//讀取捕獲計時(shí)值
TACCTL1&=~CCIFG;//復位捕獲標志
}
LastBitTime=BitTime[2];//為下一個(gè)位碼保存開(kāi)始時(shí)刻初值
Data[k]>>=1;//得到的用戶(hù)碼和數據碼右移1位,高位填0,準備接收碼位碼值
if(BitTime[2]-BitTime[1]>Bit0Time2-200&&BitTime[2]-BitTime[1] if(BitTime[2]-BitTime[1]>Bit1Time2-200&&BitTime[2]-BitTime[1] }
}
if(Data[0]!=UserCode)
{//如果用戶(hù)碼不為0xC2則退出
TACTL|=MC_0+TACLR; //停止TA計數
P1SEL&=0xFB;//P1.2恢復選擇第一功能即為I/O口
return;
}
TACTL|=MC_0+TACLR; //停止TA計數
ParaSet(Data[1]);//參數設置
TACTL|=MC_0+TACLR; //停止TA計數
P1SEL&=0xFB;//P1.2恢復選擇第一功能即為I/O口
}
P1IE=0x04;//使能P1.2的中斷
}


評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>