自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
多機(jī)紅外通信接收端(C程序代碼)
多機(jī)紅外通信接收端(C程序代碼)
 更新時(shí)間:2008-7-26 20:29:43  點(diǎn)擊數(shù):2
【字體: 字體顏色

/****************************************************************
*文件名: Receive.C
*版權(quán):  www.zlgmcu.com
*日期:  16:27 04-3-16
*功能:  多機(jī)紅外通信接收端程序代碼
****************************************************************/
#include "reg932.h"
#define uchar unsigned char

sbit Infr=P0^4;     //定義P0.4為紅外接收口
sbit Motor_Control=P0^5;
//---------------------------------
uchar HeadFlag;     //幀頭錯(cuò)誤標(biāo)志
uchar BitFlag;     //讀數(shù)據(jù)錯(cuò)誤標(biāo)志
uchar Buffer[2];     //緩沖區(qū)
uchar InfrBit;     //從Infr口讀出的Bit
uchar InfrData;     //從Infr口讀出的Byte
//---------------------------------
void KeyISR_Init();    //鍵盤中斷初始化
void PowerDown();    //完全掉電

void ReadBit();     //讀一位
void ReadByte();     //讀一字節(jié)
void ReadData();     //讀數(shù)據(jù)
void ReadHead();     //讀幀頭

void delayus(uchar i);   //us級(jí)延時(shí)
void delay100us(uchar i);  //100us級(jí)延時(shí)
void delayms(uchar i);   //ms級(jí)延時(shí)
//---------------------------------
void KEY_ISR() interrupt 7
{
 EA=0;       //關(guān)中斷
 PCONA=0x00;      //完全掉電喚醒
 
 while(Infr==0);     //等待Infr為1;
 delayms(5);
 
 while(Infr==1);     //等待Infr為0;
 
 ReadHead();      //讀幀頭
 ReadData();      //讀數(shù)據(jù)

 if(Buffer[0]==0x01)    //如果讀出來的Buffer[0]為0x01,則開燈。
 {
  Motor_Control=1;
 }

/*
 if(Buffer[0]==0x02)    //如果讀出來的Buffer[0]為0x02,則開燈。
 {
  Motor_Control=1;
 }
*/
 KBCON=0;      //清鍵盤中斷標(biāo)志位
 EA=1;       //開中斷
}

//--------------------------------------------------------
main()
{
 P0M1=0x00;
 P0M2=0x00;

 KeyISR_Init();     //鍵盤中斷初始化

 while(1)
 {
  PowerDown();    //進(jìn)入掉電狀態(tài)
 }
}


//-------------------------------------------------------
//功能:完全掉電
//-------------------------------------------------------
void  PowerDown()
{
 PCONA=0xff;      //所有功能模塊掉電
 PCON=0x03;      //進(jìn)入掉電狀態(tài)
}
//-------------------------------------------------------
//功能:鍵盤中斷初始化
//-------------------------------------------------------
void KeyISR_Init()
{
 KBMASK=0x10;     //設(shè)置P04為中斷源
 KBCON=0x00;      //清除鍵盤中斷標(biāo)志
 EKBI=1;       //使能鍵盤中斷
 EA=1;       //開中斷
}
//-------------------------------------------------------
//功能:讀幀頭
//-------------------------------------------------------
void ReadHead()
{
 delay100us(4);     
 if(Infr!=0)      //讀出接收口當(dāng)前狀態(tài),判斷是否與上次相同
 {HeadFlag=1;}     //若不同,置錯(cuò)誤標(biāo)志位
 delay100us(1);     
 if(Infr!=0)      //再次判斷
 {HeadFlag=1;}     //若不同,置錯(cuò)誤標(biāo)志位
 delay100us(5);     
 
 delay100us(4);
 if(Infr==0)      //讀出接收口當(dāng)前狀態(tài),判斷是否與上次相同
 {HeadFlag=1;}     //若不同,置錯(cuò)誤標(biāo)志位
 delay100us(1);
 if(Infr==0)      //再次判斷
 {HeadFlag=1;}     //若不同,置錯(cuò)誤標(biāo)志位
 delay100us(5);
 
 delay100us(4);     
 if(Infr!=0)      //讀出接收口當(dāng)前狀態(tài),判斷是否與上次相同
 {HeadFlag=1;}     //若不同,置錯(cuò)誤標(biāo)志位
 delay100us(1);     
 if(Infr!=0)      //再次判斷
 {HeadFlag=1;}     //若不同,置幀錯(cuò)誤標(biāo)志
 delay100us(5);     
}
//-------------------------------------------------------
//功能:位讀取程序
//-------------------------------------------------------
void ReadBit()
{
 InfrBit=0;
 delay100us(1);
 InfrBit=Infr;     //讀出Infr端口的當(dāng)前值
 delay100us(1);
 if(InfrBit!=Infr)    //再次讀出Infr端口的當(dāng)前值,判斷是否與上次相同
 {BitFlag=1;}     //若不同,則置位錯(cuò)誤標(biāo)志
 delay100us(2);
}
//--------------------------------------------------------
//功能;字節(jié)讀取程序
//--------------------------------------------------------
void ReadByte()      //將循環(huán)讀出的8位,按先高位后低位組合成一個(gè)字節(jié)
{
 
 uchar i;
 InfrData=0;
 for(i=0;i<8;i++)
 {
  InfrData=InfrData<<1;
  ReadBit();
  InfrData=InfrData|InfrBit;  //循環(huán)賦值
 }     
}
//--------------------------------------------------------
//功能:讀取所有的數(shù)據(jù)
//--------------------------------------------------------
void ReadData()      //將數(shù)據(jù)區(qū)中的各個(gè)字節(jié),全部讀出
{
 uchar i;      
 for(i=0;i<2;i++)
 {
  ReadByte();
  Buffer[i]=InfrData;
 }
}
//--------------------------------------------------------
//功能:us級(jí)延時(shí)
//出口參數(shù):i,延時(shí)us數(shù)
//--------------------------------------------------------
void delayus(uchar i)    //粗略延時(shí)us
{
 uchar j;
 for(j=0;j<i;j++);
}
//--------------------------------------------------------
//功能:100us級(jí)延時(shí)
//出口參數(shù):i,延時(shí)i x 100us
//--------------------------------------------------------
void delay100us(uchar i)    //在7.373MHz時(shí),精確延時(shí)100us,誤差0.5us
{
 uchar j;
 while(i>0)
 {
  for(j=0;j<118;j++);
  i--;
 }
}
//--------------------------------------------------------
//功能:ms級(jí)延時(shí)
//出口參數(shù):i,延時(shí)i x 1ms
//--------------------------------------------------------
void delayms(uchar i)    //在7.373MHz時(shí),精確延時(shí)1ms,誤差0.5us
{
 int j;
 while(i>0)
 {
  for(j=0;j<670;j++);
  i--;
 }
}
//--------------------------------------------------------

  • 上一篇: 多機(jī)紅外通信接收端(匯編程序代碼)
  • 下一篇: 利用LPC900系列單片機(jī)的UART和CCU模塊實(shí)現(xiàn)紅外通信(匯編)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1