新聞中心

EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 單片機(jī)解碼315M的pt2262編碼的c51程序

單片機(jī)解碼315M的pt2262編碼的c51程序

作者: 時(shí)間:2012-10-17 來(lái)源:網(wǎng)絡(luò) 收藏
這是一個(gè)用軟件來(lái)解碼信號(hào)的,經(jīng)過(guò)測(cè)試是可以使用的,要注意接受模塊要遠(yuǎn)離單片機(jī)的晶振 不然干擾太嚴(yán)重?zé)o法解碼的 或者距離很近.

/*-----------------------------------------------------------------;    Copyright (C) 2006  WangChanghong INTEGRATED PRODUCTS, INC.;    All rights reserved.;    MCU:AT89s52 ,晶體頻率:12MHz:    作者:汪長(zhǎng)洪:    時(shí)間:2006年08月01日;    地點(diǎn):威海;----------------------------315M無(wú)線遙控解碼程序-----------------*/ #include AT89X52.H>#define uchar unsigned char#define uint unsigned int/*---------------------------------變量列表-------------------------*/uchar  ReadCode[3],GetCode;/*---------------------------------函數(shù)列表-----------------------*/void delay_200(void);				//200us精確延時(shí)void delay_250(void);				//250us精確延時(shí)void delay_131(void);				//131ms精確延時(shí)void init(void);					//初始化子程序void INT0_intrupt();			//中斷處理子程序(解碼程序)/*-----------------------------主程序入口---------------------*/main(){	init();	    while(1){   P2=~GetCode|0xf0;}}/*---------------------------------初始化子程序----------------*/void init(void){EA=1;                      //打開CPU總中斷請(qǐng)求EX0=1;                     //打開INT0中斷請(qǐng)求   IT0=1;                     //設(shè)定INT0的觸發(fā)方式為脈沖負(fù)邊沿觸發(fā)	 }/*-------------------------------200us精確延時(shí)-------------------*/void delay_200(void) {uchar i,j;for(i=0x05;i>0;i--)for(j=0x12;j>0;j--);}/*-------------------------------250us精確延時(shí)----------------*/void delay_250(void) {uchar i,j;for(i=0x05;i>0;i--)for(j=0x17;j>0;j--);}/*-------------------------------131ms精確延時(shí)---------------*/void delay_131(void) {uchar i,j;for(i=0xfe;i>0;i--)for(j=0xfe;j>0;j--);}/*-------------------------外部中斷0子程序(解碼程序)-------------*/void INT0_intrupt(void) interrupt 0 using 1{uchar i,j;bit BitState_2;                                           EX0=0; ////////////////////找起始位////////////////////////for(i=0;i50;i++);if(P3_2==1)  goto kk;while(P3_2==0);for(i=0;i50;i++);if(P3_2==0)  goto kk; delay_200();if(P3_2==1)  goto kk;for(i=15;i>0;i--) 	//重復(fù)20次,檢測(cè)在3750微秒內(nèi)出現(xiàn)高電平就退出解碼程序{    delay_200();                    if(P3_2==1) goto kk;}                                   while(P3_2==0);//////////////////////接收數(shù)據(jù)/////////////////////////for(j=0;j3;j++)                    {for(i=0;i8;i++){ delay_250();BitState_2=P3_2;		ReadCode[j]=ReadCode[j]1;ReadCode[j]=ReadCode[j]|BitState_2; if(P3_2==1) while(P3_2==1);while(P3_2==0);}}////////////////////校驗(yàn)及運(yùn)算數(shù)據(jù)///////////////////////////for(i=0;i3;i++){if((~(ReadCode[i]|0x55))((ReadCode[i]0x55)1)!=0x00)goto kk; //校驗(yàn)} GetCode=0x00;for(i=0;i8;i++){GetCode |=((ReadCode[2]>>i)(ReadCode[2]>>(i+1))0x01i);    //運(yùn)算}//////////////////////////////////////////////delay_131();delay_131();delay_131();delay_131();  kk:	EX0=1;}


評(píng)論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉