本程序是基于合泰单片机的 ,如果需要移植于其他单片机只需稍微修改即可

模拟IIC(I2C)时序,C语言程序

#include "ht46R65.h"

#define SDA _pa0 //数据线

#define SCL _pa1 //时钟线

#define SDAC _pac0 //数据线控制端

#define SCLC _pac1 //时钟线控制端

#define SDAIn() SDAC=1 //输入

#define SCLIn() SCLC=1

#define SDAOut() SDAC=0 //输出

#define SCLOut() SCLC=0

#define Nop() _delay(1) //一个指令周期(1uS )

#define uint8 unsigned char

uint8 ack; //应答

void StartI2c()

{

SDAOut();

SCLOut();

Nop();

SDA=1; //发送起始条件的数据信号

Nop();

SCL=1;

Nop(); //起始条件建立时间大于4.7us,延时

Nop();

Nop();

Nop();

Nop();

SDA=0; //发送起始信号

Nop(); //起始条件锁定时间大于4μs

Nop();

Nop();

Nop();

Nop();

SCL=0; //钳住I2C总线,准备发送或接收数据

Nop();

Nop();

}

void StopI2c()

{

SDAOut();

SCLOut();

Nop();

SDA=0; //发送结束条件的数据信号

Nop();

SCL=1; //发送结束条件的时钟信号

Nop(); //结束条件建立时间大于4μs

Nop();

Nop();

Nop();

Nop();

SDA=1; //发送I2C总线结束信号

Nop();

Nop();

Nop();

Nop();

}

void SendByte(uint8 c)

{

uint8 temp;

uint8 BitCnt;

SDAOut();

SCLOut();

Nop();

for(BitCnt=0;BitCnt&lt8;BitCnt++) //要传送的数据长度为8位

{

if(c&0x80) SDA=1; //判断发送位

else SDA=0;

c&lt&lt=1;

Nop();

SCL=1; //置时钟线为高,通知被控器开始接收数据位

Nop();

Nop(); //保证时钟高电平周期大于4μs*/

Nop();

Nop();

Nop();

SCL=0;

}

Nop();

Nop();

SDA=1; //8位发送完后释放数据线,准备接收应答位

Nop();

Nop();

SCL=1;

SDAIn();

Nop();

Nop();

Nop();

if(SDA==1) ack=0;

else ack=1; //判断是否接收到应答信号

SCL=0;

Nop();

Nop();

}

uint8 RcvByte()

{

uint8 retc;

uint8 BitCnt;

retc=0;

SDAOut();

SCLOut();

Nop();

SDA=1; //置数据线为输入方式

SDAIn();

Nop();

for(BitCnt=0;BitCnt&lt8;BitCnt++)

{

Nop();

SCL=0; //置时钟线为低,准备接收数据位

Nop();

Nop(); //时钟低电平周期大于4.7μs

Nop();

Nop();

Nop();

SCL=1; //置时钟线为高使数据线上数据有效

Nop();

Nop();

retc=retc&lt&lt1;

if(SDA==1) retc=retc+1; //读数据位,接收的数据位放入retc中

Nop();

Nop();

}

SCL=0;

Nop();

Nop();

return(retc);

}

void AckI2c(uint8 a)

{

SDAOut();

SCLOut();

Nop();

if(a==0) SDA=0; //在此发出应答或非应答信号

else SDA=1;

Nop();

Nop();

Nop();

SCL=1;

Nop();

Nop(); //时钟低电平周期大于4μs

Nop();

Nop();

Nop();

SCL=0; //清时钟线,钳住I2C总线以便继续接收

Nop();

Nop();

}

uint8 ISendStr(uint8 sla,uint8

合泰单片机触摸例程_合泰单片机iic例程相关推荐

  1. 合泰单片机触摸例程_合泰触摸单片机新建工程步骤(自编详细版)

    合泰触摸系列单片机新建工程步骤(自编详细版) 第一步: 新建一个工程文件夹,这里以 BS83B12A-3 单片机为实例,将文件夹 命名为 BS83B12A-3_Exam( 根据工程项目自定义,无要求 ...

  2. stc89c51单片机音乐盒系统设计_基于单片机的火控系统语音报读设计

    在现代大多控制系统中,通常使用发光二极管LED.数码管.液晶显示器.蜂鸣器等进行状态 / 结果显示和故障报警,如果在显示报警仪表上采用数字语言技术,使适合用听觉传送的信息用语言传送,就可以发挥听觉的优 ...

  3. 合泰单片机触摸例程_合泰单片机触摸按键数据手册自编写程序

    初始化中,对触摸灵敏度自动校正调节 do { asm("CLR WDT");//喂狗 if(TouchUpdate) { TouchUpdate=0; if(TouchData&g ...

  4. 合泰单片机做电压表_合泰单片机使用总结

    之前一直用ARM 系列的单片机,现在因为产品需要,用了一款合泰单片机(HT67F2360),整个开发过程中发现还是有很多差异. 一.开发环境中的一些差异# arm 系列单片机,直接用keil 接 选用 ...

  5. 合泰单片机做电压表_合泰单片机基础教程

    137********/0757-******** 1 第一章 一. 概念与分类 单片机又称 微控制器 ( M icro C ontroller U nit) ,包含:中央处理单元.程序 存储器.数据 ...

  6. 合泰单片机做电压表_合泰单片机总结

    <合泰单片机总结>由会员分享,可在线阅读,更多相关<合泰单片机总结(11页珍藏版)>请在人人文库网上搜索. 1.合泰单片机总结-测试环境C编译器V21. Debug2.3. . ...

  7. 单片机怎么跳出循环_自学单片机第二十七篇:矩阵按键的硬件测试

    我们继续来说矩阵按键的问题,这次是用在实际电路中的.在仿真中我们没有发现问题,但是文章最后我提出了,这个电路在实际应用中一定是存在问题的,那么问题在哪里呢? 这是我们分析的电路. 前几篇我们也对硬件进 ...

  8. 单片机large模式_对单片机存储分配新的认识

    51单片机存储器采用的是哈佛结构,即是程序存储器空间和数据存储器空间分开,程序存储器和数据存储器各自有自己的寻址方式.寻址空间和控制系统. 51存储器可以分为 程序存储器ROM:用于存放程序和表格之类 ...

  9. 单片机ch2o程序_基于单片机的室内甲醛浓度检测系统

    基于单片机的室内甲醛浓度检测系统 田秀荣 [期刊名称] <山西电子技术> [年 ( 卷 ), 期] 2014(000)003 [ 摘 要 ] As everyone knows , the ...

最新文章

  1. uedit修改文件上传路劲,支持api文件接口
  2. Emacs中的RSS阅读器--newsticker
  3. 图像处理中常用数学知识
  4. linux安全pdf,linux系统安全加固.pdf
  5. 13-5 15 xshell使用xftp pure-ftpd
  6. 广州 智播客 学工部_播客:30岁的水管工如何转变职业并成为全职开发人员
  7. 基于Bmob从零开始写一个博客小程序
  8. (11) python 使用baostock获取历史A股K线数据
  9. matlab 介电常数,改进的基于Matlab GUI的微波介电常数测量系统
  10. ZZULIOJ 1050~1059(oj入门题)
  11. 准备写个linux下的千千静听
  12. jeecms9.0常用标签
  13. Vue表单输入绑定(v-model)
  14. uniapp:小程序对接腾讯云语音视频通话,简单demo
  15. 有关MAC、PHY和MII
  16. Linux强制退出当前执行命令
  17. 全国一半人跑长沙,长沙一半人跑哪?
  18. 如何辨别优劣高防服务器?
  19. 服务器网站绕过备案,腾讯云服务器如何利用阿里DCDN绕过备案
  20. 吐血整理Python体系练手项目500例(附源代码),练完可显著提升python水平

热门文章

  1. replaceAll()用法
  2. c语言反应能力的手机游戏,锻炼反应能力的游戏合集
  3. 程序员合同日期不到想辞职_“我又辞职了”
  4. cocos creator设置网络头像
  5. jQuery元宵猜灯谜特效(元宵十五日猜一个字)
  6. 重磅 | 2018年淘宝村、淘宝镇名单正式公布!
  7. oracle exp导出工具,Oracle EXP/IMP 导出导入工具的使用
  8. BIO和NIO消耗的cpu和内存比较
  9. oracle转借权限,Oracle Universal Connection Pool(UCP) for JDBC 详解
  10. Simpsons’ Hidden Talents——kmp入门