合泰单片机触摸例程_合泰单片机iic例程
本程序是基于合泰单片机的 ,如果需要移植于其他单片机只需稍微修改即可
模拟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<8;BitCnt++) //要传送的数据长度为8位
{
if(c&0x80) SDA=1; //判断发送位
else SDA=0;
c<<=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<8;BitCnt++)
{
Nop();
SCL=0; //置时钟线为低,准备接收数据位
Nop();
Nop(); //时钟低电平周期大于4.7μs
Nop();
Nop();
Nop();
SCL=1; //置时钟线为高使数据线上数据有效
Nop();
Nop();
retc=retc<<1;
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例程相关推荐
- 合泰单片机触摸例程_合泰触摸单片机新建工程步骤(自编详细版)
合泰触摸系列单片机新建工程步骤(自编详细版) 第一步: 新建一个工程文件夹,这里以 BS83B12A-3 单片机为实例,将文件夹 命名为 BS83B12A-3_Exam( 根据工程项目自定义,无要求 ...
- stc89c51单片机音乐盒系统设计_基于单片机的火控系统语音报读设计
在现代大多控制系统中,通常使用发光二极管LED.数码管.液晶显示器.蜂鸣器等进行状态 / 结果显示和故障报警,如果在显示报警仪表上采用数字语言技术,使适合用听觉传送的信息用语言传送,就可以发挥听觉的优 ...
- 合泰单片机触摸例程_合泰单片机触摸按键数据手册自编写程序
初始化中,对触摸灵敏度自动校正调节 do { asm("CLR WDT");//喂狗 if(TouchUpdate) { TouchUpdate=0; if(TouchData&g ...
- 合泰单片机做电压表_合泰单片机使用总结
之前一直用ARM 系列的单片机,现在因为产品需要,用了一款合泰单片机(HT67F2360),整个开发过程中发现还是有很多差异. 一.开发环境中的一些差异# arm 系列单片机,直接用keil 接 选用 ...
- 合泰单片机做电压表_合泰单片机基础教程
137********/0757-******** 1 第一章 一. 概念与分类 单片机又称 微控制器 ( M icro C ontroller U nit) ,包含:中央处理单元.程序 存储器.数据 ...
- 合泰单片机做电压表_合泰单片机总结
<合泰单片机总结>由会员分享,可在线阅读,更多相关<合泰单片机总结(11页珍藏版)>请在人人文库网上搜索. 1.合泰单片机总结-测试环境C编译器V21. Debug2.3. . ...
- 单片机怎么跳出循环_自学单片机第二十七篇:矩阵按键的硬件测试
我们继续来说矩阵按键的问题,这次是用在实际电路中的.在仿真中我们没有发现问题,但是文章最后我提出了,这个电路在实际应用中一定是存在问题的,那么问题在哪里呢? 这是我们分析的电路. 前几篇我们也对硬件进 ...
- 单片机large模式_对单片机存储分配新的认识
51单片机存储器采用的是哈佛结构,即是程序存储器空间和数据存储器空间分开,程序存储器和数据存储器各自有自己的寻址方式.寻址空间和控制系统. 51存储器可以分为 程序存储器ROM:用于存放程序和表格之类 ...
- 单片机ch2o程序_基于单片机的室内甲醛浓度检测系统
基于单片机的室内甲醛浓度检测系统 田秀荣 [期刊名称] <山西电子技术> [年 ( 卷 ), 期] 2014(000)003 [ 摘 要 ] As everyone knows , the ...
最新文章
- uedit修改文件上传路劲,支持api文件接口
- Emacs中的RSS阅读器--newsticker
- 图像处理中常用数学知识
- linux安全pdf,linux系统安全加固.pdf
- 13-5 15 xshell使用xftp pure-ftpd
- 广州 智播客 学工部_播客:30岁的水管工如何转变职业并成为全职开发人员
- 基于Bmob从零开始写一个博客小程序
- (11) python 使用baostock获取历史A股K线数据
- matlab 介电常数,改进的基于Matlab GUI的微波介电常数测量系统
- ZZULIOJ 1050~1059(oj入门题)
- 准备写个linux下的千千静听
- jeecms9.0常用标签
- Vue表单输入绑定(v-model)
- uniapp:小程序对接腾讯云语音视频通话,简单demo
- 有关MAC、PHY和MII
- Linux强制退出当前执行命令
- 全国一半人跑长沙,长沙一半人跑哪?
- 如何辨别优劣高防服务器?
- 服务器网站绕过备案,腾讯云服务器如何利用阿里DCDN绕过备案
- 吐血整理Python体系练手项目500例(附源代码),练完可显著提升python水平
热门文章
- replaceAll()用法
- c语言反应能力的手机游戏,锻炼反应能力的游戏合集
- 程序员合同日期不到想辞职_“我又辞职了”
- cocos creator设置网络头像
- jQuery元宵猜灯谜特效(元宵十五日猜一个字)
- 重磅 | 2018年淘宝村、淘宝镇名单正式公布!
- oracle exp导出工具,Oracle EXP/IMP 导出导入工具的使用
- BIO和NIO消耗的cpu和内存比较
- oracle转借权限,Oracle Universal Connection Pool(UCP) for JDBC 详解
- Simpsons’ Hidden Talents——kmp入门