找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5185|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

cat9555驅(qū)動代碼調(diào)試

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:200296 發(fā)表于 2017-5-13 14:54 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
/********************************************************************
*           For GPS Walkie Talkie 821
*     (c) Copyright 2010, suoyin
*             All Rights Reserved
*
* File   :  SAUitoplayer.c
* History:
*           08/06/2010 Created by liufang
*********************************************************************/
#define TARGET_IS_TEMPEST_RB1
#define ewarm

#include "SAInclude.h"

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//內(nèi)部宏定義
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-


//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//函數(shù)內(nèi)部部調(diào)用聲明
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

//void
   //

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//函數(shù)內(nèi)部部變量聲明
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-

//  定義CAT9555(I2C接口)
#define  CAT9555_SLA         (0x40>>1)   //定義CAT9555的器件地址
#define  CAT9555_INPUT0       0//CAT9555輸入端口寄存器0
#define  CAT9555_INPUT1       1//CAT9555輸入端口寄存器1
#define  CAT9555_OUTPUT0      2//CAT9555輸出端口寄存器0
#define  CAT9555_OUTPUT1      3//CAT9555輸出端口寄存器1
#define  CAT9555_PI0          4//CAT9555反轉(zhuǎn)寄存器0
#define  CAT9555_PI1          5//CAT9555反轉(zhuǎn)寄存器1
#define  CAT9555_CFG0         6//CAT9555配置寄存器0
#define  CAT9555_CFG1         7//CAT9555配置寄存器1      

tI2CM_DEVICE CAT9555  = {CAT9555_SLA, 0x00, 0x01, (void *)0, 0x00};
unsigned char gucPort1Status;

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:寫寄存器 函數(shù)
//功  能:寫寄存器
//形  參:unsigned char ucAddr:CAT9555_OUTPUT0
//                             CAT9555_OUTPUT1
//                             CAT9555_CFG0
//                             CAT9555_CFG1
//        unsigned char ucData:8bit data
//返  回:ulStatus  返回可能的錯誤狀態(tài)
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555MWriteReg(unsigned char ucAddr, unsigned char ucData0,unsigned char ucData1)
{   
    unsigned char ucDataTemp[2];
    unsigned long ulStatus = 0;

    ucDataTemp[0] = ucData0;//port0 data
    ucDataTemp[1] = ucData1;//port1 data
    I2CM_DeviceDataSet(&CAT9555,ucAddr,ucDataTemp, 2);
    ulStatus = I2CM_DataSend(&CAT9555);  

    return ulStatus;
}


//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:CAT9555初始化函數(shù)
//功  能:配置CAT9555,包括16個I/O口的初始化 input:1  output:0
//形  參:無
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
void CAT9555Init(void)
{
    gucPort1Status = 0;
    CAT9555MWriteReg(CAT9555_CFG0, 0x00,0x00);//P0.0~P0.7,P1.0~P1.7為輸出腳
    CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P0.0~P0.7,P1.0~P1.7輸出0
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:電源控制函數(shù)
//功  能:電源控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555PwrCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x80);//P1.7
    else
        gucPort1Status = (gucPort1Status & 0x7f);//P1.7
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳

    return ulStatus;
}

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:按鍵音控制函數(shù)
//功  能:按鍵音控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555BeepCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x40);//P1.6
    else
        gucPort1Status = (gucPort1Status & 0xbf);//P1.6
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:LCD控制函數(shù)
//功  能:LCD控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555LCDCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x20);//P1.5
    else
        gucPort1Status = (gucPort1Status & 0xdf);//P1.5
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:GPS控制函數(shù)
//功  能:GPS控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555GPSCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x10);//P1.4
    else
        gucPort1Status = (gucPort1Status & 0xef);//P1.4
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:voice pa控制函數(shù)
//功  能:voice pa控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555VoicePaCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x08);//P1.3
    else
        gucPort1Status = (gucPort1Status & 0xf7);//P1.3
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:PWM控制函數(shù)
//功  能:PWM控制輸出端口
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CAT9555PWMCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x04);//P1.2
    else
        gucPort1Status = (gucPort1Status & 0xfb);//P1.2
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:對講機發(fā)送控制函數(shù)
//功  能:對講機發(fā)送控制腳TX
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CA9555WalTalTxCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x02);//P1.1
    else
        gucPort1Status = (gucPort1Status & 0xfd);//P1.1
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}

//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
//
//描  述:對講機接收控制函數(shù)
//功  能:對講機接收控制腳RX
//形  參:tBoolean tFlag:1:寫高電平  0:寫低電平
//返  回:無
//
//-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-cut-off rule-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-
unsigned char CA9555WalTalRxCtrl(tBoolean tFlag)
{
    unsigned long ulStatus = 0;

    if (tFlag)
        gucPort1Status = (gucPort1Status | 0x01);//P1.0
    else
        gucPort1Status = (gucPort1Status & 0xfe);//P1.0
    ulStatus = CAT9555MWriteReg(CAT9555_OUTPUT0, gucPort1Status,gucPort1Status);//P1.0~P1.7為輸出腳
    return ulStatus;
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表