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

📄 ch423.h

📁 c8051f340 串口 程序This program demonstrates how to configure the C8051F340 to use routines in STDIO.h
💻 H
字号:
// *******************************************************************
//Website:  http://wch.cn
//Email:    tech@wch.cn
//Author:   W.ch 2007.6
// *******************************************************************
// 片选译码方式驱动16个数码管/128只LED发光管,MCS51单片机例子,使用定时器定时切换显示

//CH423.h

#pragma NOAREGS    // 如果MCS51在中断服务程序中调用CH423子程序,那么建议加入此编译选项

#define DELAY_0_1US    { _nop_(); }       // MCS51>10MHz

/* 2线接口的连接,与实际电路有关 */
sbit    CH423_SCL = P1^5;
sbit    CH423_SDA = P1^4;

/* 2线接口的位操作,与单片机有关 */

#define CH423_SCL_SET       { CH423_SCL = 1; }
#define CH423_SCL_CLR       { CH423_SCL = 0; }
#define CH423_SCL_D_OUT     { }                // 设置SCL为输出方向,对于双向I/O需切换为输出
#define CH423_SDA_SET       { CH423_SDA = 1;}
#define CH423_SDA_CLR       { CH423_SDA = 0;}
#define CH423_SDA_IN        ( CH423_SDA )
#define CH423_SDA_D_OUT     { }                // 设置SDA为输出方向,对于双向I/O需切换为输出
#define CH423_SDA_D_IN      { CH423_SDA = 1; }    // 设置SDA为输入方向,对于双向I/O需切换为输入


void CH423_I2c_Start( void )    // 操作起始
{
    CH423_SDA_SET;    // 发送起始条件的数据信号
    CH423_SDA_D_OUT;    // 设置SDA为输出方向 
    CH423_SCL_SET;
    CH423_SCL_D_OUT;    // 设置SCL为输出方向 
    DELAY_0_1US;
    CH423_SDA_CLR;    //发送起始信号
    DELAY_0_1US;      
    CH423_SCL_CLR;    //钳住I2C总线,准备发送或接收数据 
}

void CH423_I2c_Stop( void )    // 操作结束
{
    CH423_SDA_CLR;
    DELAY_0_1US;
    CH423_SCL_SET;
    DELAY_0_1US;
    CH423_SDA_SET;    // 发送I2C总线结束信号
    DELAY_0_1US;
}

void CH423_I2c_WrByte( unsigned char dat )    // 写一个字节数据
{
    unsigned char i;
    for( i = 0; i != 8; i++ )    // 输出8位数据
    {
        if( dat&0x80 ) { CH423_SDA_SET; }
        else { CH423_SDA_CLR; }
        DELAY_0_1US;
        CH423_SCL_SET;
        dat<<=1;
        DELAY_0_1US;    // 可选延时
        CH423_SCL_CLR;
    }
    CH423_SDA_SET;
    DELAY_0_1US;
    CH423_SCL_SET;    // 接收应答
    DELAY_0_1US;
    CH423_SCL_CLR;
}

void CH423_Set_H( unsigned char iodata )    // 
{
    CH423_I2c_Start();    // 启动总线
    CH423_I2c_WrByte(0x46);
    CH423_I2c_WrByte(iodata);    // 发送数据
    CH423_I2c_Stop();    // 结束总线  
}

void CH423_Set_L( unsigned char iodata )    // 
{
    CH423_I2c_Start();    // 启动总线
    CH423_I2c_WrByte(0x44);
    CH423_I2c_WrByte(iodata);    // 发送数据
    CH423_I2c_Stop();    // 结束总线  
}


⌨️ 快捷键说明

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