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

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

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

#define uchar unsigned char

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

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

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

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

/*********************************************************************
* 名稱:     RcvData()
* 功能:     通過UART連續接收16字節數據
* 入口參數: pbuf--用于接收數據的緩沖區首地址
* 出口參數: 接收到的16字節數據位于接收緩沖區
* 注意:     此程序采用查詢方式進行接收。由于采取半雙工通信,所以接收
*           數據之前要打開接收允許,接收完畢之后要關閉接收允許。
**********************************************************************/
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預分頻為5+1
    CCCRA=1;                        //非反相的PWM
    TCR20=0;
    PLEEN=1;
    while(!PLEEN);                  //等待鎖相環(PLL)穩定
    TCR20|=3;                       //啟動定時器,對稱PWM模式
}

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

/*****************************************************
* 名稱:     Delay()
* 功能:     延時0.1*k秒(振蕩器為6MHz)
* 入口參數:k--延時時間
* 出口參數:無
* 注意:    如果入口參數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模塊實現紅外通信(匯編)
  • 下一篇: P89LPC932包含文件
  • 發表評論   告訴好友   打印此文  收藏此頁  關閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關文章
    網友評論:(只顯示最新5條。)
    關于我們 | 聯系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

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

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

    網站經營許可證:浙B2-20080178-1
    主站蜘蛛池模板: 循化| 吴旗县| 营山县| 眉山市| 宣武区| 福建省| 深泽县| 阳曲县| 蓝田县| 夏河县| 白水县| 仁怀市| 阳西县| 陵川县| 南京市| 南皮县| 林芝县| 昭平县| 沭阳县| 宁明县| 牡丹江市| 西青区| 保定市| 南华县| 娄烦县| 三门县| 望城县| 莱州市| 普宁市| 衡阳县| 瑞金市| 宁武县| 康定县| 连云港市| 河曲县| 石台县| 九龙县| 龙里县| 天等县| 潮安县| 长沙县|