男女午夜激情_www.天堂av.com_亚洲综合小说区_亚洲欧美自拍视频_成年精品_久久www免费人成—看片_激情综合五月天_久久高潮视频_最新国产成人ab网站_国产精品卡一

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

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

sbit Infr=P0^4;     //定義P0.4為紅外接收口
sbit Motor_Control=P0^5;
//---------------------------------
uchar HeadFlag;     //幀頭錯誤標志
uchar BitFlag;     //讀數(shù)據(jù)錯誤標志
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級延時
void delay100us(uchar i);  //100us級延時
void delayms(uchar i);   //ms級延時
//---------------------------------
void KEY_ISR() interrupt 7
{
 EA=0;       //關中斷
 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;      //清鍵盤中斷標志位
 EA=1;       //開中斷
}

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

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

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


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

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

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

    主辦:杭州市高新區(qū)(濱江)機電一體化學會
    中國行業(yè)電子商務100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 拜泉县| 保德县| 大悟县| 尤溪县| 惠来县| 吉首市| 龙江县| 吴川市| 亚东县| 台南市| 龙岩市| 平武县| 凤翔县| 海丰县| 永春县| 科技| 宽城| 建水县| 云和县| 玛曲县| 岳西县| 大兴区| 岳阳市| 平邑县| 突泉县| 抚顺市| 乐山市| 安西县| 东乌珠穆沁旗| 南皮县| 乌兰察布市| 长岭县| 桃江县| 若羌县| 孙吴县| 新乐市| 北票市| 韶关市| 乐都县| 康乐县| 乌苏市|