⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ch452.c

📁 一套MSP430单片机完整程序
💻 C
字号:
/*******************************************************************
 CH452 2 线接口
*******************************************************************/
#include <msp430x14x.h>
#include "define.h"
#include "Global.h"

#define DELAY_1US       _NOP();_NOP();_NOP();_NOP();_NOP()
#define CHIP1           0x40
#define CHIP2           0x60
#define CHIP3           0x40           

/*******************************************************************
函数名称:对第一片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_1(unsigned int command)	          
{
    Start_I2c_1();                                        // 启动总线
    Send_Byte_1(((unsigned char)(command>>7)&0x1E)|CHIP1);// 发送高位数据
    Send_Byte_1((unsigned char)command);                  // 发送低位数据
    Stop_I2c_1();                                         // 结束总线 
}

/*******************************************************************
函数名称:对第二片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_2(unsigned int command)	          
{
    Start_I2c_1();                                        // 启动总线
    Send_Byte_1(((unsigned char)(command>>7)&0x1E)|CHIP2);// 发送高位数据
    Send_Byte_1((unsigned char)command);                  // 发送低位数据
    Stop_I2c_1();                                         // 结束总线 
}

/*******************************************************************
函数名称:对第三片CH452进行写操作
command 命令字
*******************************************************************/
void CH452_Write_3(unsigned int command)	          
{
    Start_I2c_3();                                        // 启动总线
    Send_Byte_3(((unsigned char)(command>>7)&0x1E)|CHIP3);// 发送高位数据
    Send_Byte_3((unsigned char)command);                  // 发送低位数据
    Stop_I2c_3();                                         // 结束总线 
}

/*******************************************************************              
函数名称: Start_I2c_1  
功能描述: 启动总线 
********************************************************************/
void Start_I2c_1(void)
{
    P2OUT |= SDA1;
    DELAY_1US;     
    P2OUT |= SCL1;
    DELAY_1US;     
    P2OUT &= ~SDA1;                                	
    DELAY_1US;     
    P2OUT &= ~SCL1;
    DELAY_1US;     
}

/*******************************************************************              
函数名称: Stop_I2c_1  
功能描述: 停止总线    
********************************************************************/
void Stop_I2c_1(void)
{
    P2OUT &= ~SDA1;
    DELAY_1US;     
    P2OUT |= SCL1;
    DELAY_1US;     
    P2OUT |= SDA1;                                	
    DELAY_1US;
    P2OUT &= ~SCL1;
    DELAY_1US;         
}

/*******************************************************************              
函数名称: Send_Byte_1  
功能描述: 发送字节
输    入: 要发送的字    
********************************************************************/
void Send_Byte_1(unsigned char dat)
{
    unsigned char i;
    for (i=0; i<8; i++)
    {
        if ((dat & 0x80) == 0x80) P2OUT |= SDA1;
        else P2OUT &= ~SDA1;
        dat <<= 1;
        DELAY_1US;     
        P2OUT |= SCL1;
        DELAY_1US;     
        P2OUT &= ~SCL1;
        DELAY_1US;     
    }
    P2OUT |= SDA1;     	
    DELAY_1US;                    					
    P2OUT |= SCL1;
    DELAY_1US;                              		
    P2OUT &= ~SCL1;
    DELAY_1US;     	
}

/*******************************************************************              
函数名称: Start_I2c_3  
功能描述: 启动总线 
********************************************************************/
void Start_I2c_3(void)
{
    P2OUT |= SDA2;
    DELAY_1US;     
    P2OUT |= SCL2;
    DELAY_1US;     
    P2OUT &= ~SDA2;                                	
    DELAY_1US;     
    P2OUT &= ~SCL2;
    DELAY_1US;     
}

/*******************************************************************              
函数名称: Stop_I2c_3  
功能描述: 停止总线    
********************************************************************/
void Stop_I2c_3(void)
{
    P2OUT &= ~SDA2;
    DELAY_1US;     
    P2OUT |= SCL2;
    DELAY_1US;     
    P2OUT |= SDA2;                                	
    DELAY_1US;
    P2OUT &= ~SCL2;
    DELAY_1US;     
}

/*******************************************************************              
函数名称: Send_Byte_3  
功能描述: 发送字节
输    入: 要发送的字    
********************************************************************/
void Send_Byte_3(unsigned char dat)
{
    unsigned char i;
    for (i=0; i<8; i++)
    {
        if ((dat & 0x80) == 0x80) P2OUT |= SDA2;
        else P2OUT &= ~SDA2;
        dat <<= 1;
        DELAY_1US;     
        P2OUT |= SCL2;
        DELAY_1US;     
        P2OUT &= ~SCL2;
        DELAY_1US;     
    }                    					
    P2OUT |= SDA2;     	
    DELAY_1US;
    P2OUT |= SCL2;
    DELAY_1US;                              		
    P2OUT &= ~SCL2;
    DELAY_1US;     	
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -