/********************************** (C) COPYRIGHT *******************************
* File Name : 422IF.C
* Author : WCH
* Version : V1.0
* Date : 2014/03/18
* Description : CH422 DEMO接口函数定义
*******************************************************************************/
/******************************************************************************/
/* 头文件包含 */
#include <422CMD.H>
#include <reg52.h>
/******************************************************************************/
/*******************************************************************************
* Function Name : mInitSTDIO
* Description : 串口初始化函数,用于程序调试
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void mInitSTDIO( )
{
SCON = 0x50;
PCON = 0x80;
TMOD = 0x20;
TH1 = 0xf3; //24MHz晶振, 9600bps
TR1 = 1;
TI = 1;
}
/*******************************************************************************
* Function Name : CH422_I2c_Start
* Description : 两线模式启动信号
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CH422_I2c_Start( void )
{
CH422_SDA_SET; // 发送起始条件的数据信号
CH422_SCL_SET;
DELAY_0_1US; //根据单片机可选延时
CH422_SDA_CLR; //发送起始信号
DELAY_0_1US;
CH422_SCL_CLR; //钳住I2C总线,准备发送或接收数据
}
/*******************************************************************************
* Function Name : CH422_I2c_Stop
* Description : 两线模式停止信号
* Input : None
* Output : None
* Return : None
*******************************************************************************/
void CH422_I2c_Stop( void )
{
CH422_SDA_CLR;
DELAY_0_1US; //根据单片机型号延时可选
CH422_SCL_SET;
DELAY_0_1US;
CH422_SDA_SET; // 发送I2C总线结束信号
}
/*******************************************************************************
* Function Name : CH422_I2c_WrByte
* Description : 向CH422写入一个字节
* Input : unsigned char dat
* Output : None
* Return : None
*******************************************************************************/
void CH422_I2c_WrByte( unsigned char dat ) // 写一个字节数据
{
unsigned char i;
for( i = 0; i != 8; i++ ) // MCU输出8位数据
{
if( dat&0x80 )
{
CH422_SDA_SET;
}
else
{
CH422_SDA_CLR;
}
DELAY_0_1US;
CH422_SCL_SET;
dat <<= 1;
DELAY_0_1US; // 可选延时
CH422_SCL_CLR;
}
CH422_SDA_SET; //SDA设为输入接收ACK信号
DELAY_0_1US;
CH422_SCL_SET; // 接收应答
DELAY_0_1US;
CH422_SCL_CLR;
}
/*******************************************************************************
* Function Name : CH422_I2c_RdByte
* Description : 从CH422读一个字节
* Input : None
* Output : None
* Return : unsigned char dat
*******************************************************************************/
unsigned char CH422_I2c_RdByte(void)
{
unsigned char dat,i; //注意SDA设置为输入方向接收数据
CH422_SDA_SET;
for(i = 0;i != 8;i++)
{
CH422_SCL_SET;
DELAY_0_1US;
dat <<= 1;
if(CH422_SDA_IN) //读取一位数据
{
dat++;
}
DELAY_0_1US;
CH422_SCL_CLR;
}
CH422_SDA_SET;
DELAY_0_1US;
CH422_SCL_SET;
DELAY_0_1US;
CH422_SCL_CLR;
return(dat);
}
/*******************************************************************************
* Function Name : CH422_I2c_Write
* Description : 向CH422写数据
* Input : unsigned short cmd
* Output : None
* Return : None
*******************************************************************************/
void CH422_I2c_Write(unsigned short cmd)
{
CH422_I2c_Start(); //发送启动信号
CH422_I2c_WrByte((unsigned char)(cmd>>8)); //先发高字节
CH422_I2c_WrByte((unsigned char)cmd);
CH422_I2c_Stop(); //发送结束信号
}
/*******************************************************************************
* Function Name : CH422_I2c_Read
* Description : 从CH422读取键值
* Input : None
* Output : None
* Return : unsigned char dat
*******************************************************************************/
unsigned char CH422_I2c_Read(void)
{
unsigned char dat;
CH422_I2c_Start(); //发送启动信号
CH422_I2c_WrByte((unsigned char)(CH422_GET_KEY>>8)); //发送取键值命令码
dat = CH422_I2c_RdByte(); //接收键值
CH422_I2c_Stop(); //发送结束信号
return dat;
}

a3573
- 粉丝: 2
最新资源
- 项目管理的个人工作总结.doc
- 网络环境的专题教学设计市公开课一等奖百校联赛特等奖课件.pptx
- 物联网业务及技术培训PPT课件.ppt
- 物联网应用技术专业现代学徒制教学改革研究.docx
- 其他网络营销方法.pptx
- 浅析企业财务软件的帐务处理【会计实务操作教程】.pptx
- 软考项目管理师详解大全之过程记忆口诀详解.doc
- 大型网吧网络系统设计方案解析.doc
- 软件工程基础知识论述.pptx
- 京宁热电公司信息化发展战略的制定与实施.doc
- 项目十三 使用Excel制作成绩分析表.pptx
- 新产品研发流程管理-研发项目管理与研发绩效管理.doc
- 软件工程-图书管理系统.doc
- 生物制药工艺学基因工程制药1.ppt
- 嵌入式系统的定义及特点.doc
- 最新网络安全技术解读PPT.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈



评论2