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

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
利用LPC900系列單片機的UART和CCU模塊實現(xiàn)紅外通信(C程序)
利用LPC900系列單片機的UART和CCU模塊實現(xiàn)紅外通信(C程序)
 更新時間:2008-7-26 20:29:49  點擊數(shù):2
【字體: 字體顏色

/****************************************************************
* 文件:     UART_IR_Slave.C
* 功能:     利用LPC900系列單片機的UART和CCU模塊實現(xiàn)紅外通信.
*           此程序為從機程序,當(dāng)接收到16字節(jié)數(shù)據(jù)后,再把接收的數(shù)據(jù)
*           返回給主機.      
*****************************************************************/
#include "reg932.h"
#include "intrins.h"

#define uchar unsigned char

//變量定義
const uchar data BRGR1_DATA=9;      //波特率設(shè)為2400bit/s
const uchar data BRGR0_DATA=0xb4;

//函數(shù)聲明
void CCU_Ini();
void UART_Ini();
void SendData(uchar *pbuf);
void RcvData(uchar *pbuf);
void Delay(uchar k);

//主程序開始
void main()
{
    uchar RcvBuf[16];               //接收數(shù)據(jù)用緩沖區(qū)
    P0M1=P0M2=0;
    P1M1=P1M2=0;                    //P0,P1口設(shè)置為準(zhǔn)雙向
    P2M1=P2M2=0xc0;                 //P2.6,P2.7設(shè)置為開漏
    CCU_Ini();                      //CCU模塊初始化,用以產(chǎn)生38KHz調(diào)制信號
    UART_Ini();                    
    while(1)
    {  
        Delay(1);
        RcvData(RcvBuf);            //接收16字節(jié)數(shù)據(jù)
        Delay(2);
        SendData(RcvBuf);           //把接收到的16字節(jié)數(shù)據(jù)發(fā)送出去
    }  
}

/*********************************************
* 名稱:     SendData()
* 功能:     通過UART連續(xù)發(fā)送16字節(jié)數(shù)據(jù)(0~15)
* 入口參數(shù): bpuf--發(fā)送緩沖區(qū)首地址
* 出口參數(shù): 無
* 注意:     此程序采用查詢方式發(fā)送
**********************************************/
void SendData(uchar *pbuf)
{  
    uchar i;
    TI=0;
    for(i=0;i<16;i++)
    {  
        SBUF=pbuf[i];
        while(!TI);
        TI=0;
    }   
}

/*********************************************************************
* 名稱:     RcvData()
* 功能:     通過UART連續(xù)接收16字節(jié)數(shù)據(jù)
* 入口參數(shù): pbuf--用于接收數(shù)據(jù)的緩沖區(qū)首地址
* 出口參數(shù): 接收到的16字節(jié)數(shù)據(jù)位于接收緩沖區(qū)
* 注意:     此程序采用查詢方式進行接收。由于采取半雙工通信,所以接收
*           數(shù)據(jù)之前要打開接收允許,接收完畢之后要關(guān)閉接收允許。
**********************************************************************/
void RcvData(uchar *pbuf)
{  
    uchar i;
    REN=1;
    FE=0;
    RI=0;
    for(i=0;i<16;i++)
    {  
        while(!RI);
        RI=0;
        pbuf[i]=SBUF;
    }
    REN=0;
}

/*********************************************************************
* 名稱:     CCU_Ini()
* 功能:     CCU模塊初始化,使OCA(P2.7)輸出38KHz,50%占空比的PWM波,
*           作為紅外線的載波
*           使用6MHz晶振時,CCU頻率=((6000000/2)/6)*32=16MHz
*           定時器重裝值=CCU頻率/紅外線載頻=16000000/38000=421=0x1a5
**********************************************************************/
void CCU_Ini()
{  
    TOR2H=0x01;                     //定時器重裝值
    TOR2L=0xa5;
    OCRAH=0x00;                     //(OCRAH:OCRAL)=(TOR2H:TOR2L)/2,PWM的占空比為50%
    OCRAL=0xd2;
    TCR21=0x85;                     //PLL預(yù)分頻為5+1
    CCCRA=1;                        //非反相的PWM
    TCR20=0;
    PLEEN=1;
    while(!PLEEN);                  //等待鎖相環(huán)(PLL)穩(wěn)定
    TCR20|=3;                       //啟動定時器,對稱PWM模式
}

/**************************************
* 名稱:     UART_Ini()
* 功能:     UART初始化,波特率2400bps
**************************************/
void UART_Ini()
{  
    PCON=0;
    SSTAT=0;                        //雙緩沖禁止,中斷禁止,采用查詢方式發(fā)送和接收
    SCON=0x40;                      //串口模式1,接收禁止
    PCON|=0x40;                     //SMOD0=1,SCON的位7作為FE
    BRGCON=0;
    BRGR1=BRGR1_DATA;
    BRGR0=BRGR0_DATA;    
    BRGCON=3;                       //啟動UART的波特率發(fā)生器
}

/*****************************************************
* 名稱:     Delay()
* 功能:     延時0.1*k秒(振蕩器為6MHz)
* 入口參數(shù):k--延時時間
* 出口參數(shù):無
* 注意:    如果入口參數(shù)k等于0,則不延時而直接返回。
******************************************************/
void Delay(uchar k)

    uchar i,j;
    if(k==0)
    {  
        return;
    }
 for(;k;k--)
 { 
        for(j=200;j;j--)            //延時0.1S
  { 
            for(i=250;i;i--)
   { 
                _nop_();
    _nop_();
    _nop_();
    _nop_();
   }
  }
 }
}

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

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

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

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