版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、/* 说明,该程序是模拟IIC的通信思想,但也不全是,首先本人设计的不是从机与主机的通信,而是两单片机是平等的,单片机A可以向B或其他任何单片机发送数据(通过各个单片机所设置的地址来加以区分),同时单片机A可以也向B或其他任何单片机读取数据。反之单片机B或其他单片机也可以向A发送数据或读取A的数据,所以各个单片机的代码基本上是一样的,只需根据具体不同的需要调用就行。 由于本人初学单片机,代码写的并不是很好。望各位多多指教!*/单片机A 的代码#include<reg52.h>#define uchar unsigned char#define uint unsigned int#d
2、efine LOC_address 0x48sbit sda=P10;sbit scl=P11;sbit STROBE = P12;bit R_W;bit START_flag=0;uchar DEV_address;void delay() uint i; for(i=0;i<=100;i+);void init() sda=1; scl=1; STROBE=1; void start() /启动I2C总线 sda = 1; delay(); scl = 1; delay(); sda = 0; delay(); /此处scl不能拉低,否则两单片机通信时时序无法保持一致 /*void
3、start_scan() bit PreState;bit NowState; char NN = 10;PreState = sda;/记录当前SDA状态,用作比较while(scl = 1 && NN-)NowState = sda;if(PreState = 1 && NowState = 0)/如果为下降沿则为开始信号 START_flag = 1; */void Send_Date(uchar j) unsigned char i;bit temp; scl = 1;while(STROBE);if(STROBE=0) delay(); delay()
4、;delay(); for (i = 0 ;i < 8 ;i+) if(j<<i)&0x80)temp=1; else temp=0;sda = temp; 、delay(); scl = 0; delay(); scl = 1; delay(); scl = 0;sda = 1; /释放数据线 delay();STROBE=1; STROBE=1;uchar Receive_Date() uchar i,j,k=0xff; scl = 1; STROBE=0; delay(); if(!scl)&&(sda) return k; if(STROBE=
5、0) while(scl); for(i=0;i<8;i+) while(!scl);if(sda=1) j=1; else j=0; k=(k<<1)|j; delay(); delay();while(scl); P2=k; return k; return k;/*void ChackRdd() uchar i,j,k=0xff; scl = 1; STROBE=0; delay(); if(!STROBE) while(scl); for(i=0;i<8;i+) while(!scl);if(sda=1) j=1; else j=0; k=(k<<1
6、)|j; delay(); delay();while(scl); P0=k; R_W=k&0x01; DEV_address=(k&0xfe); STROBE=1; STROBE=1;void B_work()if(STROBE) ChackRdd(); if(DEV_address=LOC_address) if(R_W) STROBE=(STROBE); Send_Date(0x55); else if(!R_W) STROBE=(STROBE); Receive_Date(); */void main() init(); while(1)/以下为测试代码。 while(
7、STROBE) while(STROBE) start(); while(!STROBE);/*while(STROBE) Send_Date(0xaa);/发送地址和写指令 while(!STROBE) Send_Date(0x99); /发送数据 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90*/while(STROBE) Send_Date(0xab); /发送地址和读指令 while(!STROBE) STROBE=1; Receive_Date(); /单片机B的代码#include<reg52.h>#define uc
8、har unsigned char#define uint unsigned int#define LOC_address 0xaasbit sda=P10;sbit scl=P11;sbit STROBE = P12;bit R_W;bit START_flag=0;uchar DEV_address;void delay() uint i; for(i=0;i<=100;i+);/*void start() /启动I2C总线 sda = 1; delay(); scl = 1; delay(); sda = 0; delay(); */void start_scan() bit Pr
9、eState;bit NowState; char NN = 10;PreState = sda;/记录当前SDA状态,用作比较while(scl = 1 && NN-)NowState = sda;if(PreState = 1 && NowState = 0)/如果为下降沿则为开始信号 START_flag = 1;void Send_Date(uchar j) unsigned char i;bit temp; scl = 1;while(STROBE);if(STROBE=0) delay(); delay();delay(); for (i = 0 ;
10、i < 8 ;i+) if(j<<i)&0x80)temp=1; else temp=0;sda = temp; delay(); scl = 0; delay(); scl = 1; delay(); scl = 0;sda = 1; /释放数据线 delay();STROBE=1; STROBE=1;uchar Receive_Date() uchar i,j,k=0xff; scl = 1; STROBE=0; delay(); if(!scl)&&(sda) return k; if(STROBE=0) while(scl); for(i=0;
11、i<8;i+) while(!scl);if(sda=1) j=1; else j=0; k=(k<<1)|j; delay(); delay();while(scl); P2=k; return k; return k;void ChackRdd() uchar i,j,k=0xff; scl = 1; STROBE=0;/置低信号告诉单片机A、单片机B已做好准备接收 delay(); if(!STROBE) while(scl);/等待A响应 for(i=0;i<8;i+) while(!scl);if(sda=1) j=1; else j=0; k=(k<<1)|j; delay(); delay();while(scl); P0=k; R_W=k&0x01; DEV_address=(k&0xfe); STROBE=1; STROBE=1;void B_work() if(STROBE) start_scan(); if(START_flag) START_flag=0; STROBE=0; delay(); STROBE=1; ChackRdd(); if(DEV_address=LOC_
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年公务员《行政职业能力测验》专项训练试题
- 2026年事业单位招聘计算机基础知识专项训练(附答案)
- 2026年社区工作者实务案例分析全真试卷专项训练
- 2026年医疗卫生E类职测检验岗位单套全真试卷临床检验学专项训练
- 2026年中级经济师考试市场营销专项模拟试题及答案
- 肉鸡养殖知识考试题目及答案
- 标牌 模板及填写说明
- 彩钢板密封胶的选择与施工
- 《多彩文创》教学设计-2026-2027学年沪书画版(五四学制)(新教材)初中美术八年级上册
- 图书编目技能试题及答案
- 2026年出租车公司三级安全教育培训考核试题
- 酒店前台礼貌礼仪培训
- 中国银行培训员工制度
- 2026年机械工程师校招专业面试题库含答案
- 心内科实习生入科宣教
- 血常规报告临床解读指南
- 2025届天域全国名校协作体浙江省10月联考高三英语答案
- 生物跨学科教学设计课件
- 小学生基础常识问答题及答案
- 孤独症上岗证考试试题集合及答案
- 项目管理新员工培训
评论
0/150
提交评论